Register a new account
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}'import requestsr = requests.post( 'https://dashboard.justcrawl.io/api/v1/auth/register', json={ 'email': 'you@example.com', 'password': 'correct-horse-battery', 'name': 'Your Name', 'agreedToTerms': True, },)r.raise_for_status()session = r.json() # {user, accessToken, refreshToken}const res = await fetch('https://dashboard.justcrawl.io/api/v1/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: 'you@example.com', password: 'correct-horse-battery', name: 'Your Name', agreedToTerms: true, }),});if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);const session = await res.json();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.
Request Body required
Section titled “Request Body required ”object
8-72 characters. Bcrypt-hashed at rest with cost factor 12.
Display name. Shown in the dashboard and in outbound emails.
Must be true. The server records the agreement timestamp + current terms version against the user row.
Example generated
{ "email": "hello@example.com", "password": "example", "name": "example", "agreedToTerms": true}Responses
Section titled “ Responses ”Account created. Body carries the user identity, a 15-min accessToken, and a 7-day refreshToken.
object
object
Always null on register; set when the verification email is clicked.
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
object
Example
{ "error": "Missing or invalid \"url\" field"}Operation conflicts with current resource state
object
Example
{ "error": "Resource already exists"}Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}