For Developers and Teams

Build integrations with
Productive

Connect your tools, automate workflows, or build applications on Productive. If it's in Productive, you can access it and build on it.

How can you start building?

1

Get your API token

Generate an X-Auth-Token from your account settings.

2

Make your first request

Call the API to fetch your organization data.

3

Build what you need

From quick integrations to full-featured applications — you decide the scope.

GET /api/v2/tasks Try your first API call
# 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"

What can you build today?

Common integration patterns for agencies and service businesses.

Sync Your Tools

Pull invoices into your accounting software, push contacts to your CRM, or keep your ERP up to date without the manual work.

Automate project creation

Trigger projects, tasks, and assignments based on events in your other tools. When a deal closes, a project opens.

Build custom dashboards

Pull time, budget, and profitability data into your own BI tool or reporting stack.

Manage at Scale

Set up workspaces, onboard people, and configure projects programmatically for multi-client agencies.

Getting Started

Guides and references to help you integrate quickly.

Authentication

API tokens via X-Auth-Token header.

Filtering & Pagination

Efficient data retrieval with JSON:API.

Webhooks

Real-time notifications on data changes.

See it in action

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"

Guides & Tutorials

Step-by-step walkthroughs for common integration patterns.

Browse Guides →

Get Support

Stuck on something? Our team is ready to help you integrate.

Contact Us →

Changelog

Stay up to date with API changes, new endpoints, and improvements.

View Changelog →