---
title: "Create anonymous user + API token (no signup required) — mig 0046"
method: POST
path: "/api/v1/anon-session"
---

# Create anonymous user + API token (no signup required) — mig 0046

`POST /api/v1/anon-session`

## Request

- Base URL: `https://roamzy.io`
- URL: `https://roamzy.io/api/v1/anon-session`
- Auth: none declared

Agent-first flow: client gets a Bearer api_token and a one-time claim_token without prior OAuth. Tighter limits ($40/day, $100/mo, $50 big-txn, 1 active eSIM) until the user attaches this anon account to a real Google/Telegram/email identity via the claim_url. Rate-limited 5/IP/day + 1/IP/min.

## Request body

- object
  - `user_agent_hint` string: Optional free-form client hint (e.g. "claude-desktop"). Logged for telemetry.
  - `ref` string: Optional referral code. Attributes the new account to that referrer (first-touch, self-referral blocked); the referrer then earns a percentage of this account's cash payments. Agents get their own code from GET /api/v1/referral.

## Response `201`

Anonymous session created. SAVE api_token and claim_url — they cannot be retrieved later.

- object
  - `user_id` string
  - `api_token` string: Bearer token (rk_live_<32-char>). SHOWN ONCE.
  - `claim_token` string: Magic-link claim secret (rc_<32-char>). SHOWN ONCE.
  - `claim_url` string, uri: URL to surface to the user for permanent-account attachment.
  - `limits` object
    - `daily_usdt` number
    - `monthly_usdt` number
    - `cool_off_usdt` number
    - `big_txn_usdt` number
    - `max_active_esims` integer
  - `claim_expires_at` string, nullable: NULL — claim tokens never auto-expire (operator-approved 2026-05-20).
  - `hint` string

## Other responses

- `429`: IP rate-limit (5/day or 1/min)
- `503`: agents.all.paused or agents.anon.paused

---

[API](https://skmtc.dev/roamzy/apis/roamzy-agent-api.md) · [All operations](https://skmtc.dev/roamzy/apis/roamzy-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/roamzy/apis/roamzy-agent-api/revisions/8757b8d0b779?raw)
