Issue rewards from your own systems
Push metrics and issue spot bonuses over a small REST API. Every request is idempotent, and every issuance shows up in the same run log your team already uses.
API requests
Last hour
- POST/v1/issuances/spot-bonus20284 ms
- POST/v1/metrics20241 ms
- POST/v1/metrics20238 ms
- GET/v1/openapi.json20022 ms
- GET/v1/health2009 ms
const acceptance = await fetch('https://api.teambrite.com/v1/issuances/spot-bonus', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
employeeId: '051f210b-5a1a-4cb7-b7d4-c82fb291d29f',
amountMinor: 5000,
currency: 'cad',
reason: 'Outstanding customer support',
categoryId: '8ee9b14d-e26d-44d2-a28b-b7a0cb893e63',
notificationChannels: ['email', 'in_app'],
idempotencyKey: 'support-award-2026-08-avery',
}),
}).then(response => response.json())
console.log(acceptance.runId, acceptance.itemId, acceptance.status)Idempotent by default
Every issuance carries an idempotency key, so retries from your side never double-pay an employee.
Asynchronous processing
Requests are accepted immediately and processed by the same issuance engine that runs scheduled policies.
Same audit trail as the dashboard
API-driven issuances appear in run logs alongside everything else, with the API key recorded as the actor.
OpenAPI spec and TypeScript types
The contract is published as OpenAPI. Generate a client in your language, or use our TypeScript SDK when it ships.
Endpoints
The v1 surface is deliberately small. Requests and responses are JSON, and the full contract is published as an OpenAPI document.
v1
JSON over HTTPS
- GET/v1
API version and published resources
- GET/v1/health
API and database health
- GET/v1/openapi.json
Current OpenAPI specification
- POST/v1/metrics
Push performance metrics for an employee
- POST/v1/issuances/spot-bonus
Accept an idempotent spot bonus for asynchronous processing
Get told when a reward goes out
Subscribe an HTTPS endpoint and receive a signed event each time an issuance changes state. Failed deliveries are retried.
reward.issuedAn issuance was completedreward.failedAn issuance could not be completedmetric.recordedA pushed metric was accepted
{
"id": "evt_93fd2a1c",
"type": "reward.issued",
"createdAt": "2026-08-14T15:02:11Z",
"data": {
"runId": "run_6b1e0f",
"itemId": "itm_3c9a77",
"employeeId": "051f210b-5a1a-4cb7-b7d4-c82fb291d29f",
"amountMinor": 5000,
"currency": "cad"
}
}Want early access to the API?
Join the waitlist and we'll reach out when keys are available for your account.