POST /v1/signup
| Call | POST /v1/signup |
| Price | free |
| Scope | none (public endpoint) |
| Operation id | signup |
What it does
Section titled “What it does”Start sign-up with a work email; no browser and no card needed. Verdict emails a verification link; complete sign-up with POST /v1/signup/verify using the token from the link, which issues your first key (shown once) and $5 of starter credits. If the verification email cannot be sent, the answer is 503 vendor_unavailable with Retry-After and nothing is created: retry the same request after that many seconds. Free. No key needed.
Example request
Section titled “Example request”Copy it as curl. Set VERDICT_API_KEY first; uuidgen makes a fresh Idempotency-Key.
curl -X POST 'https://api.askverdict.io/v1/signup' \ -H "Idempotency-Key: $(uuidgen)" \ -H 'Content-Type: application/json' \ -d '{ "email": "[email protected]", "org_name": "Northwind Ops"}'Example response
Section titled “Example response”202: Verification email sent.
{ "status": "verification_sent", "expires_at": "2026-11-07T14:10:00Z"}Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
idempotency-key |
header | string (uuid) | yes | A UUID you generate per logical request. Required on every POST. Repeating it within 24 hours returns the stored response and bills nothing; reusing it with a different body returns 409 idempotency_conflict. |
Request body
Section titled “Request body”Schema SignupRequest. The email to verify.
| Field | Type | Required | Description |
|---|---|---|---|
email |
string (email) | yes | Work email. A verification link is sent to it; disposable domains are refused. |
org_name |
string | no | Organization name; defaults to the email’s domain. |
Response fields (202)
Section titled “Response fields (202)”Schema SignupResponse.
| Field | Type | Required | Description |
|---|---|---|---|
status |
enum: “verification_sent” | yes | A verification email was sent. |
email |
string (email) | yes | The address it was sent to. |
expires_at |
string (date-time) | yes | When the verification link expires. |
Errors
Section titled “Errors”Errors are RFC 9457 problem details and are never billed. Branch on type. See Errors.
| Status | Meaning |
|---|---|
400 |
Invalid request: malformed JSON, an unknown field, a failed constraint or a size limit (invalid_request). |
409 |
The Idempotency-Key was reused with a different request, or the first request is still running (idempotency_conflict). |
429 |
Rate limited (rate_limited). Wait Retry-After seconds. |
500 |
Unexpected server error (internal). Not billed; retry with the same Idempotency-Key. |
503 |
Temporarily unavailable: the decision model failed, timed out or is rate limited, or decisions are switched off (decision_unavailable), or a vendor the call depends on is unavailable (vendor_unavailable, phase 2). Not billed. Wait Retry-After seconds and retry with the same Idempotency-Key. |
Try it
Section titled “Try it”Open the interactive reference to send this request from the browser. The full document is at /openapi.json.