Developers

REST API

Use DoubleTime's API for private automations, reporting scripts, and custom apps that need controlled access to account data.

Connection details

Use the versioned API base for requests, and use the resource value when requesting OAuth API scopes.

Base URL

API base
https://doubletime.io/api/v1
OAuth API resource
https://doubletime.io/api

/api defaults to the current version, which is v1. Use /api/v1 when you want the version to be explicit.

Request auth

Send API tokens and OAuth access tokens as bearer tokens.

Authorization: Bearer <token>

Authentication options

Choose the narrowest credential type that fits the integration.

MethodBest forNotes
Fine-grained API tokensBest for private scripts and internal automations. Tokens use the API resource and only work for the scopes selected when the token is created.
  • Token prefix: dtfg_
  • Use with Authorization: Bearer <token>
  • Can be revoked from DoubleTime
OAuth access tokensBest for apps used by other people. Register an OAuth client, send the user through consent, then call the API with the returned access token.
  • Authorization code with PKCE is supported
  • Use the API resource when requesting API scopes
Legacy tokensOlder dt_ tokens have broad access to the owner account. They still work, but new integrations should use fine-grained tokens or OAuth.
  • Token prefix: dt_
  • Avoid for new integrations when scoped access is available

Examples

Read profile

curl -H "Authorization: Bearer dtfg_your_token" \ https://doubletime.io/api/v1/profile

Create task

curl -X POST https://doubletime.io/api/v1/tasks \ -H "Authorization: Bearer dtfg_your_token" \ -H "Content-Type: application/json" \ -d '{"summary":"Follow up with client","tags":[]}'

Scopes

Request the smallest set of scopes that match the action. Write and send scopes depend on the matching read scope.

AreaScopesUse
Profileprofile:readRead the signed-in user profile.
Billing Hubbilling:readRead Billing Hub summary and invoice-selection data.
Tasks and timetasks:read, tasks:write, time:read, time:writeRead and update tasks, task notes, ordering, and task time entries.
Clients and projectsclients:read, clients:write, projects:read, projects:writeRead, create, update, and archive client and project records.
Tags and rulestags:read, tags:write, rules:read, rules:writeManage tags plus automation and billing rules. Inline new tags require tags:write.
Invoicesinvoices:read, invoices:write, invoices:sendManage invoices, adjustments, payments, attachments, previews, sends, and receipt dispatches.
Reportsreports:readRun task, time, income, tax, receivables, billing, and client-health reports.
Settingssettings:read, settings:writeRead and update non-sensitive account settings through the API resource only.

Payloads are scope-aware. If a token can read the requested record but not a related record, DoubleTime omits nested details for that related resource. Request the related read scope when your integration needs linked client, project, task, invoice, or tag detail.

Available endpoints

This is the public API surface intended for scoped tokens and OAuth clients.

Profile

profile:read

  • GET /api/v1/profile

Billing Hub

billing:read

  • GET /api/v1/billing-hub/summary
  • GET /api/v1/billing-hub/invoice-selection

Tasks

tasks:read for reads, tasks:write for mutations

  • GET, POST /api/v1/tasks
  • GET /api/v1/tasks/notes
  • GET /api/v1/tasks/invoice-import-candidates
  • PATCH /api/v1/tasks/reorder
  • GET, PUT, DELETE /api/v1/tasks/:task

Time entries

time:read for reads, time:write for mutations

  • GET, POST /api/v1/tasks/:task/activities
  • GET, PUT, DELETE /api/v1/tasks/:task/activities/:activity

Clients and projects

clients:* for clients, projects:* for projects

  • GET, POST /api/v1/clients
  • GET, PUT, DELETE /api/v1/clients/:client
  • GET, POST /api/v1/clients/:client/projects
  • GET, PUT, DELETE /api/v1/clients/:client/projects/:project

Tags and rules

tags:*, rules:*

  • GET, POST /api/v1/tags
  • GET, PUT, DELETE /api/v1/tags/:tag
  • GET, POST /api/v1/rules
  • GET, PUT, DELETE /api/v1/rules/:rule
  • PATCH /api/v1/rules/:rule/enabled

Invoices

invoices:read, invoices:write, invoices:send

  • GET, POST /api/v1/invoices
  • GET, PUT, DELETE /api/v1/invoices/:invoice
  • GET, POST /api/v1/invoices/:invoice/adjustments
  • DELETE /api/v1/invoices/:invoice/adjustments/:adjustment
  • GET, POST /api/v1/invoices/:invoice/payments
  • DELETE /api/v1/invoices/:invoice/payments/:invoicePayment
  • POST /api/v1/invoices/:invoice/payments/:invoicePayment/send-receipt
  • POST /api/v1/invoices/:invoice/artifacts
  • DELETE /api/v1/invoices/:invoice/artifacts/:invoiceArtifact
  • GET /api/v1/invoices/:invoice/artifacts/:invoiceArtifact/download
  • GET /api/v1/invoices/:invoice/dispatches
  • POST /api/v1/invoices/:invoice/dispatches/:invoiceDispatch/resend
  • POST /api/v1/invoices/:invoice/preview
  • POST /api/v1/invoices/:invoice/send

Reports

reports:read

  • GET /api/v1/reports/summary
  • GET /api/v1/reports/task-time
  • GET /api/v1/reports/daily-time
  • GET /api/v1/reports/income
  • GET /api/v1/reports/tax
  • GET /api/v1/reports/receivables
  • GET /api/v1/reports/unbilled-wip
  • GET /api/v1/reports/collections
  • GET /api/v1/reports/client-health
  • GET /api/v1/reports/billing-pipeline
  • GET /api/v1/reports/billing-coverage
  • GET /api/v1/reports/unpaid-invoices
  • GET /api/v1/reports/billed-vs-collected
  • GET /api/v1/reports/tax-liability
  • GET /api/v1/reports/timesheet
  • GET /api/v1/reports/project-time-breakdown
  • GET /api/v1/reports/tag-time-breakdown

Settings

settings:read, settings:write

  • GET /api/v1/settings
  • PATCH /api/v1/settings/business
  • PATCH /api/v1/settings/invoice
  • PATCH /api/v1/settings/locale
  • PATCH /api/v1/settings/notifications

Implementation notes

  • JSON endpoints expect Content-Type: application/json unless the endpoint is a file upload or download.
  • Task lists support limit, offset, and sort query parameters and return X-Total-Count, X-Offset, and X-Limit.
  • Read scopes allow viewing records. Write scopes require the matching read scope and can create, update, archive, or delete records.
  • Preview, send, receipt, and resend invoice endpoints require invoices:send plus invoices:read.
  • Some report endpoints require an active subscription in addition to reports:read.