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 with 403.
An API key, created under Settings > Integrations > API Keys.
The permissions, called grants, that your credential needs for the endpoints you intend to call.
What you can reach
Resource | What you can do |
|---|---|
Projects | Read projects, and expand one to include its categories, members, stages or client |
Clients | Read clients |
Users | Read the people in your organization |
Epics | Create, read, update, delete, and set state |
Tasks | Full create and update, plus schedule, state, assignee, priority, blocking, 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 token |
Billing | Read invoices and move one to a new status |
Webhooks | Register a destination for events, or delete one |
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 returns 404. The two are indistinguishable on purpose.
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.