Connect your tools, automate workflows, or build applications on Productive. If it's in Productive, you can access it and build on it.
Generate an X-Auth-Token from your account settings.
Call the API to fetch your organization data.
From quick integrations to full-featured applications — you decide the scope.
# Fetch tasks from Productive curl -X GET "https://api.productive.io/api/v2/tasks" \ -H "Content-Type: application/vnd.api+json" \ -H "X-Auth-Token: YOUR_API_TOKEN" \ -H "X-Organization-Id: YOUR_ORG_ID"
Common integration patterns for agencies and service businesses.
Pull invoices into your accounting software, push contacts to your CRM, or keep your ERP up to date without the manual work.
Trigger projects, tasks, and assignments based on events in your other tools. When a deal closes, a project opens.
Pull time, budget, and profitability data into your own BI tool or reporting stack.
Set up workspaces, onboard people, and configure projects programmatically for multi-client agencies.
12 domains covering every aspect of professional services automation.
Projects, boards, task lists, and assignments.
Create, update, and manage tasks and workflows.
Time entries, timers, and timesheets.
Budgets, expenses, and revenue tracking.
Invoices, line items, payments, and tax rates.
Bookings, capacity planning, and availability.
Deals, companies, contacts, and sales pipelines.
Aggregated data, KPIs, and custom reports.
Pages, attachments, and survey forms.
Guides and references to help you integrate quickly.
API tokens via X-Auth-Token header.
Efficient data retrieval with JSON:API.
Real-time notifications on data changes.
Create a task with a single API call.
// Create a task in Productive const response = await fetch('https://api.productive.io/api/v2/tasks', { method: 'POST', headers: { 'Content-Type': 'application/vnd.api+json', 'X-Auth-Token': 'your-api-token', 'X-Organization-Id': 'your-org-id' }, body: JSON.stringify({ data: { type: 'tasks', attributes: { title: 'My first task via API' }, relationships: { task_list: { data: { type: 'task_lists', id: '123' } } } } }) }); const task = await response.json(); console.log(task.data.id); // "456"