Log in with email and password
curl -X POST 'https://dashboard.justcrawl.io/api/v1/auth/login' \ -H 'Content-Type: application/json' \ -d '{"email":"you@example.com","password":"correct-horse-battery"}'import requestsr = requests.post( 'https://dashboard.justcrawl.io/api/v1/auth/login', json={'email': 'you@example.com', 'password': 'correct-horse-battery'},)r.raise_for_status()session = r.json()access_token = session['accessToken']const res = await fetch('https://dashboard.justcrawl.io/api/v1/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: 'you@example.com', password: 'correct-horse-battery' }),});if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);const session = await res.json();Exchanges credentials for a 15-minute accessToken + 7-day refreshToken.
The 401 response is identical for both “no such email” and “wrong password”
— the server never discloses which side failed, blocking email enumeration.
The response embeds the user’s resolved orgId, orgName, and effective
permissions (RBAC) so a freshly-logged-in client can render the
dashboard without a follow-up org-lookup roundtrip. Subject to the
auth rate-limit bucket — many failed logins from one IP return 429.
Request Body required
Section titled “Request Body required ”object
Example generated
{ "email": "hello@example.com", "password": "example"}Responses
Section titled “ Responses ”Authenticated. Body carries user identity + org context + tokens.
object
object
Null when the user hasn’t completed onboarding.
Example generated
{ "user": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "email": "hello@example.com", "name": "example", "emailVerifiedAt": "example", "orgId": "example", "orgName": "example" }, "accessToken": "example", "refreshToken": "example"}Validation failed — request body or query is missing/invalid
object
Example
{ "error": "Missing or invalid \"url\" field"}Missing or invalid authentication token
object
Example
{ "error": "Missing or invalid authentication token"}Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}