IMBA Agent API: prepaid catalog for autonomous agents
The Agent API is an HTTP interface for programs that pay on their own — no human in the IMBA Wallet app. Use it so an agent or bot can issue virtual cards and buy eSIM or gift cards with prepaid USDT.
Register an Ed25519 key, fund USDT on TRC-20, then buy the live catalog (virtual cards, eSIM, gift cards). New agents start at tier 0: catalog spend only — no withdraw, no C2C, no convert. This is not the company B2B API and not a human Wallet login.
Facts
| Who | Autonomous agents. Identity-only register. No KYB WaaS, no child wallets. |
|---|---|
| Auth | POST /auth/v1/agent/register then assertion → /auth/v1/agent/token. Access JWT typ=agent, client_id, EdDSA. JWKS: GET /auth/v1/partner/jwks (same keys as Partner). |
| Money | Ledger 2401 USDT of that client_id. Register does not credit 2401. |
| Deposit | USDT TRC-20 only. Call POST /api/deposit_address before every send. Unfunded hold 24 hours then the pool slot may move. After first confirmed credit the address is sticky. Fields: sticky, unfunded_release_at, confirmation_blocks. |
| Buy | Retail URLs: /api/pin/create_card, topup_card, /api/purchase, /api/esim/*. ext_id required. payment_source=stars → 403. |
| Tiers | Tier 0 (default): deposit + catalog. Convert is closed — AML: otherwise a prepaid channel would be used to launder money through the service. Tier 1+: operator-granted after real catalog use. Convert at tier 1 is a separate request, not automatic with the number. Withdraw and C2C stay closed. The agent cannot self-promote. Full policy: agent tiers. |
| KYT | Paid address screen: /api/kyt_quote, kyt_check. Debits 2401. You get a report; deposit credits on network confirmations. IMBA turns the channel on. |
| Forbidden | Withdraw, C2C (as payer or payee), RUB bank/SBP rails, Stars, EVM, BTC, /api/partner/*. Convert is closed at tier 0; at tier 1 it is a separate request (fx_quote/fx_execute). |
| HMAC | IMBA generates it (CSPRNG). Shown once at register/PATCH. Rotate under agent JWT. Header X-IMBA-Signature like Partner. Repeat register does not return the secret. |
| OTP | Never SMS, never Telegram. Optional email on register or PATCH /auth/v1/agent/webhook — IMBA emails the OTP. Always poll notifications (payload keeps code). If you set callback_url, HMAC webhook field is otp. |
| 503 unavailable | Caution medium: new register only. under_attack or Agent API disabled: whole agent channel including /x402/*. |
| x402 | /x402/* returns HTTP 402. Cannot spend USDC until the credit-to-TRON job is live. Never 402 on /api/pin. |
| Machine docs | api-docs Agent API · OpenAPI · well-known · llms-agent.txt · llms.txt |
Where it is useful
A prepaid agent pays for catalog goods — not for turning IMBA into an anonymous mixer.
create_card / top-up from USDT.Deposit rules (must)
- Call
deposit_addressagain — do not reuse an address from logs, chat, or a previous run. - Compare the address string byte-for-byte with the transaction destination.
- Send only USDT TRC-20. Any other network or token is a loss.
- If
unfunded_release_athas passed, do not send to the old string. - Treat funds as credited only after
confirmation_blocksfrom that response.
Read also
FAQ
Can I cache the TRON address?
No. Until the first confirmed credit the slot is released after 24 hours and may be given to someone else.
Can I withdraw or C2C?
No. Withdraw and C2C are closed. The live default is catalog spend from 2401 USDT.
Tier 0 and tier 1: what about convert?
Every new agent starts at tier 0: deposit USDT TRC-20 and buy cards, eSIM, or gifts. Convert is closed at tier 0 — AML: otherwise a prepaid channel would be used to launder money through the service. Tier 1 is granted by an operator after real catalog purchases, to refuse agents that only want to cycle crypto. Convert at tier 1 is a separate request: raising the number does not turn convert on. Withdraw and C2C stay closed. The agent cannot raise its own tier.
How do I get the 3-D Secure OTP?
Not by SMS and not by Telegram. Set email on register or PATCH webhook — IMBA mails the code. Also poll notifications (the payload keeps code). If you registered callback_url, the HMAC webhook field is otp.