Endpoints
| Method | Path | Description |
|---|---|---|
POST | /api/v1/auth/register | Create a new developer account |
POST | /api/v1/auth/login | Log in with email and password |
POST | /api/v1/auth/logout | Clear auth cookies |
POST | /api/v1/auth/refresh | Exchange refresh token for new tokens |
GET | /api/v1/auth/me | Get current user profile |
POST | /api/v1/auth/forgot-password | Send a password reset OTP by email |
POST | /api/v1/auth/verify-otp | Verify OTP and receive a reset token |
POST | /api/v1/auth/reset-password | Set a new password using the reset token |
POST | /api/v1/auth/change-password | Change password for an authenticated user |
Token types
| Token | Expiry | How to use |
|---|---|---|
access_token | 15 minutes | Pass as Authorization: Bearer <token> or send automatically via the pdx_access cookie |
refresh_token | 7 days | Send via the pdx_refresh cookie or Authorization header to POST /api/v1/auth/refresh |
Register
AuthResponse with tokens on success.
Request body
Developer email address.
Password. Minimum 8 characters.
Full name. 1–100 characters.
Example request
cURL
AuthResponse fields
User UUID.
User email address.
User display name.
JWT access token. Valid for 15 minutes.
JWT refresh token. Valid for 7 days. Use to obtain new access tokens without re-entering credentials.
Sample response
Login
Request body
Developer email address.
Account password.
Example request
cURL
Logout
pdx_access and pdx_refresh httpOnly cookies. No request body required.
Refresh tokens
pdx_refresh cookie or the Authorization header. Use this before the access token expires to maintain a continuous session.
Get user profile
cURL
Password reset flow
Use these three endpoints in sequence to reset a forgotten password:Request OTP
POST /api/v1/auth/forgot-password with {"email": "dev@company.com"}. A 6-digit OTP is sent to the registered email. The OTP expires in 10 minutes. This endpoint returns success even if the email is not registered, to prevent account enumeration.Verify OTP
POST /api/v1/auth/verify-otp with {"email": "dev@company.com", "otp": "482910"}. On success, returns a short-lived reset_token valid for 5 minutes.Change password
Request body
The current account password.
The new password. Minimum 8 characters.
