Guide · Buy
Buy and use a key
One key holds one balance. The balance pays every metered call: RPC, proofs, decoded reads, writes, grades and their records. You pay it in the dollar token of the chain you are on.
1. Take a key
A key costs nothing and keeps a free allowance every day. A person takes one by signing in on the cockpit. Code asks for one:
curl -X POST https://coord.taifoon.dev/v1/registerThe answer carries api_key once. Send it on every call as X-API-Key.
2. Pick a chain and read the quote
| Chain | chainId | You pay in |
|---|---|---|
| Base | 8453 | USDC |
| Arbitrum One | 42161 | USDC |
| Arc | 5042 | USDC |
| Monad | 143 | USDC |
| Robinhood Chain | 4663 | USDG |
A balance is a whole number of dollars from 1 to 500. Ask for the quote with your key, so the message to sign names it:
curl "https://coord.taifoon.dev/v1/access/quote?usdc=5&chainId=42161" \
-H "X-API-Key: $TAIFOON_API_KEY"The answer holds pay.call (the unsigned token transfer to send), pay.amount, pay.payee, and sign.message (the exact text your wallet signs). Nothing is signed or sent by the layer.
3. Pay and claim
Send pay.call from one wallet. Sign sign.message with the same wallet, the transaction hash filled in. Then claim the credit:
curl -X POST https://coord.taifoon.dev/v1/access/topup \
-H "X-API-Key: $TAIFOON_API_KEY" -H "content-type: application/json" \
-d '{"tx":"0x…","signature":"0x…","chainId":42161}'| Answer | Means |
|---|---|
200 with credited and balance | The key is credited. |
200 with already: true | That transaction was credited before. Nothing was added twice. |
404 no_receipt | The transfer is not deep enough on its chain yet. Send the same claim again in a few seconds. |
402 not_paid | The transfer is not an exact whole number of dollars from the sender to the payee. |
403 signature | The answer carries the message and the wallet it expects. |
409 already_credited | Another key took that transaction, or it bought something else. |
A payment that was sent and never claimed can be claimed by its transaction for 7 days with POST /v1/access/claim. Without a signature, that call answers with the messages your wallet can sign for it.
4. Or take a monthly plan
A plan is 30 days of metered use at a better rate than a balance, with a higher rate limit. It is paid up front by one transfer. Nothing renews by itself: a renewal is one more payment, and it starts when the running period ends.
curl https://coord.taifoon.dev/v1/access/plan
curl "https://coord.taifoon.dev/v1/access/quote?plan=builder-99&chainId=8453" \
-H "X-API-Key: $TAIFOON_API_KEY"Pay the quoted amount exactly, sign the quoted message, then claim it with POST /v1/access/plan and the body { plan, tx, signature, chainId }. The plan's allowance is spent before the balance, and what is left of it ends with the period. A balance does not end.
5. See what the key holds
curl https://coord.taifoon.dev/v1/access/key -H "X-API-Key: $TAIFOON_API_KEY"
curl https://coord.taifoon.dev/v1/access/receipts -H "X-API-Key: $TAIFOON_API_KEY"The first answer holds the balance, the plan with its days left and what is left of its allowance, the key's permissions and the rate it is held to. The second lists every payment with its chain and transaction.
Limit what a key may do
Each key can be limited to products, chains, origins and addresses, given a spend cap a day and a month, a rate cap and an end date. A person sets these in the cockpit. Code sends them:
curl -X POST https://coord.taifoon.dev/v1/tenant/keys \
-H "X-API-Key: $TAIFOON_API_KEY" -H "content-type: application/json" \
-d '{"action":"create","label":"indexer","scopes":["rpc","proofs"],"cap_day_usdc":2,"per_minute":120,"chains":[8453]}'Rotating a key ({ "action": "roll", "env": "live", "grace_hours": 24 }) gives a new key that holds the same balance and plan. The old key stops at once, or keeps working for the hours you name, up to 168.
Paying one call without a key
The priced walls answer 402 with x402 terms. x402 payments settle on Base. On the other four chains the same call is paid from a key's balance: take a key, add a balance on that chain, and send the call with the key.
