Get a legal entity
Returns one legal entity by its integer LegalEntityID.
Returns the legal entity with its currency and default country. An unknown ID does NOT fail: it returns 200 with an empty object. Treat LegalEntityID 0 in the response as "not found".
Use it to:
- Resolve User.LegalEntityID to the company name and currency
Behaviour:
- Idempotent.
- Safe to retry.
- Changes are visible to the next read immediately.
Call first: GET /v1/legal-entity
See also: GET /v1/legal-entity/system
curl -X GET "https://app3.timelog.com/your-account/api/v1/legal-entity/123" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://app3.timelog.com/your-account/api/v1/legal-entity/123"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://app3.timelog.com/your-account/api/v1/legal-entity/123", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://app3.timelog.com/your-account/api/v1/legal-entity/123", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://app3.timelog.com/your-account/api/v1/legal-entity/123')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"Properties": {
"LegalEntityID": 0,
"Name": null,
"IsActive": false,
"ID": "00000000-0000-0000-0000-000000000000",
"CurrencyID": 0,
"CurrencyISO": null,
"CountryISO": null,
"IsSystemLegalEntity": false
},
"Links": [
{
"Href": "https://app{server-number}.timelog.com/{account}/api/v1/legal-entity/99999999",
"Rel": "self"
}
]
}
{
"Code": 200,
"Details": [
"The value 'not_an_integer' is not valid for Int32."
],
"Message": "Invalid model state error.",
"Parameters": "legalEntityId: null",
"Url": "https://app{server-number}.timelog.com/{account}/api/v1/legal-entity/not_an_integer"
}
{
"error": "Unauthorized",
"message": "Authentication required. Please provide a valid API token",
"code": 401
}
/v1/legal-entity/{legalEntityId}Target server for requests. Edit to use your own host.
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.
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.LegalEntityID. The route has no {int} constraint; a non-integer gets 400.
Request Preview
Response
Response will appear here after sending the request
Authentication
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
LegalEntityID. The route has no {int} constraint; a non-integer gets 400.
Responses
A legal entity is a company inside one TimeLog account (multi-company set-up, feature MultiLegalEntities). Every user, and therefore every employee, belongs to exactly one legal entity; hourly rates and cost prices are defined per legal entity, and the legal entity's currency is the currency its users' amounts are reported in. Every account has exactly one system (default) legal entity, also when MultiLegalEntities is off.
Not yet documented: description.