External References API
external_reference links a time entry to the item it was logged against in another system, such as a ticket, issue, or task. It works like Harvest’s field of the same name. Send it as a JSON object on create (POST) or update (PATCH). Any other value is rejected with external_reference must be an object.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The item’s ID in the other system, up to 255 characters |
permalink |
string | No | Full http:// or https:// URL to the item, up to 2048 characters |
service |
string | No | Identifier for the other system, usually its domain, such as tracker.example.com |
service_name |
string | No | Display name for the other system, such as Internal Tracker |
group_id |
string | No | ID of the containing group, such as a project or board |
account_id |
string | No | ID of the account or instance in the other system |
display_name |
string | No | Title of the item, shown as a tooltip in Keito |
group_name |
string | No | Name of the containing group |
parent_id |
string | No | ID of the item’s immediate parent, such as a list or epic |
curl -X POST https://app.keito.ai/api/v2/time_entries \
-H "Authorization: Bearer kto_xxxxx" \
-H "Keito-Account-Id: your_company_id" \
-H "Content-Type: application/json" \
-d '{
"project_id": "project_id_here",
"task_id": "task_id_here",
"spent_date": "2026-09-24",
"hours": 1.25,
"external_reference": {
"id": "ABC-123",
"permalink": "https://tracker.example.com/items/ABC-123",
"service": "tracker.example.com",
"service_name": "Internal Tracker",
"display_name": "Quarterly reporting export"
}
}'
Keito shows the reference as a small chip, for example Internal Tracker #ABC-123, on the entry in the Day view, in the time entry dialog, and in the Detailed Time report. When permalink is set, the chip opens that URL in a new tab. The Detailed Time export includes an External Reference URL column. Time entry responses return the stored object, or null when there is none.
The zendesk.com and basecamp.com services are reserved for Keito’s built-in Zendesk and Basecamp integrations and require those integrations to be enabled. Use your own service identifier for other systems.
To remove a reference, call DELETE /api/v2/time_entries/:id/external_reference, which returns 204 No Content. Locked entries cannot be changed.
Filter by External Reference
GET /api/v2/time_entries accepts external_reference_id and external_reference_service, which must be sent together, to find the time logged against one item. See List Time Entries.