TaifoonTAIFOON
Buy and use a key

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:

shell
curl -X POST https://coord.taifoon.dev/v1/register

The answer carries api_key once. Send it on every call as X-API-Key.

2. Pick a chain and read the quote

ChainchainIdYou pay in
Base8453USDC
Arbitrum One42161USDC
Arc5042USDC
Monad143USDC
Robinhood Chain4663USDG

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:

shell
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:

shell
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}'
AnswerMeans
200 with credited and balanceThe key is credited.
200 with already: trueThat transaction was credited before. Nothing was added twice.
404 no_receiptThe transfer is not deep enough on its chain yet. Send the same claim again in a few seconds.
402 not_paidThe transfer is not an exact whole number of dollars from the sender to the payee.
403 signatureThe answer carries the message and the wallet it expects.
409 already_creditedAnother 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.

shell
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

shell
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:

shell
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.