Connection details
Use the versioned API base for requests, and use the resource value when requesting OAuth API scopes.
Base URL
https://doubletime.io/api/v1https://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.
- Token prefix: dtfg_
- Use with Authorization: Bearer <token>
- Can be revoked from DoubleTime
- Authorization code with PKCE is supported
- Use the API resource when requesting API scopes
- 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/profileCreate 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.
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/summaryGET /api/v1/billing-hub/invoice-selection
Tasks
tasks:read for reads, tasks:write for mutations
GET, POST /api/v1/tasksGET /api/v1/tasks/notesGET /api/v1/tasks/invoice-import-candidatesPATCH /api/v1/tasks/reorderGET, PUT, DELETE /api/v1/tasks/:task
Time entries
time:read for reads, time:write for mutations
GET, POST /api/v1/tasks/:task/activitiesGET, PUT, DELETE /api/v1/tasks/:task/activities/:activity
Clients and projects
clients:* for clients, projects:* for projects
GET, POST /api/v1/clientsGET, PUT, DELETE /api/v1/clients/:clientGET, POST /api/v1/clients/:client/projectsGET, PUT, DELETE /api/v1/clients/:client/projects/:project
Tags and rules
tags:*, rules:*
GET, POST /api/v1/tagsGET, PUT, DELETE /api/v1/tags/:tagGET, POST /api/v1/rulesGET, PUT, DELETE /api/v1/rules/:rulePATCH /api/v1/rules/:rule/enabled
Invoices
invoices:read, invoices:write, invoices:send
GET, POST /api/v1/invoicesGET, PUT, DELETE /api/v1/invoices/:invoiceGET, POST /api/v1/invoices/:invoice/adjustmentsDELETE /api/v1/invoices/:invoice/adjustments/:adjustmentGET, POST /api/v1/invoices/:invoice/paymentsDELETE /api/v1/invoices/:invoice/payments/:invoicePaymentPOST /api/v1/invoices/:invoice/payments/:invoicePayment/send-receiptPOST /api/v1/invoices/:invoice/artifactsDELETE /api/v1/invoices/:invoice/artifacts/:invoiceArtifactGET /api/v1/invoices/:invoice/artifacts/:invoiceArtifact/downloadGET /api/v1/invoices/:invoice/dispatchesPOST /api/v1/invoices/:invoice/dispatches/:invoiceDispatch/resendPOST /api/v1/invoices/:invoice/previewPOST /api/v1/invoices/:invoice/send
Reports
reports:read
GET /api/v1/reports/summaryGET /api/v1/reports/task-timeGET /api/v1/reports/daily-timeGET /api/v1/reports/incomeGET /api/v1/reports/taxGET /api/v1/reports/receivablesGET /api/v1/reports/unbilled-wipGET /api/v1/reports/collectionsGET /api/v1/reports/client-healthGET /api/v1/reports/billing-pipelineGET /api/v1/reports/billing-coverageGET /api/v1/reports/unpaid-invoicesGET /api/v1/reports/billed-vs-collectedGET /api/v1/reports/tax-liabilityGET /api/v1/reports/timesheetGET /api/v1/reports/project-time-breakdownGET /api/v1/reports/tag-time-breakdown
Settings
settings:read, settings:write
GET /api/v1/settingsPATCH /api/v1/settings/businessPATCH /api/v1/settings/invoicePATCH /api/v1/settings/localePATCH /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.