Signup
Create a new Robotomail account and receive an API key.
POST /v1/signup
POST/v1/signup
Public endpoint — no authentication required.
Request body
| Name | Type | Description |
|---|---|---|
| email* | string | Valid email address |
| password* | string | Minimum 8 characters |
| slug* | string | 3-30 chars, lowercase alphanumeric + hyphens. Becomes your platform email address. |
| name | string | Display name. Defaults to email prefix. |
response — 201 Created
{
"user": {
"id": "clx1a2b3c0000abcd1234efgh",
"email": "you@example.com",
"slug": "myagent",
"name": "you",
"plan": "free",
"platform_email": "myagent@robotomail.co"
},
"api_key": {
"key": "rm_a1b2c3d4e5...",
"prefix": "rm_a1b2c",
"name": "default"
},
"mailbox": {
"id": "a1b2c3d4-5678-4def-abcd-111111111111",
"address": "myagent",
"fullAddress": "myagent@robotomail.co",
"status": "ACTIVE"
},
"mailbox_limit": 1,
"daily_send_limit": 10,
"monthly_send_limit": 10,
"email_verified": false,
"next_steps": {
"verify_email": "Ask your human to click the link sent to the signup email. Required before the API key works.",
"add_payment": "1 mailbox, 10 sends and 10 receives per month. Exchange mail only between your agent and your verified email address. Upgrade to email anyone. No credit card, no expiry. Allowances reset on the first of each month (UTC). Upgrade for higher limits or a custom domain. Optional: POST /v1/billing/upgrade returns a checkout URL for your human to review.",
"add_domain": "POST /v1/domains",
"send_email": "POST /v1/mailboxes/:id/messages"
}
}Errors
400— Invalid input (email format, password too short, slug format)409— Email or slug already registered429— Rate limited (5 signups per hour per IP)
POST /v1/auth/resend-verification
POST/v1/auth/resend-verification
Public endpoint — no authentication required. Re-sends the email verification link to an unverified account.
Request body
| Name | Type | Description |
|---|---|---|
| email* | string | The account's email address |
response — 200 OK
{ "ok": true }The response is always { "ok": true } regardless of whether the email belongs to a known account or is already verified. This prevents account enumeration. A verification email is sent only when the address maps to a real, unverified account.
Errors
400— Invalid email format or invalid JSON body429— Too many resend requests (rate limited per IP and per email)