List my time logs
/v1/me/time-logs in the Time Logs API.
curl "https://api.example.test/v1/me/time-logs?from=2026-11-02" \ -H "Authorization: Bearer $TOKEN"One page of the token holder's own logs across the projects the token may see, with the same filters as a project's list.
Requires ability
The token must hold this ability, or the call is refused with 403.
MCP tool
Runs the same action from an agent, behind the same ability.
Authorization
bearerToken A personal access token minted in the app under Account Settings, then API Tokens, sent as Authorization: Bearer zg_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team, and optionally to one project, at mint time.
In: header
Query Parameters
Narrow to the time one person worked.
uuidNarrow to the time on one item.
uuidNarrow to one kind: development, review, testing, analysis, meeting, support, deployment or other.
True for billable time only, false for the rest.
How the logs came to be: manual, timer or import.
The first day to include, Y-m-d.
dateThe last day to include, Y-m-d.
dateTrue for the logs an approved timesheet holds, false for the ones still open.
Words the note, the item's reference or its title must contain, up to 120 characters.
length <= 120The 1-based page to return. A page past the last answers an empty data array with meta.total still filled, so a loop can stop without guessing.
1 <= value1Rows per page, 1 to 100. A higher value clamps to the cap silently. Defaults to 50.
1 <= value <= 10050The column to order by. Defaults to created_at; a column the endpoint does not offer falls back to the default rather than failing.
"created_at"asc or desc. Defaults to desc.
"desc"Value in
- "asc"
- "desc"
Alias of per_page, kept for clients that send it. per_page wins when both are sent.
1 <= value <= 100Responses
200OKapplication/json
One page of the token holder's own logs across the projects the token may see.
401UnauthorizedAUTHENTICATION_REQUIREDapplication/json
The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (a zg_test_ token on production).
403ForbiddenTOKEN_MISSING_ABILITYapplication/json
The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who registered a row answers FORBIDDEN with the same status, and says so in its own description.
On this endpoint: FORBIDDEN: when the token is a client guest's.
422Validation failedVALIDATION_FAILEDapplication/json
The payload broke a rule, and error.fields maps each offending key to its messages. A refusal from the domain, such as a role code already taken or a team the caller does not own, uses the same code with error.message saying why and no fields.
429Too many requestsRATE_LIMITEDapplication/json
The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.
How is this guide?
Last updated on
Time Logs API
A time log is a stretch of time a person spent on a work item on one day: the minutes, what the work was (development, review, testing, analysis, meeting, support, deployment or other), whether it bills, a note, and how the log came to be, typed in, measured by the timer or imported.
Get my running timer
/v1/me/timer in the Time Logs API.