The Productive API provides programmatic access to Productive — a Professional Services Automation platform for agencies and consultancies. Use it to manage projects, track time, handle invoicing, plan resources, and automate your agency workflows.
This reference is generated from our OpenAPI specification and covers all available endpoints, request and response schemas, and query parameters. Resources are organized into categories in the sidebar — from Core Resources like people, companies, and projects, to domain-specific groups like Financials, Invoicing, Resource Management, and Time Tracking.
For tutorials and in-depth explanations, see the GuidesGUIDE .
All API requests are made to:
https://api.productive.io/api/v2
Every request requires two headers:
| Header | Description |
|---|---|
X-Auth-Token |
Your personal API token, generated in Settings > API integrations |
X-Organization-Id |
The numeric ID of your organization |
For details on permission scoping and token management, see the AuthorizationGUIDE guide.
The API follows the JSON:API specification. All requests and responses use JSON, and resource relationships are expressed through the standard JSON:API relationships and included mechanisms. For a detailed breakdown, see the Document FormatGUIDE
and Resource RepresentationGUIDE
guides.
Content-Type: application/vnd.api+json. Bulk operations require the ext=bulk extension. See Content NegotiationGUIDE
.filter query parameters (e.g. ?filter[project_id]=42). Filters support comparison operators like gt, lt, contains, and logical AND/OR. See FilteringGUIDE
.?sort=name (ascending) or ?sort=-name (descending). See SortingGUIDE
.?page[number]=2&page[size]=20. Responses include metadata with total counts and page information. See PaginationGUIDE
.?include=company,project to side-load related resources in a single request, reducing round trips.| Scope | Limit |
|---|---|
| General | 100 requests per 10 seconds |
| Sustained | 4,000 requests per 30 minutes |
| Reports | 10 requests per 30 seconds |
Exceeding these limits returns a 429 Too Many Requests response. For full details, see the Rate LimitsGUIDE
guide.
The API uses standard HTTP status codes and returns JSON:API-compliant error objects. See the Error HandlingGUIDE guide for response formats and common error codes.
The API is versioned through the base URL (/api/v2). For details on breaking vs. non-breaking changes, see the API ChangesGUIDE
guide.