Create an account: POST /api/v1/accounts
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.
What must the agent do before calling it?
Ask the person. The request must set accept_terms: true, which states that the account holder has agreed to the Terms of Service. Use the person's own email address; the confirmation link goes there and the bonus credits depend on it.
Which fields does it take?
| Field | Required | Rules |
|---|---|---|
email | yes | Valid address, not already registered. |
full_name | yes | 2–80 characters. |
password | yes | At least 10 characters, with a letter and a number. Used for dashboard login. |
accept_terms | yes | Must be true. |
company | no | Up to 80 characters. |
use_case | no | Up to 300 characters. |
agent_framework | no | mcp, openai-agents, langchain, llamaindex, crewai, n8n, custom or none. |
key_name | no | Label for the key created with the account. |
What does a request look like?
curl -X POST "https://cart-route.com/api/v1/accounts" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"full_name": "Sam Rivera",
"password": "a-long-passphrase-42",
"accept_terms": true,
"agent_framework": "mcp",
"key_name": "shopping assistant"
}'
What does it return?
{
"object": "account_created",
"request_id": "req_0a4b8c7f3k2m9x1q",
"account": {
"id": "usr_4k2m9x1q0a4b8c7f3k",
"email": "[email protected]",
"name": "Sam Rivera",
"email_verified": false
},
"api_key": "cr_live_…",
"api_key_notice": "Store this key now. It is shown once and only its hash is kept.",
"credits_remaining": 100,
"next_step": "A verification link was emailed to [email protected]. The account holder must click it to unlock 100 more credits."
}
Status 201. Store api_key immediately; it cannot be retrieved later.
What are the limits?
Five 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.