Skip to main content

Base URL

All API requests are made to:
https://api.parsalink.io/api
All endpoints use HTTPS. HTTP requests are not supported.

Authentication

The ParsaLink API uses Bearer token authentication. Include your access token in the Authorization header of every request:
Authorization: Bearer <your_access_token>

Obtaining a Token

Authenticate by calling the login endpoint with your email and password:
POST https://api.parsalink.io/api/auth/login/
Content-Type: application/json

{
  "email": "[email protected]",
  "password": "your_password"
}
Response:
{
  "access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": "usr_01HX...",
    "email": "[email protected]",
    "firstName": "Jane",
    "lastName": "Smith"
  }
}
The access token is valid for 1 hour. Use the refresh token to get a new access token without re-entering credentials. See Authentication for full details on token refresh and API key authentication.

Response Format

All responses are JSON. Field names use camelCase throughout the API.

Success Response

{
  "id": "cnt_01HX...",
  "firstName": "John",
  "lastName": "Smith",
  "email": "[email protected]",
  "stage": "engaged",
  "createdAt": "2025-03-15T10:30:00Z",
  "updatedAt": "2025-03-20T14:22:00Z"
}

Paginated List Response

{
  "count": 142,
  "next": "https://api.parsalink.io/api/contacts/?page=2",
  "previous": null,
  "results": [...]
}
Use the next URL directly to fetch the next page. You can also pass ?page=N or ?limit=N&offset=N query parameters.

Error Handling

Errors return standard HTTP status codes with a JSON body explaining the error.
Status CodeMeaning
400Bad Request — invalid or missing parameters
401Unauthorized — missing or invalid token
403Forbidden — authenticated but not permitted to perform this action
404Not Found — resource doesn’t exist or isn’t accessible to you
422Unprocessable Entity — validation error
429Too Many Requests — rate limit exceeded
500Internal Server Error — something went wrong on our end
Error response body:
{
  "detail": "Authentication credentials were not provided."
}
For validation errors:
{
  "email": ["This field is required."],
  "stage": ["Value 'invalid_stage' is not a valid choice."]
}

Rate Limiting

PlanRate Limit
Starter100 requests/minute
Growth300 requests/minute
Business600 requests/minute
EnterpriseCustom
Rate limit headers are returned with every response:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 247
X-RateLimit-Reset: 1711500060
When you exceed the limit, a 429 response is returned. The X-RateLimit-Reset value is a Unix timestamp indicating when the rate limit window resets.

Versioning

The current API version is v1, which is the default when no version is specified. Breaking changes will be introduced with a new version prefix (e.g., /api/v2/). The current version will be supported for at least 12 months after a new version is released.