---
title: "Begin or complete verified agent-owned signup"
method: POST
path: "/credits/agent/register"
tags: ["Agent-native onboarding"]
---

# Begin or complete verified agent-owned signup

`POST /credits/agent/register`

## Request

- Base URL: `https://api.paywithlocus.com/api`
- URL: `https://api.paywithlocus.com/api/credits/agent/register`
- Auth: none required

A first request creates only a 30-minute pending row and returns an AgentID authorization URL. After AgentID PKCE verification, replaying the same name and registrationToken creates or recovers one zero-balance personal account and returns its scoped connection credential. The verified provider/subject pair is the durable one-account boundary. No free or bonus credits are issued.

## Request body

- AgentNativeRegistrationRequest
  - `name` string, required: Control and bidirectional-formatting characters are rejected.
  - `registrationToken` string, required: Canonical base64url encoding of 24 bytes generated by a cryptographically secure random-number generator.
  - `agentEmail` string, email: Optional AgentID inbox sent as login_hint. The verified token claim is authoritative.

## Response `200`

Existing verified account replayed, renewed, or recovered

- AgentOwnedAccountEnvelope
  - `success` unknown, required
  - `account` AgentOwnedAccount, required
    - `id` string, uuid, required
    - `name` string, required
    - `status` string, required
    - `onboardingState` 'funding_required' | 'ready', required
    - `balance` AgentOwnedBalance, required
      - `usd` string, required: Non-negative exact decimal string with at most six fractional digits. Endpoint-specific positivity and amount limits still apply.
      - `credits` string, required: Non-negative exact decimal string with at most six fractional digits. Endpoint-specific positivity and amount limits still apply.
      - `creditsPerDollar` string, required
    - `connection` object, required
      - `id` string, uuid, required
      - `keyPrefix` string, required
      - `expiresAt` string, date-time, required
      - `credential` string: Returned on registration replay and rotation. Store immediately.
    - `identity` object, required
      - `provider` 'agentid', required
      - `email` string, email, required
    - `mcp` object, required
    - `links` object, required
    - `nextAction` object, required
    - `created` boolean
    - `credentialRenewed` boolean
    - `credentialRecovered` boolean
    - `activated` unknown, required

## Other responses

- `201`: Verified agent-owned account created at a zero balance
- `202`: Only a short-lived pending signup exists; AgentID verification is required
- `409`: The token is bound to different account details
- `429`: Registration rate limit exceeded

---

[API](https://skmtc.dev/paywithlocus/apis/locus-pro-api.md) - [All operations](https://skmtc.dev/paywithlocus/apis/locus-pro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paywithlocus/apis/locus-pro-api/revisions/aab8fa5d6cef?raw)
