{
  "object": "doc",
  "title": "Create an account: POST /api/v1/accounts",
  "description": "Let an agent register its user and receive a working API key.",
  "section": "API reference",
  "url": "https://cart-route.com/docs/api/accounts",
  "updated": "2026-09-23",
  "prev": "https://cart-route.com/docs/api/account",
  "next": "https://cart-route.com/docs/objects",
  "text": "`POST /api/v1/accounts` lets an agent create a Cartroute account for the person it works for and receive a working API key with 100 credits in the response. A confirmation email goes to the address; when the person clicks it, the account gets 100 more. No key is needed to call it.\n\r\n\r\nPOST https://cart-route.com/api/v1/accounts\n\r\n\r\n\n## What must the agent do before calling it?\n\r\nAsk the person. The request must set `accept_terms: true`, which states that the account holder has agreed to the [Terms of Service](https://cart-route.com/legal/terms). Use the person's own email address; the confirmation link goes there and the bonus credits depend on it.\n\r\n\r\n\n## Which fields does it take?\n\r\n\r\n  \r\n\n| Field | Required | Rules | \r\n    \r\n\n| `email` | yes | Valid address, not already registered. | \r\n\n| `full_name` | yes | 2–80 characters. | \r\n\n| `password` | yes | At least 10 characters, with a letter and a number. Used for dashboard login. | \r\n\n| `accept_terms` | yes | Must be `true`. | \r\n\n| `company` | no | Up to 80 characters. | \r\n\n| `use_case` | no | Up to 300 characters. | \r\n\n| `agent_framework` | no | `mcp`, `openai-agents`, `langchain`, `llamaindex`, `crewai`, `n8n`, `custom` or `none`. | \r\n\n| `key_name` | no | Label for the key created with the account. | \r\n    \r\n\n\r\n\n\r\n\r\n\n## What does a request look like?\n\r\n\n```\ncurl -X POST \"https://cart-route.com/api/v1/accounts\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"email\": \"sam@example.com\",\r\n    \"full_name\": \"Sam Rivera\",\r\n    \"password\": \"a-long-passphrase-42\",\r\n    \"accept_terms\": true,\r\n    \"agent_framework\": \"mcp\",\r\n    \"key_name\": \"shopping assistant\"\r\n  }'\n```\n\r\n\r\n\n## What does it return?\n\r\n\n```\n{\n  \"object\": \"account_created\",\n  \"request_id\": \"req_0a4b8c7f3k2m9x1q\",\n  \"account\": {\n    \"id\": \"usr_4k2m9x1q0a4b8c7f3k\",\n    \"email\": \"sam@example.com\",\n    \"name\": \"Sam Rivera\",\n    \"email_verified\": false\n  },\n  \"api_key\": \"cr_live_…\",\n  \"api_key_notice\": \"Store this key now. It is shown once and only its hash is kept.\",\n  \"credits_remaining\": 100,\n  \"next_step\": \"A verification link was emailed to sam@example.com. The account holder must click it to unlock 100 more credits.\"\n}\n```\n\r\nStatus `201`. Store `api_key` immediately; it cannot be retrieved later.\n\r\n\r\n\n## What are the limits?\n\r\nFive accounts per IP address per hour; the sixth returns `429 rate_limited`. A validation failure returns `422` with the first problem in `detail` and every problem in `errors`, keyed by field."
}