The Templio API.
Read and write placements, contractors and clients, and read timesheets and invoices. Available on Scale and Enterprise.
Authentication
Send an API key as a bearer token: Authorization: Bearer tpl_…. Agency admins create keys in Settings, Developers, and choose the scopes each key may use.
The API is part of the Scale and Enterprise plans. An agency on Core receives 403 plan_required.
Base URL: https://templio.co.uk/api/v1
Endpoints
| Method | Path | Scope | Summary |
|---|---|---|---|
| GET | /placements | placements:read | List placements |
| GET | /placements/{id} | placements:read | Get a placement |
| POST | /placements | placements:write | Create a placement |
| PATCH | /placements/{id} | placements:write | Update a placement |
| GET | /contractors | contractors:read | List contractors |
| GET | /contractors/{id} | contractors:read | Get a contractor |
| POST | /contractors | contractors:write | Create a contractor |
| PATCH | /contractors/{id} | contractors:write | Update a contractor |
| GET | /clients | clients:read | List clients |
| GET | /clients/{id} | clients:read | Get a client |
| POST | /clients | clients:write | Create a client |
| PATCH | /clients/{id} | clients:write | Update a client |
| GET | /timesheets | timesheets:read | List timesheets |
| GET | /timesheets/{id} | timesheets:read | Get a timesheet |
| GET | /invoices | invoices:read | List invoices |
| GET | /invoices/{id} | invoices:read | Get an invoice |
The machine-readable OpenAPI 3.1 description is at /api/v1/openapi.json.
Rate limits
Scale: 600 requests per minute per agency. Enterprise: 3,000 requests per minute. Responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit you receive 429 with Retry-After.
Idempotency
Send an Idempotency-Key header on POST requests. A key is remembered for 24 hours: repeating the same request replays the original response with Idempotent-Replayed: true. Reusing a key with a different body returns 422, a repeat while the first request is still running returns 409, and 503 means the store is unavailable and the request was not attempted.
Errors
Every error is JSON with a stable code, a message and a request_id.
| Code | HTTP status |
|---|---|
| unauthorized | 401 |
| plan_required | 403 |
| rate_limited | 429 |
| rate_limiter_unavailable | 503 |
| insufficient_scope | 403 |
| invalid_request | 400 |
| payload_too_large | 413 |
| invalid_reference | 422 |
| invalid_state | 422 |
| conflict | 409 |
| subscription_inactive | 402 |
| idempotency_key_reused | 422 |
| idempotency_in_progress | 409 |
| idempotency_unavailable | 503 |
| not_found | 404 |
| internal_error | 500 |
Versioning
The version is in the path (/v1) and in the Templio-Version response header (currently 2026-10-02). Breaking changes ship only in /v2; /v1 is retired with at least six months' notice.
Webhooks
Coming Webhooks are not available yet.