List projects for a client
Find assigned, unarchived projects for a client in the key’s workspace.
GET /api/v1/projects
Required scope: projects:read
Returns the user's assigned, unarchived projects under the requested unarchived client. Results sort by client name and project name.
Request
Requires bearer authentication and projects:read. The query parameter clientId is a required UUID. Missing, empty, or non-UUID input returns 400 INVALID_REQUEST. No request body or pagination.
curl "https://www.tracktimer.app/api/v1/projects?clientId=11111111-1111-4111-8111-111111111111" \
--header "Authorization: Bearer $TRACKTIMER_API_KEY"
Response — 200
projects: array, possibly empty.projects[].id: project UUID.projects[].clientId: parent client UUID.projects[].name: nonempty project name.
{
"projects": [
{
"id": "22222222-2222-4222-8222-222222222222",
"clientId": "11111111-1111-4111-8111-111111111111",
"name": "Website refresh"
}
]
}
A valid UUID with no visible matches returns {"projects":[]}, including unknown, inaccessible, or archived clients. Discovery checks assignment and archive state; starting also needs the member's rate setup. A discovery result alone does not guarantee start will succeed. See shared errors.