Developer API
Build on the agent economy.
Seven HTTP 402-gated services open to any agent that can sign an EIP-3009 authorisation. No Splitsy account. No API key. No gas. Circle Gateway verifies and batches every payment on Arc.
What you can build
Seven APIs. Endless possibilities.
No account. No API key. No gas. Pay per call in USDC and unlock bill automation, reputation data, group settlement math, and more — open to any agent or app, right now.
Settle bills hands-free
Connect a Circle Agent Wallet and your bills pay themselves. The agent checks what you owe, reviews for fraud, and settles in USDC while you sleep.
Check anyone's reputation
Before splitting or lending, look up any wallet or social handle's Splitsy score — one number that shows how reliably they pay.
Minimize group transfers
Going on a trip with friends? The netting engine calculates the fewest USDC transfers to square everyone — no tangled back-and-forth chains.
Automate payment reminders
Build a creditor bot using the same dunning logic Splitsy runs daily — it tells you when to nudge, when to escalate, and when to auto-collect.
Verify a bill before paying
An LLM auditor checks if a bill's details are plausible given the merchant, share size, and creator's track record — approve or refuse in one call.
Scan any receipt instantly
Send a receipt photo and get back structured data — merchant, currency, total, line items — ready to create and split a bill in seconds.
Split bills in any currency
Paid in euros abroad? Convert any foreign amount to USDC automatically so everyone's share is exact, no matter the currency.
Act four · open API
Any agent. One signature.
Every endpoint answers HTTP 402 with a Circle Gateway challenge. Sign one offchain EIP-3009 authorisation — no account, no API key, no gas — and the same four lines get you into any of the seven services below.
- 01ProbeGET / POST without a header → 402
- 02ParseBase64-decode PAYMENT-REQUIRED
- 03SignEIP-3009 auth via gateway.authorize()
- 04Retrypayment-signature header → 200
/api/agents/queue
Returns every bill a debtor's on-chain mandate could pay right now — with creator reputation scores and hash-verification status.
- Query
- ?debtor=0x… (wallet address)
- Response
- mandate · bills[] · mandateAddress
- Circle Agent Wallet autopay
- debtor-side bill management
| 1 | // 1. Probe — no payment header → 402 challenge |
| 2 | const probe = await fetch(url); |
| 3 | // ← PAYMENT-REQUIRED: base64(challenge) |
| 4 | |
| 5 | // 2. Parse the Circle Gateway payment terms |
| 6 | const { accepts } = JSON.parse(atob( |
| 7 | probe.headers.get("PAYMENT-REQUIRED"))); |
| 8 | const { amount, payTo, maxTimeoutSeconds } = accepts[0]; |
| 9 | |
| 10 | // 3. Sign a gasless EIP-3009 authorisation (no gas) |
| 11 | const sig = await gateway.authorize({ |
| 12 | asset: "0x3600000000000000000000000000000000000000", |
| 13 | amount, payTo, |
| 14 | validBefore: Math.floor(Date.now() / 1000) + maxTimeoutSeconds, |
| 15 | }); |
| 16 | |
| 17 | // 4. Retry — Gateway batches and settles on Arc |
| 18 | const res = await fetch(url, { |
| 19 | headers: { "payment-signature": btoa(JSON.stringify(sig)) }, |
| 20 | }); |
| 21 | |
| 22 | // Response |
| 23 | const { mandate, bills } = await res.json(); |
| 24 | // bills[].amountUsdc, bills[].verified, bills[].creatorScore |