> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentcard.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a wallet link

> Mint a short-lived link that opens the user's wallet. Text the URL as is.

<ParamField body="user_id" type="string" required>The connected user. Recorded consent is required first (`POST /api/v2/connect/consent`).</ParamField>
<ParamField body="expires_in" type="number">Lifetime in seconds, 60 to 86400. Default 15 minutes.</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.agentcard.sh/api/v2/wallet_links \
    -H "Authorization: Bearer $ORG_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"user_id": "usr_8f3k2m"}'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "object": "wallet_link",
    "id": "wl_3k1v9d2q",
    "user_id": "usr_8f3k2m",
    "status": "active",
    "url": "https://app.agentcard.sh/w/wl_3k1v9d2q.…",
    "expires_at": "2026-09-07T18:15:00Z",
    "test_mode": false
  }
  ```
</ResponseExample>

Links are safe to text: preview fetches never consume them. For a payment approval, append `?merchant=Wandy%27s&amount=1275` to `url`.

**Errors.** `404 not_found` (wallet links not enabled for your organization, or unknown user), `403 wallet_link_unavailable`, `402 subscription_required` (production only), `422 user_info_required` with `missing_fields: ["consent"]`.
