Build with Timsio
One REST API for your time, clients, and invoices — Personal Access Token auth, cursor pagination, and signed webhooks.
What you can build
The same data you see in Timsio, available to your own tools and workflows.
Pull your data
Read time entries, clients, projects, invoices, and expenses — cursor-paginated and always scoped to your organisation.
Push writes
Create and update time entries, clients, and invoices programmatically. Idempotency keys make every retry safe.
React in real time
Subscribe to events like invoice.paid and time_entry.created. Deliveries are HMAC-signed, retried, and de-duplicated.
Built for automation
Personal Access Tokens, stable machine-readable error codes, and an OpenAPI spec you can generate a client from.
Quickstart
Authenticate with a Personal Access Token against https://api.timsio.com/api/v1. Here are the calls you'll reach for first.
Read your clients
Cursor-paginated and scoped to your token’s organisation. Any PAT can read.
curl https://api.timsio.com/api/v1/clients?limit=20 \
-H "Authorization: Bearer timsio_pat_..."
# {
# "data": [ { "id": "clx…", "name": "Acme Corp", "currency": "USD", … } ],
# "nextCursor": "eyJpZCI6…" // pass back as ?cursor= for the next page; null on the last
# }Log a time entry
Idempotent POST — pass an Idempotency-Key to make retries safe. Writes require a Plus (L2+) plan.
curl -X POST https://api.timsio.com/api/v1/time-entries \
-H "Authorization: Bearer timsio_pat_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 3f1d8c9e-1a2b-4c3d-8e9f-0a1b2c3d4e5f" \
-d '{
"projectId": "clx1a2b3c4d5e6f7g8h9",
"date": "2026-08-22",
"durationSeconds": 5400,
"notes": "Sprint planning",
"billable": true
}'Subscribe to a webhook
Get a signed POST to your endpoint on each event. The signing secret is shown once — store it. Webhooks are Pro (L3).
curl -X POST https://api.timsio.com/api/v1/webhooks \
-H "Authorization: Bearer timsio_pat_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/timsio/webhook",
"events": ["invoice.sent", "invoice.paid"]
}'
# → 201 returns the subscription + a signingSecret (whsec_…) shown ONCE.
# Verify the Timsio-Signature header on each delivery with it.What each plan unlocks
Reading is open to everyone. Writing and webhooks scale with your plan.
Read endpoints
Any plan
Every GET is available to any valid Personal Access Token, including Starter.
Write endpoints
Plus (L2+)
POST, PATCH, and DELETE require a Plus plan or higher. An L1 token gets 403 TIER_GATE_VIOLATION.
Webhooks
Pro (L3)
Outbound webhook subscriptions are a Pro feature.
Join the developer waitlist
The API is in early access. Tell us what you're building and we'll email you when your access opens.