AGENTS CAN FINISH THE JOB

Pay. Confirm. Get to work.

An agent with an authorized wallet can activate domain hosting or fund sending entirely through the API. Native USDC is accepted on Polygon, Base, Ethereum and Solana.

Two purchases. Separate entitlements.

kind: mail_credits buys sending credits. Supply amountCents: 100, 500, 1000 or 2500. Each $1 buys 10,000 credits; one credit pays for one accepted recipient. Daily sending limits still apply.

kind: domain_hosting buys prepaid custom-domain entitlement for an agent owner. Each $1 period is 30 days; supply periods from 1 to 12, default 1. It includes one custom domain, 10 aliases and up to 10 separate mailboxes. DNS ownership and verification requirements still apply. It adds no sending credits and does not purchase a domain name from a registrar.

Renewals add time to existing prepaid hosting. There is no automatic renewal or wallet debit. When entitlement expires, new address creation is blocked; existing addresses and mail are retained. Mail-only balances and legacy Key* balances remain separate and cannot be used to buy this hosting entitlement.

Activate domain hosting without a checkout page.

Create a $1, 30-day hosting invoice
curl --fail-with-body https://keykeeper.world/api/v1/agent/payment \
  -H "Authorization: Bearer $KEYKEEPER_API_KEY" \
  -H 'Idempotency-Key: YOUR_UNIQUE_PURCHASE_ID' \
  -H 'Content-Type: application/json' \
  -d '{"kind":"domain_hosting","method":"base","periods":1}'
  1. Save the invoice.Keep its orderId, chain, tokenContract, depositAddress, amountBaseUnits and statusUrl. All accepted USDC uses six decimals. Creating an invoice does not transfer money.
  2. Pay from an authorized wallet.Transfer the exact native token and amount on the returned network. Your wallet pays gas separately. For Solana, depositAddress is a wallet owner address: use an SPL USDC transfer, creating its token account if necessary. Do not send SOL, ETH, bridged USDC or a different token.
  3. Check confirmation.GET the returned statusUrl using the same account’s Bearer key. Poll with increasing delays and respect 429 responses. A paid response means hosting or credits were granted automatically; hostingExpiresAt identifies the expiry granted by that invoice. No human needs to approve a web checkout.
  4. Continue domain setup.GET /api/user/domains now reports canCreateAddresses: true. Verify ownership, create addresses, then switch MX. Use a separate domain-scoped key for setup and a mail-scoped key for the application.

Use a full agent account key for purchases, retained by the authorized operator or billing agent. Delegated mail and domain keys cannot buy anything. MCP supports the same flow with create_payment and check_payment; supply idempotencyKey in the tool arguments.

Native USDC, on the right network.

Use the token and network returned by the invoice. The supported native deployments are listed by Circle.

Polygon PoS · method: polygon

Chain ID: 137

USDC contract
0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359

Confirmation uses the balance 128 blocks behind the Polygon head.

Base · method: base

Chain ID: 8453

USDC contract
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Confirmation uses finalized chain state. A wallet’s initial success notification can arrive earlier.

Ethereum · method: ethereum

Chain ID: 1

USDC contract
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

Confirmation uses finalized chain state. A wallet’s initial success notification can arrive earlier.

Solana · method: solana

Solana mainnet

USDC mint
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Confirmation uses finalized chain state. A wallet’s initial success notification can arrive earlier.

Confirmation time depends on the network and provider. Ethereum and Base wait for finalized blocks; Base’s quick execution is not the same as finality. Unavailable RPC results leave the invoice pending and grant no entitlement.

Retries should not create another purchase.

Retry invoice creation with the same Idempotency-Key and identical kind, network and price. A conflicting retry returns 409. Save an outstanding invoice before changing options or opening another. Repeated status checks grant an invoice only once; partial payments remain pending until the confirmed amount reaches the invoice amount.

Every invoice has its own recoverable deposit address. Pay it once. Overpayments, repeated payments, wrong-network transfers and unsupported tokens do not automatically buy additional service and require operator reconciliation. Do not reuse old shared payment addresses. Deposits are held in operator-controlled wallets; this API does not withdraw or refund funds.

Card remains available via method: card, which returns a Stripe checkout URL. A domain_hosting card purchase also prepays 30-day periods without auto-renewal; pay only the chosen invoice or checkout. Human Personal and optional agent domain subscriptions remain $1 per calendar month through card billing. Prepaid USDC periods are exactly 30 days. An existing card domain subscription must be managed before starting prepaid hosting, to avoid overlapping purchases.