Skip to main content
POST
Start attested onboarding

How it works

You already know your user’s phone number, so assert it: create an attempt and text the returned wallet_url into your thread. The user taps it and sees their Agentcard wallet immediately. No account exists yet, nothing was created beyond the attempt, and no code has been sent. The one-time code fires exactly once, inside our page, at the user’s first money action (adding their card, or their first purchase confirmation). Passing it creates the account, or binds the phone’s existing Agentcard account, and records the connection for your client. You never see or relay the code; that is the anti-phishing property of the whole flow. Then:
  1. Listen for the connection.created webhook. It carries user_id, your external_user_id, and onboarding_attempt_id.
  2. Call the exchange once to collect the connection token pair, and keep it alive with POST /api/v2/connect/refresh.
Attempts expire after 48 hours. Daily quotas apply per organization and per phone number. The capability is enabled per organization; ask us to turn it on.

Authorizations

Authorization
string
header
required

A platform access token. Get one on the Create an access token endpoint by exchanging your client_id + client_secret, then send it as Authorization: Bearer <token>. Tokens live one hour.

Body

application/json
phone
string
required

The user's phone. E.164 preferred; US local formats are normalized.

external_user_id
string

Your own id for this person, echoed on connection.created and the exchange.

Response

The attempt. Text wallet_url to the user; listen for connection.created, then exchange.