Updates how much a customer is granted every cycle. Any increase or decrease applies to their balance immediately.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Path Parameters
Customer id.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/customers/cus_abc123/recurring-grant" \ -H "Content-Type: application/json" \ -d '{ "kind": "wallet", "quantity": 10000 }'{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "Recurring grant updated." }, "result": { "updated": true, "kind": "wallet", "quantity": 10000, "balanceUsd": 125000 }}{ "statusCode": 400, "statusDetail": { "status": "ERROR", "message": "Request body must be valid JSON." }, "result": {}}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 404, "statusDetail": { "status": "ERROR", "message": "No customer with id \"cus_abc123\"." }, "result": {}}{ "statusCode": 422, "statusDetail": { "status": "ERROR", "message": "No credit with agent key \"summarize\" exists in this workspace." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}The same call, addressed by the customer's externalId. Same body and response.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Path Parameters
Your own id for the customer (its externalId): 1–32 letters, numbers or "-", matched exactly (case-sensitive).
^[A-Za-z0-9-]{1,32}$1 <= length <= 32Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/customers/ext/acme-42/recurring-grant" \ -H "Content-Type: application/json" \ -d '{ "kind": "wallet", "quantity": 10000 }'{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "Recurring grant updated." }, "result": { "updated": true, "kind": "wallet", "quantity": 10000, "balanceUsd": 125000 }}{ "statusCode": 400, "statusDetail": { "status": "ERROR", "message": "Request body must be valid JSON." }, "result": {}}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 404, "statusDetail": { "status": "ERROR", "message": "No customer with id \"cus_abc123\"." }, "result": {}}{ "statusCode": 422, "statusDetail": { "status": "ERROR", "message": "No credit with agent key \"summarize\" exists in this workspace." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Get a customer's current plan GET
Previous Page
List Customer Usage Log GET
One customer's usage history — credit, outcome, unit, wallet and completed composite occurrences — merged into one feed sorted by time. Cursor-paginated: pass `limit`/`cursor` and read `nextCursor` back; `null` means the last page. Narrow by date with `from`/`to`.