Create a session
POST /api/consumer/session creates your account on the fly. It supports two entry paths, both returning a consumer_token cookie that lasts 30 days — consumers shouldn’t have to re-onboard constantly.
Path A — provision a new wallet. Call with an empty body and FlareHQ creates a brand-new Circle-managed wallet for you. You never handle a private key; custody lives with Circle.
GET /api/consumer/session on page load to detect an existing session, and DELETE /api/consumer/session to sign out. Every consumer endpoint below authenticates with the consumer_token cookie — keep the cookie jar (-b cookies.txt) across calls. See Consumer Session.
Check your balance
GET /api/consumer/balance reads your USDC holdings straight from the Arc Mainnet ERC-20 contract (0x3600000000000000000000000000000000000000, 6 decimals) — no cached or ledger-derived number, so the balance is always on-chain truth.
Review your activity ledger
GET /api/consumer/activity returns your 20 most recent payment records — both directions. Each entry tells you whether you sent or received, who the counterparty was, and how to inspect the transaction on-chain.
directionis"out"when you were the payer and"in"when you were the recipient.counterpartyis the business or wallet on the other side.explorerUrllinks to the settled transaction on the Arc explorer (https://explorer.arc.iofor Mainnet) when one exists.
Send and request payments
The same endpoint drives both directions.POST /api/payments/initialize accepts a direction of "send" or "request", and the semantics for the consumer are resolved server-side from your session — never from what a client claims.
Send
Whendirection is "send", you are the payer. Pass payoutAddress with the recipient’s 0x address — the schema validates it as a real address, and it’s taken from payoutAddress, never from the free-text merchant label. The checkout page is funded from your wallet.
Request
Whendirection is "request", you are asking to be paid. There is no payer yet, so no payoutAddress is given and the record is created with a pending@checkout placeholder. When someone settles it, the USDC routes to your own wallet. You get back a checkoutUrl to share with whoever owes you.
reference (arc_ref_...), a checkoutUrl, and session data:
Pay by chat with Flow
The consumer assistant turns plain-language messages into payments.POST /api/consumer/assistant is deliberately two-phase: it parses your intent first, then executes only after you confirm — a misheard amount or address with real money behind it is not an acceptable failure mode.
1
Parse — nothing moves
Send your message in any language. The assistant (a Groq-hosted model, The
llama-3.3-70b-versatile by default) classifies it into an action — send, request, save, balance, or unclear — and replies in the same language you wrote in. No money moves in this phase.action object is returned only when the request is ready to confirm. If an address is missing, the reply asks for one. Addresses are validated defensively: anything that isn’t a literal 0x-prefixed hex address is dropped.2
Execute — only on explicit confirmation
Send the exact parsed action back in the
confirmedAction field. This is the only phase that touches money.
Keep a human in the loop: the assistant only ever proposes, never claims a payment has moved until the execute phase reports a
txHash. See Scheduled Payments for the save behavior.
Next steps
Merchant Accounts
Sign up as a merchant to create payment links, receive payouts, and manage your payout wallet.
Hosted Checkout
Understand the checkout page your send and request links point to, and how payment sessions expire.
Initialize Payment API
Full reference for the
direction semantics, request fields, and response shape.Webhooks
Subscribe to payment lifecycle events if you’re building a backend that reacts to settlements.

