Skip to content

Register a new account

POST
/api/v1/auth/register
curl -X POST 'https://dashboard.justcrawl.io/api/v1/auth/register' \
-H 'Content-Type: application/json' \
-d '{"email":"you@example.com","password":"correct-horse-battery","name":"Your Name","agreedToTerms":true}'

Creates a new user account and signs them in immediately — the response includes a 15-minute accessToken and a 7-day refreshToken so the client can start making authenticated requests without a second round-trip. Email verification is required for write-heavy operations (CSV upload, schedule create / trigger) but the account is usable read-only until verified; a verification email is sent automatically. The agreedToTerms field is binding — the API refuses to create an account without it, and the timestamp + terms version are persisted to the user row. Subject to the auth rate-limit bucket — a flurry of signups from one IP returns 429.

Media type application/json
object
email
required
string format: email
password
required

8-72 characters. Bcrypt-hashed at rest with cost factor 12.

string
>= 8 characters <= 72 characters
name
required

Display name. Shown in the dashboard and in outbound emails.

string
agreedToTerms
required

Must be true. The server records the agreement timestamp + current terms version against the user row.

boolean
Example generated
{
"email": "hello@example.com",
"password": "example",
"name": "example",
"agreedToTerms": true
}

Account created. Body carries the user identity, a 15-min accessToken, and a 7-day refreshToken.

Media type application/json
object
user
object
id
string format: uuid
email
string format: email
name
string
emailVerifiedAt

Always null on register; set when the verification email is clicked.

string
nullable
accessToken
string
refreshToken
string
Example generated
{
"user": {
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"email": "hello@example.com",
"name": "example",
"emailVerifiedAt": "example"
},
"accessToken": "example",
"refreshToken": "example"
}

Validation failed — request body or query is missing/invalid

Media type application/json
object
error
string
Example
{
"error": "Missing or invalid \"url\" field"
}

Operation conflicts with current resource state

Media type application/json
object
error
string
Example
{
"error": "Resource already exists"
}

Unexpected server error. Logs and PostHog $exception capture

Media type application/json
object
error
string
Example
{
"error": "Something went wrong"
}