API Overview
The AbleTime API lets your own systems and tools read and write the same work your team tracks in the application: projects, tasks, time entries, milestones, invoices and more. It is a REST API over HTTPS that accepts and returns JSON.
The core documentation for the API endpoint lives in the API Reference.
Base address
Every endpoint sits under /api/public/v2 on your AbleTime host. The version is part of the path, so a future version can appear alongside this one without changing how your integration behaves.
https://track.abletime.com/api/public/v2/tasksWhat you need before you start
An active paid plan that includes API access. Without it every request is refused.
An API key, created under Settings > Integrations > API Keys. Only an owner or admin can create one.
The permissions, called grants, that your credential needs for the endpoints you intend to call.
To reach calendar entries, your own personal access key, created on the API Access tab of your user settings. It only works once an owner or admin has turned on Agent access (MCP) under Settings > Integrations > API Keys.
What you can reach
Resource | What you can do |
|---|---|
Projects | Read projects, and expand one to include its categories, users, stages or client |
Clients | Read clients |
Users | Read the people in your organization |
Epics | Create, read, update, delete, and set state |
Tasks | Create, read, update and delete, plus schedule, state, assignee, priority, blocking, locking, dependencies, archiving, comments and attachments |
Milestones | Create, read, update, delete |
Time entries | Create, read, update, delete, and start or stop a running timer |
Calendar entries | A person's own proposed time, reached only with a personal access key |
Billing | Read invoices and move one to a new status |
Webhooks | Not through the API. Register a destination under Settings > Integrations > Webhooks; the events it sends are described on API Webhooks. |
The interactive reference, with every endpoint, parameter and response shape, is on the API Reference tab.
Conventions that apply everywhere
Your organization is decided by your credential. Never send an organization id in a request body or query string; there is no parameter for one.
Identifiers are 26-character ULIDs.
Referring to something that belongs to another organization is treated exactly like referring to something that does not exist.
PATCHis a merge patch: leave a field out to keep its current value, and send an explicit null to clear a field that allows it.Timestamps you receive are ISO 8601 unless a field is documented as a wall-clock value.