On-demand products assigned to the member. Subscriptions do not appear here. The unassigned org pool is GET /api/v1/credits/. Buy into that pool with POST /api/v1/credits/. Assigning credits draws from available and does not charge.
GET /api/v1/members/{member_id}/credits/
GET /api/v1/members/70001/credits/
{
"member_id": 70001,
"results": [
{
"product_id": 201,
"product_name": "Core Scan",
"description": "On-demand scan of the Core catalog.",
"charge_type": "on_demand",
"billing_frequency": "one_time",
"price_per_seat": 299,
"credits_remaining": 1
},
{
"product_id": 301,
"product_name": "Trial Scan",
"description": "On-demand scan of the trial catalog.",
"charge_type": "on_demand",
"billing_frequency": "one_time",
"price_per_seat": 499,
"credits_remaining": 0
}
]
}
GET /api/v1/members/{member_id}/credits/{product_id}/
GET /api/v1/members/70001/credits/301/
{
"member_id": 70001,
"product_id": 301,
"product_name": "Trial Scan",
"description": "On-demand scan of the trial catalog.",
"charge_type": "on_demand",
"billing_frequency": "one_time",
"price_per_seat": 499,
"credits_remaining": 0,
"spent": [
{
"consumed_at": "2026-09-02T15:00:00.000000+00:00"
}
]
}
spent is newest first. One entry is one credit used.
POST /api/v1/members/{member_id}/credits/{product_id}/add/
Assigns credits to an on-demand product already on the member. The credits are drawn from the org pool. This call does not charge. When available for that product is 0, the call returns 402.
POST /api/v1/members/70001/credits/201/add/
{
"quantity": 1,
"idempotency_key": "credits-70001-201-a1"
}
| Field | Required | Description |
|---|---|---|
quantity |
No | Credits to assign from the org pool. Default 1 |
idempotency_key |
No | Up to 64 characters. Repeating a request with the same key returns the original assignment and does not draw from the pool again |
200 OK){
"member_id": 70001,
"product_id": 201,
"credits_remaining": 2
}
| Status | Condition |
|---|---|
400 |
product_id is not an on-demand product on the member; quantity is not a positive integer; idempotency_key reused with a different body (error: idempotency_conflict) |
401 |
Missing or invalid API key |
402 |
Org pool available for that product is less than quantity, including when it is 0 (error: insufficient_credits; includes product_id and available). Buy with POST /api/v1/credits/ and retry |
403 |
Partner inactive |
404 |
Member or product not found |