Kairos Signal · Customer manual

USDC top-ups with a verified wallet

Checking current availability. Do not send without a current quote.

Your API account and sending wallet must be linked by a signed challenge before you request a top-up quote. The quote supplies the receiving address, exact amount and expiry. Use that response as your payment instructions.

  1. Register an account. POST /v1/credits/register returns your API key. Keep it private. Use X-API-Key on the requests below.
  2. Request a challenge for your Base wallet.
    POST /v1/credits/crypto/challenge
    {"wallet":"<your EOA address>"}
    The response includes nonce, message and expires_at. Sign the exact returned message with your wallet's EIP-191 personal_sign capability. Do not send your private key or seed to Kairos.
  3. Submit the signature.
    POST /v1/credits/crypto/verify
    {"nonce":"<returned nonce>","signature":"0x<signature>"}
    The signature is bound to kairossignal.com, Base, your account, a one-time nonce and an expiry. It authorizes wallet attribution only, not a transfer. Continue only after status: verified.
  4. Request a quote.
    POST /v1/credits/topup
    {"method":"usdc","amount":"25","from_address":"<verified wallet>"}
    Wait for status: awaiting_transfer. Read deposit_address, token_contract, chain_id, amount_atomic and expires_at from that response. A rejected request is not a quote.
  5. Send exactly the quoted amount. Send native USDC on Base from the verified wallet to the quoted receiving address before expiry. One transfer per quote. Request a new quote for another payment.
  6. Check the result.
    GET /v1/credits/crypto/receipts
    GET /v1/credits/balance
    Both require your API key. A credited receipt includes the transaction hash, log index, atomic USDC amount and evidence hash. No submitted transaction hash can create a credit.

Supported payments

Base mainnet, chain ID 8453. Native USDC contract 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913. This is the token contract, not your deposit destination.

1 USDC buys 1 credit. Quotes accept 1 to 1,000,000 USDC, with at most six decimal places. Amounts are retained as integer token units in transfer receipts. Only externally owned accounts (EOAs) that can sign the challenge are supported. Exchange withdrawals and smart-contract wallets are unsupported.

Credit requires a successful transfer in a finalized Base block. Two blocks are insufficient. Finality and the scheduled deposit scan take time; no fixed credit arrival time is promised. If the watcher is not current, new quotes are unavailable.

Signatures establish wallet control for your Kairos account, not legal identity. A wallet cannot be reassigned to another account through this API. Previously credited balances remain unchanged. Legacy unsigned intents, transfers made before a quote, wrong amounts and expired quotes are held for attribution review; they are not automatically refunded or credited.

Machine-readable availability and protocol · Card payment options