The Examply API lets you read and write projects, tasks, and teams programmatically — useful for custom integrations, internal tooling, or migrating data at scale. This article walks through authentication and your first few requests.
Note: The API is available on the Starter, Pro, and Enterprise plans. It's not available on the Free plan.
Creating an API token
Go to workspace settings and open Developers.
Click Generate token and give it a name that identifies what it's for.
Copy the token immediately — Examply only shows it once.
Store the token as a secret in whatever system calls the API. Never commit it to a repository.
Making your first request
All requests go to https://api.examply.com/v1 and use a bearer token in the Authorization header:
curl https://api.examply.com/v1/projects
-H "Authorization: Bearer $EXAMPLY_TOKEN"
A successful response returns a JSON array of the projects your token can see. To list tasks for one project, pass a query parameter:
curl https://api.examply.com/v1/tasks
-H "Authorization: Bearer $EXAMPLY_TOKEN"
-G --data-urlencode "project_id=proj_9f21"
Core endpoints
Endpoint | Method | Description |
/v1/projects | GET, POST | List or create projects |
/v1/tasks | GET, POST, PATCH | List, create, or update tasks |
/v1/teams | GET | List teams and their members |
/v1/timesheets | GET | Read time entries for a date range |
/v1/webhooks | GET, POST, DELETE | Manage webhook subscriptions |
Rate limits
Requests are limited per token, per minute. Every response includes headers you can use to back off before hitting the limit:
X-RateLimit-Limit— requests allowed per minuteX-RateLimit-Remaining— requests left in the current windowX-RateLimit-Reset— seconds until the window resets
A request that exceeds the limit returns a 429 status. Retry after the window resets rather than immediately re-sending.
Pagination
List endpoints like /v1/projects and /v1/tasks return up to 50 records per page. Pass a page query parameter to fetch the next page, and check the has_more field in the response to know when to stop:
curl https://api.examply.com/v1/tasks
-H "Authorization: Bearer $EXAMPLY_TOKEN"
-G --data-urlencode "project_id=proj_9f21" --data-urlencode "page=2"
Handling errors
The API returns standard HTTP status codes along with a JSON body describing what went wrong:
Status | Meaning |
400 | Malformed request — check required fields and types |
401 | Missing or invalid bearer token |
403 | Token doesn't have access to the requested resource |
404 | The project, task, or team doesn't exist or isn't visible to this token |
429 | Rate limit exceeded — back off and retry |
Next steps
Pair the API with webhooks to react to changes in real time instead of polling — see the Zapier and webhooks article in Integrations for the event payload format. For anything the API doesn't cover yet, email support@examply.com.
