Skip to main content
The Credits API gives you programmatic control over Examino’s credit system. Credits are consumed each time a copy is processed, the cost depends on page count, not the number of questions. You can use this API to monitor balances across your team hierarchy and redistribute credits between parent and child teams without touching the dashboard.
Credit pricing model: Cost is volumetric, 1 credit per started 20-page block per copy. A 12-page copy costs 1 credit; a 45-page copy (3 × 20-page blocks started) costs 3 credits.

Get Credit Balance

string
required
Bearer token. Format: Bearer $EXAMINO_API_KEY
Required scope: credits:read
Returns the available credit balance for a specific team. Available credits include any credits held directly by the team and credits inherited from its ancestor teams.

Query Parameters

string
required
UUID of the team to query. Must be within your API key’s scope (i.e., your root team or one of its descendants).

Request

Response

Response Fields

string
UUID of the team that was queried. Mirrors the teamId you passed as a query parameter.
integer
Total credits available to this team, including credits inherited from all ancestor teams up the hierarchy. This is the effective spendable balance, not the balance held at this node alone.

Transfer Credits

string
required
Bearer token. Format: Bearer $EXAMINO_API_KEY
string
required
Must be application/json.
Required scope: credits:write
Moves a specified number of credits from one team to another. Transfers are atomic, the debit and credit happen in a single operation, so no partial transfer can leave your hierarchy in an inconsistent state.

Request Parameters

string
required
UUID of the team to debit credits from. Must be within your API key’s scope.
string
required
UUID of the team to credit. Must be within your API key’s scope.
integer
required
Number of credits to transfer. Must be a strictly positive integer (minimum: 1).

Request

Response

Response Fields

string
UUID of the team that was debited.
string
UUID of the team that was credited.
integer
Number of credits that were transferred, as specified in the request.
integer
Updated available credit balance of the source team after the transfer completes.
integer
Updated available credit balance of the destination team after the transfer completes.

Transfer Rules

You can only transfer credits between a team and one of its direct or indirect descendants, in either direction (parent → child or child → parent). Transfers between two sibling teams, or between teams in unrelated branches of the hierarchy, are not permitted.Violating this rule returns 422 Unprocessable Entity with reason notRelated.
The account that owns the API key must hold the admin role on both the source and destination teams. If the key owner has been removed from either team, or if the account no longer exists, the request is rejected.This returns 403 Forbidden.
The fromTeamId team must hold enough credits to cover the full amount. If not, the entire transfer is rejected, no credits are moved. There are no partial debits.This returns 422 Unprocessable Entity with reason insufficient.
availableCredits from GET /credits includes inherited ancestor credits, which cannot be debited from a child team directly. To check the balance a team holds (and can transfer out), compare balances before and after a test or inspect your credit ledger in the dashboard.
To distribute a fresh credit purchase to several campus teams at once, make one POST /credits/transfers call per destination team. Each call is atomic, so a failure on one transfer won’t affect the others.