On-chain layer
Supply rules, balances, ownership, authority checks, transfer behavior, events, and immutable invariants.
Responsibility map
The contract or program defines token behavior. The API controls request identity, policy, execution, evidence, and delivery.
Supply rules, balances, ownership, authority checks, transfer behavior, events, and immutable invariants.
Authentication, asset configuration, idempotency, policy, signing workflow, submission, status, and reconciliation.
Customer entitlements, rewards, inventory, order state, user experience, support, and business reporting.
Operation lifecycle
Each stage should leave enough durable evidence to resume after a crash and enough context to explain the result later.
Authenticate the caller, require an idempotency key, normalize the payload, and bind it to an approved asset configuration.
Check tenant access, recipient rules, amount and batch limits, metadata state, and business uniqueness before external side effects.
Write the operation and idempotency mapping transactionally. A database uniqueness constraint resolves concurrent duplicates.
Use reviewed ABIs or program instructions and ask a restricted signer to verify the decoded transaction against policy.
Retain transaction identity, distinguish rebroadcast from reconstruction, and define the network evidence behind each status.
Compare expected supply, balance, ownership, metadata, and events; then publish signed webhooks and a durable final representation.
Asynchronous resource model
A 202 response identifies accepted work. The operation can advance independently through signing, submission, confirmation, and reconciliation.
HTTP/1.1 202 Accepted
Location: /v1/mints/mnt_01J8D4W7Q2
Content-Type: application/json
{
"id": "mnt_01J8D4W7Q2",
"status": "accepted",
"asset_id": "rewards-usd-v1",
"network": "solana-devnet",
"recipient": "7QhV...xP9",
"amount_base_units": "125000000",
"created_at": "2026-10-23T19:42:18Z",
"links": {
"self": "/v1/mints/mnt_01J8D4W7Q2"
}
}
Chain adapters
Resolves chain ID, contract, ABI, function selector, integer amount, nonce, gas policy, transaction replacements, receipt events, and reorganization monitoring.
ERC-20 details →Resolves cluster, mint, Token Program, destination token account, fee payer, recent blockhash, commitment, and token balance changes.
SPL details →Coordinates collection, external asset uniqueness, metadata publication, token ID, owner, contract events, token URI, and indexing status.
NFT details →Reliability contract
| Class | Example | Client action |
|---|---|---|
| Request error | invalid_recipient, amount_out_of_range | Correct the request; no operation is created. |
| Policy denial | asset_not_allowed, authority_denied | Change authorization or approved configuration; do not retry unchanged. |
| Transient infrastructure | rpc_unavailable, queue_overloaded | Retry using the same idempotency key or read the existing operation. |
| Chain execution failure | contract_reverted, blockhash_expired | Inspect operation evidence; server policy decides whether safe reconstruction is possible. |
| Ambiguous outcome | submission_unresolved | Do not remint. Wait for reconciliation or operator review. |
FAQ
Usually no. Create and return a durable operation, then expose status through polling and signed webhooks. A product may offer a synchronous convenience mode only when its timeout and confirmation meaning are explicit.
Critical supply invariants belong in the contract or program. The API and signer can enforce additional tenant, amount, recipient, and operational limits, but they should not replace on-chain guarantees.
Normalize intent and lifecycle at the top level, then return chain-specific evidence and capability fields in namespaced objects. Do not hide account models, token programs, gas, commitment, or finality differences.
Reconciliation compares the confirmed transaction with the expected state change, such as total supply and recipient balance for a fungible token or token ID and owner for an NFT.
Build from explicit contracts
Define assets, authorities, idempotency, confirmation, and reconciliation before connecting a production signer.