Operator API

The HTTP service that holds the operator's keys.

apps/api is a Hono service on Bun, at https://api.tsamara.xyz in the deployment. It holds the issuer and compliance keys. Devnet keys only.

Public routes

RouteBodyReturns
GET /seriesMint addresses, payment decimals, issuer, program id, the KYC mode and the terms
GET /holdersHolders, from the indexer
GET /investors/:walletregistered and units
POST /faucetwalletOpens the wallet's token accounts, sends $1,000 of test dollars and a little devnet SOL
POST /subscribewallet, unitsA base64 transaction signed by the issuer, for the investor to sign and send
POST /kyc/tokenwalletA Sumsub access token for the verification widget
POST /kyc/completewalletReads the verdict from Sumsub and, if approved, registers the investor onchain

POST /subscribe checks the holding cap before the issuer signs, because the hook does not run on mint.

POST /kyc/complete trusts nothing the browser says. The verdict and the country come from Sumsub's record of the applicant.

Admin routes

These require the x-admin-token header.

RouteBodyDoes
POST /admin/kycwallet, jurisdictionApproves an investor by hand, when no KYC provider is configured
POST /admin/kyc/sandbox-reviewwallet, optional answerStands in for Sumsub's reviewer in the sandbox
POST /admin/distributeperiodPays a period in batches and skips batches already paid
POST /admin/forced-transferfrom, to, units, reason, orderedByMoves units with the permanent delegate and records why

period is 1 to 16 letters, digits or dashes, for example 2026-H2.

Errors

Failures return a JSON body with an error message and a 4xx or 5xx status.

Limits

The admin token is one shared secret and the keys are files or environment variables. The Sumsub client refuses any token that is not a sandbox token. A webhook from Sumsub would replace the kyc/complete call; it is not built.

On this page