Credits
Credits your product draws down by agentKey, priced from a model bundle. Nothing is deleted — archive instead.
Lists your credits. Pass active=true for active ones only.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Query Parameters
true returns only active credits.
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/credits?active=true"{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "credits": [ { "id": "cr_8f2k1", "name": "Deep Research", "agentKey": "deep_research", "description": "string", "tokensPerCredit": 100000, "basePrice": 0.65025, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "modelName": "Claude Sonnet", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ], "marginPercent": 20, "pricePerCredit": 0.7803, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ] }}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Creates a credit. Its price is worked out from modelBundle.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
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
curl -X POST "https://example.com/credits" \ -H "Content-Type: application/json" \ -d '{ "name": "Deep Research", "agentKey": "deep_research", "description": "One research query", "marginPercent": 20, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ] }'{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "created": true, "credit": { "id": "cr_8f2k1", "name": "Deep Research", "agentKey": "deep_research", "description": "string", "tokensPerCredit": 100000, "basePrice": 0.65025, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "modelName": "Claude Sonnet", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ], "marginPercent": 20, "pricePerCredit": 0.7803, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } }}{ "statusCode": 400, "statusDetail": { "status": "ERROR", "message": "Request body must be valid JSON." }, "result": {}}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 409, "statusDetail": { "status": "ERROR", "message": "Customer \"cus_abc123\" is archived." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Updates only the fields you send. Send modelBundle to re-price.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Path Parameters
Credit id.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Any create fields.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/credits/cr_8f2k1" \ -H "Content-Type: application/json" \ -d '{ "marginPercent": 50 }'{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "updated": true, "credit": { "id": "cr_8f2k1", "name": "Deep Research", "agentKey": "deep_research", "description": "string", "tokensPerCredit": 100000, "basePrice": 0.65025, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "modelName": "Claude Sonnet", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ], "marginPercent": 20, "pricePerCredit": 0.7803, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } }}{ "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": 409, "statusDetail": { "status": "ERROR", "message": "Customer \"cus_abc123\" is archived." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Gets one credit.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Path Parameters
Credit id.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/credits/cr_8f2k1"{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "credit": { "id": "cr_8f2k1", "name": "Deep Research", "agentKey": "deep_research", "description": "string", "tokensPerCredit": 100000, "basePrice": 0.65025, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "modelName": "Claude Sonnet", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ], "marginPercent": 20, "pricePerCredit": 0.7803, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } }}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 404, "statusDetail": { "status": "ERROR", "message": "No customer with id \"cus_abc123\"." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Archives a credit. Nothing is deleted.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Path Parameters
Credit id.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/credits/cr_8f2k1/archive"{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "archived": true, "credit": { "id": "cr_8f2k1", "name": "Deep Research", "agentKey": "deep_research", "description": "string", "tokensPerCredit": 100000, "basePrice": 0.65025, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "modelName": "Claude Sonnet", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ], "marginPercent": 20, "pricePerCredit": 0.7803, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } }}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 404, "statusDetail": { "status": "ERROR", "message": "No customer with id \"cus_abc123\"." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Restores an archived credit.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Path Parameters
Credit id.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/credits/cr_8f2k1/unarchive"{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "unarchived": true, "credit": { "id": "cr_8f2k1", "name": "Deep Research", "agentKey": "deep_research", "description": "string", "tokensPerCredit": 100000, "basePrice": 0.65025, "modelBundle": [ { "modelId": "claude-sonnet-4-5", "modelName": "Claude Sonnet", "averageTokensPerLLMCall": 100000, "input": 60, "output": 30, "cache": 5, "cacheWrite": 5 } ], "marginPercent": 20, "pricePerCredit": 0.7803, "isActive": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } }}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 404, "statusDetail": { "status": "ERROR", "message": "No customer with id \"cus_abc123\"." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}