Time Data · Timeglass API
Tracked activities, their fine-grained items, member-day timesheets built from them, and the raw minute log with its screenshots.
List Activities
GET /v1/activities
Activity records: one row per member, day, and project grouping, with AI-written objectives. Durations are minutes of tracked work.
Query parameters
limit· integercursor· stringstart· string · date (YYYY-MM-DD)end· string · date (YYYY-MM-DD)member_id· stringteam_id· string · uuidproject_id· string · uuidclient_id· string · uuidcategory_id· string · uuid
Response 200
data· array of object · requiredactivity_id· string · uuid · requiredmember_id· string · requireddate· string · requiredteam_id· string · uuid · nullable · requiredproject_id· string · uuid · nullable · requiredclient_id· string · uuid · nullable · requiredcategory_id· string · uuid · nullable · requiredobjective· string,null · requiredduration_minutes· number · requiredactivity_item_count· number,null · requiredlatest_activity_at· string,null · requiredreview_status· string,null · required
next_cursor· string,null · required
curl "https://api.timeglass.ai/v1/activities" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY"
Get an Activity
GET /v1/activities/{activityId}
Path parameters
activityId· string · uuid · required
Response 200
activity_id· string · uuid · requiredmember_id· string · requireddate· string · requiredteam_id· string · uuid · nullable · requiredproject_id· string · uuid · nullable · requiredclient_id· string · uuid · nullable · requiredcategory_id· string · uuid · nullable · requiredobjective· string,null · requiredduration_minutes· number · requiredactivity_item_count· number,null · requiredlatest_activity_at· string,null · requiredreview_status· string,null · requiredactions· string,null · requiredkey_details· string,null · required
curl "https://api.timeglass.ai/v1/activities/4bfe4a4b-c86b-4b8e-b3f5-3d1c4a2e9f10" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY"
Update an Activity
PATCH /v1/activities/{activityId}
Requires a key with the read_write scope.
Moves an activity to a project, or to a client with no project. Set one of the two and the other is cleared. Set both to null to leave the time unassigned. A field you leave out keeps its value. Approved activities can be moved too. They stay approved, and approved-time webhooks fire.
Path parameters
activityId· string · uuid · required
Request body
project_id· string · uuid · nullableclient_id· string · uuid · nullable
Response 200
activity· object · requiredactivity_id· string · uuid · requiredmember_id· string · requireddate· string · requiredteam_id· string · uuid · nullable · requiredproject_id· string · uuid · nullable · requiredclient_id· string · uuid · nullable · requiredcategory_id· string · uuid · nullable · requiredobjective· string,null · requiredduration_minutes· number · requiredactivity_item_count· number,null · requiredlatest_activity_at· string,null · requiredreview_status· string,null · required
curl -X PATCH "https://api.timeglass.ai/v1/activities/4bfe4a4b-c86b-4b8e-b3f5-3d1c4a2e9f10" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
List Activity Items
GET /v1/activities/{activityId}/items
The fine-grained work segments inside one activity, in chronological order: what was worked on, in which apps, for how long.
Path parameters
activityId· string · uuid · required
Query parameters
limit· integercursor· string
Response 200
data· array of object · requiredactivity_item_id· string · uuid · requiredstart_time· string · requiredend_time· string,null · requiredduration_minutes· number · requiredobjective· string,null · requiredactions· string,null · requiredkey_details· string,null · requiredapps· array of string · nullable · required
next_cursor· string,null · required
curl "https://api.timeglass.ai/v1/activities/4bfe4a4b-c86b-4b8e-b3f5-3d1c4a2e9f10/items" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY"
List Timesheets
GET /v1/timesheets
One timesheet per member per day: the day’s activities plus roll-up metadata (total time, review status). A timesheet is approved once every activity in it is approved. For finer slicing (by project, client, or category), query /v1/activities.
Query parameters
limit· integercursor· stringstart· string · date (YYYY-MM-DD)end· string · date (YYYY-MM-DD)member_id· stringstatus· string · One of:pending,approved
Response 200
data· array of object · requiredmember_id· string · requireddate· string · requiredstatus· string · required · One of:pending,approvedapproved_at· string,null · requiredtotal_duration_minutes· number · requiredactivity_count· number · requiredactivities· array of object · requiredactivity_id· string · uuid · requiredteam_id· string · uuid · nullable · requiredproject_id· string · uuid · nullable · requiredclient_id· string · uuid · nullable · requiredcategory_id· string · uuid · nullable · requiredobjective· string,null · requiredduration_minutes· number · requiredstatus· string · required · One of:pending,approved
next_cursor· string,null · required
curl "https://api.timeglass.ai/v1/timesheets" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY"
List Minutes
GET /v1/minutes
The raw minute-by-minute log, oldest first: one row per tracked minute per member, with a summary of what they were doing and how many screenshots were kept. Filter by a time range (`start` inclusive, `end` exclusive, ISO 8601), member and team. Minutes in activity items a member hid are left out, so a page can hold fewer than `limit` rows; keep paging until `next_cursor` is null. Fetch a minute's screenshots with `GET /v1/minutes/{minuteId}/screenshots`.
Query parameters
limit· integercursor· stringstart· string · timestampend· string · timestampmember_id· stringteam_id· string · uuid
Response 200
data· array of object · requiredminute_id· string · uuid · requiredmember_id· string · requiredteam_id· string · uuid · nullable · requiredwork_timestamp· string · requiredwork_timestamp_local· string,null · requiredtimezone· string,null · requiredsummary· string,null · requiredprimary_activity· string,null · requiredprimary_app· string,null · requiredactions· string,null · requiredkey_details· string,null · requiredscreen_locked· boolean,null · requiredscreenshot_count· number · required
next_cursor· string,null · required
curl "https://api.timeglass.ai/v1/minutes" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY"
Get a Minute's Screenshots
GET /v1/minutes/{minuteId}/screenshots
Signed download URLs for one minute's screenshots, valid for one hour. Screenshots withheld at capture as sensitive come back with `redacted: true` and no URL. Returns 403 `screenshots_unavailable` when the workspace has screenshot review off, limits screenshots to their owner, or keeps no data. To export a range, list minutes with `GET /v1/minutes` and call this for each minute with `screenshot_count` above 0.
Path parameters
minuteId· string · uuid · required
Response 200
minute_id· string · uuid · requiredexpires_at· string,null · requiredscreenshots· array of object · requiredurl· string,null · requiredredacted· boolean · requiredcaptured_at· string,null · requiredscreen_index· number · requiredtotal_screens· number · requiredis_active_screen· boolean · required
curl "https://api.timeglass.ai/v1/minutes/4bfe4a4b-c86b-4b8e-b3f5-3d1c4a2e9f10/screenshots" \
-H "Authorization: Bearer $TIMEGLASS_API_KEY"