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

# Agent signup

> Let an agent create a Prism account and verify its owner by email.

The agent receives the API key and the human only supplies the emailed OTP.

## Sign up

Ask for the owner's email and a workspace name:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --fail-with-body https://prisminference.com/api/agent-signups \
  -H "Content-Type: application/json" \
  -d '{"human_email":"owner@example.com","username":"my-agent","source":"opencode"}'
```

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "organization_id": "...",
  "api_key": "prism_sk_...",
  "verification_required": true,
  "verify_url": "https://prisminference.com/api/agent-signups/verify"
}
```

Store `api_key` immediately using the matching [Codex](/guides/codex),
[OpenCode](/guides/opencode), [Hermes](/guides/hermes), or
[OpenClaw](/guides/openclaw) guide. Prism returns it once. Never repeat it to the
human or include it in the final response.

## Verify

Ask the human for the six-digit code Prism emails, then call:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --fail-with-body https://prisminference.com/api/agent-signups/verify \
  -H "Authorization: Bearer $PRISM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"otp_code":"123456"}'
```

The OTP expires after five minutes and allows three attempts. A successful
response is `{ "verified": true }`.

The key expires after 30 days and cannot run inference before verification.
Repeating signup for an unverified email rotates the previous key and OTP. For
errors, follow the returned `fix` field instead of retrying unchanged.
