Ask for a test key
POST /v1/signups
Sends a confirmation link to the address. The answer is the same whether or not that address already has an account: the collision is reported at confirmation time, to whoever can read the mailbox. No API key.
Request Body required
Section titled “Request Body required ”object
Example
you@example.comWhere the request came from. cli waits for the key on a poll; web is handed it in the confirm response.
IANA time zone name.
Example
Europe/RomeThree letter ISO 4217 currency code.
Example
EURI accept the Terms of Service and the Data Processing Agreement on behalf of my business. Required, and true: a sign up without it is refused with 400 terms_not_accepted.
I specifically approve the clauses listed in Section 17 of the Terms (Articles 1341 and 1342 of the Italian Civil Code). Required, and true.
The platform or campaign that sent the person here, as a slug: lower case letters, digits and hyphens, at most 32. The website passes on ?via=; the CLI sends --via or BOOKRAIL_VIA. A value of any other shape is ignored, never refused.
Example
lovableThe coding agent that launched the CLI, detected by the CLI from the environment variables each agent documents. Any other value is ignored, never refused.
Responses
Section titled “ Responses ”Success.
object
Identifier of a signup, prefixed with sgn_.
Example
sgn_0198f0c2a1b47e2e9a1c0f4d5e6a7b8cEchoed back so a client can show where the message went.
When the confirmation link stops working.
Example
2026-09-08T07:00:00ZOnly for client: "cli", and only in the answer that created the sign up: the token the terminal claims its key with.
Present when the key went to a waiting terminal instead of into this response.
object
Identifier of a account, prefixed with acct_.
Example
acct_0198f0c2a1b47e2e9a1c0f4d5e6a7b8cobject
Identifier of a project, prefixed with proj_.
Example
proj_0198f0c2a1b47e2e9a1c0f4d5e6a7b8cThe test key alone. The same object as the test entry of api_keys.
object
Identifier of a api_key, prefixed with key_.
Example
key_0198f0c2a1b47e2e9a1c0f4d5e6a7b8cThe keys the sign up created: one test and one live, both secret, with no scopes and no tenant. A sign up confirmed before 24 September 2026 has the test one only.
object
Identifier of a api_key, prefixed with key_.
Example
key_0198f0c2a1b47e2e9a1c0f4d5e6a7b8cThe test key, in clear text. Shown once: in the confirm of a browser, or in the first successful claim of a terminal. It is stored as a SHA-256 hash and cannot be shown again.
Example
sk_test_...The live key, in clear text, shown once and at the same moment as secret_key. It books for real and counts against the free plan of the account, which refuses new live bookings at its monthly threshold with 402 plan_limit_reached.
Example
sk_live_...Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Error codes: invalid_body, parameter_invalid, parameter_missing, terms_not_accepted, unsupported_api_version.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Error codes: signup_rate_limited.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Error codes: internal_error.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Error codes: signup_email_failed.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.
Error codes: signup_disabled.
object
object
Machine readable code. The set is per operation; each response below lists the ones it can produce.
The field or header the error is about, when there is one.
What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.
Headers
Section titled “Headers ”Identifier of this request. Quote it to support.
The API version this response was produced with.