ProjectsGet external keys of a project

Get external keys of a project

Lists the external-system keys stored on a project, or returns the key for one external system.

Two C# actions share this route; the response shape depends on whether externalSystemID is sent (list envelope without it, single envelope with it). Keys are stored per (external system, project) under DomainType 51, separately from time-registration keys.

Use it to:

  • Trace a TimeLog project back to the record it was synced from (ERP, CRM, PSA)

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Changes are visible to the next read immediately.

Call first: GET /v1/project/get-all

Next: PUT /v1/project/{projectID}/external-keys

See also: GET /v1/time-registration/{timeRegistrationID}/external-keys

Not yet documented: response → variants.

curl -X GET "https://app3.timelog.com/your-account/api/v1/project/123/external-keys?externalSystemID=123&$page=1&$pagesize=10" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Properties": {
    "TotalRecord": "0",
    "TotalPage": "0",
    "PageNumber": "1"
  },
  "Links": [
    {
      "Href": "https://app{server-number}.timelog.com/{account}/api/v1/project/1/external-keys",
      "Rel": "self"
    }
  ]
}
GET
/v1/project/{projectID}/external-keys
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.
path
projectIDinteger
Required

Route constraint :int.

query
externalSystemIDinteger

When present, returns the single key for that system instead of the list.

query
$pageinteger

Page number.

query
$pagesizeinteger

Page size. No maximum in the API layer.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp).

The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user.

Not yet documented: how to obtain a token.

Not yet documented: token lifetime.

Path Parameters

projectIDinteger
Required

Route constraint :int.

Query Parameters

externalSystemIDinteger

When present, returns the single key for that system instead of the list.

$pageinteger

Page number.

$pagesizeinteger

Page size. No maximum in the API layer.

Responses

Entitiesarray

Omitted (not []) when the list is empty.

Linksarray