GetEmployeesPaged
Organisation service 1.9: Returns one page of the account's employees - active first, then inactive - as full Employee records.
| Service | Organisation 1.9 |
| Endpoint | POST https://app{server-number}.timelog.com/{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc |
| SOAPAction | http://www.timelog.com/api/tlp/v1_9/OrganisationService/GetEmployeesPaged |
| Content-Type | text/xml; charset=utf-8 |
| Authentication | A token from GetToken |
| Permissions | The result includes private address / telephone and cost price / hourly rate of every employee. |
| Changes data | No |
| Safe to retry | Yes |
| Paging | Yes, up to 100 per page |
How it works
Loads EVERY employee of the account, converts each to an Employee record, and only then cuts out the requested page. Each call therefore costs the whole employee list, whatever the page size. API users, system users and other non-employee user types are not included. There is no filter, no 'modified since' and no scoping to the caller - every caller sees every employee.
Parameters
Each parameter has one label: Required, Conditional (required depending on other values) or Optional. Send them in the order shown.
1-based page number. 0 or negative behaves like 1. Beyond the last page -> empty Return.
Employees per page; values above 100 are silently capped at 100. 0 or negative -> empty Return and a meaningless TotalPageCount.
The token from GetToken: Initials, Expires and Hash, sent back unchanged.
Request
POST /{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc HTTP/1.1
Host: app{server-number}.timelog.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.timelog.com/api/tlp/v1_9/OrganisationService/GetEmployeesPaged"
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:org="http://www.timelog.com/api/tlp/v1_9"
xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
<soapenv:Body>
<org:GetEmployeesPaged>
<org:page>1</org:page>
<org:pageSize>100</org:pageSize>
<org:token>
<tok:Initials>{Initials from GetToken}</tok:Initials>
<tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
<tok:Hash>{Hash from GetToken}</tok:Hash>
</org:token>
</org:GetEmployeesPaged>
</soapenv:Body>
</soapenv:Envelope>
curl -X POST "https://app{server-number}.timelog.com/{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc" \
-H "Content-Type: text/xml; charset=utf-8" \
-H 'SOAPAction: "http://www.timelog.com/api/tlp/v1_9/OrganisationService/GetEmployeesPaged"' \
--data-binary @request.xml
import requests
URL = "https://app{server-number}.timelog.com/{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc"
SOAP_ACTION = '"http://www.timelog.com/api/tlp/v1_9/OrganisationService/GetEmployeesPaged"'
envelope = """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:org="http://www.timelog.com/api/tlp/v1_9"
xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
<soapenv:Body>
<org:GetEmployeesPaged>
<org:page>1</org:page>
<org:pageSize>100</org:pageSize>
<org:token>
<tok:Initials>{Initials from GetToken}</tok:Initials>
<tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
<tok:Hash>{Hash from GetToken}</tok:Hash>
</org:token>
</org:GetEmployeesPaged>
</soapenv:Body>
</soapenv:Envelope>"""
response = requests.post(
URL,
data=envelope.encode("utf-8"),
headers={"Content-Type": "text/xml; charset=utf-8", "SOAPAction": SOAP_ACTION},
timeout=60,
)
result = parse_result(response) # see "Responses and errors"
{…} placeholder with your own value.Response
The call returns the standard response envelope. Check ResponseState first: a failed call still returns HTTP 200.
Success, Invalid or Error.
0 on success, otherwise the error code. See Errors.
Number of pages for the whole result with your pageSize. Keep calling with page + 1 until you have read them all.
Response<Employee>: one page of full employee records; IsReturnPaged = true; TotalPageCount = ceiling. One 'Successfully called' message. ResponseState Success, empty Return, TotalPageCount 0.
Example response
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetEmployeesPagedResponse xmlns="http://www.timelog.com/api/tlp/v1_9">
<GetEmployeesPagedResult xmlns:a="http://api.timelog.com"
xmlns:b="http://www.timelog.com/api/tlp/v1_9"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Return>
<b:Employee>
<a:Action>Original</a:Action>
<a:IsCustomFieldsLoaded>false</a:IsCustomFieldsLoaded>
<a:CustomFields i:nil="true"/>
<a:IsExternalKeysLoaded>false</a:IsExternalKeysLoaded>
<a:ExternalKeys i:nil="true"/>
<b:ID>3f2504e0-4f89-41d3-9a0c-305000000001</b:ID>
<b:EmployeeID>1001</b:EmployeeID>
<b:UserName>Example user</b:UserName>
<b:Initials>ABC</b:Initials>
<b:FirstName>Example first</b:FirstName>
<b:LastName>Example last</b:LastName>
<b:Fullname>Example</b:Fullname>
<b:EmployeeNo>1001</b:EmployeeNo>
<b:Title>Example</b:Title>
<b:DepartmentGuid>3f2504e0-4f89-41d3-9a0c-305000000002</b:DepartmentGuid>
<b:DepartmentName>Example department</b:DepartmentName>
<b:DepartmentNo>1001</b:DepartmentNo>
<b:InterfaceLanguage>0</b:InterfaceLanguage>
<b:Telephone>+45 00 00 00 00</b:Telephone>
<b:Mobile>+45 00 00 00 00</b:Mobile>
<b:PrivateAddress>Example</b:PrivateAddress>
<b:PrivateZip>Example</b:PrivateZip>
<b:PrivateCity>Copenhagen</b:PrivateCity>
<b:PrivateTelephone>+45 00 00 00 00</b:PrivateTelephone>
<b:ExternalIdentifier>Example</b:ExternalIdentifier>
<b:HiredDate>2026-10-01T00:00:00</b:HiredDate>
<b:TerminationDate>2026-10-01T00:00:00</b:TerminationDate>
<b:IsHired>false</b:IsHired>
<b:IsLocked>false</b:IsLocked>
<b:CostPriceGuid>3f2504e0-4f89-41d3-9a0c-305000000003</b:CostPriceGuid>
<b:CostPrice>0</b:CostPrice>
<b:HourlyRateGuid>3f2504e0-4f89-41d3-9a0c-305000000004</b:HourlyRateGuid>
<b:HourlyRate>0</b:HourlyRate>
<b:SalaryGroupID>1001</b:SalaryGroupID>
</b:Employee>
</a:Return>
<a:ReturnTypeDescription>Employee</a:ReturnTypeDescription>
<a:Request>…</a:Request>
<a:ResponseState>Success</a:ResponseState>
<a:Messages>
<a:APIMessage>
<a:Message>Duration of call was 0,0421337 sec.</a:Message>
<a:Severity>Message</a:Severity>
<a:ErrorCode>0</a:ErrorCode>
</a:APIMessage>
</a:Messages>
<a:ErrorCode>0</a:ErrorCode>
<a:IsReturnPaged>true</a:IsReturnPaged>
<a:TotalPageCount>1</a:TotalPageCount>
</GetEmployeesPagedResult>
</GetEmployeesPagedResponse>
</s:Body>
</s:Envelope>
Request block is shortened.Errors
All errors come back with HTTP 200: check ResponseState, ErrorCode and Messages. The errors every operation can return (expired or invalid token, API not enabled, HTTPS required, general errors) are listed once in Responses and errors.
Errors specific to this operation:
| ResponseState | ErrorCode | Message | What it means | What to do |
|---|---|---|---|---|
| Invalid | 15000 | An error occurred when trying to retrieve all employees. Try again and if the issue persists contact support. | Data-layer failure while loading employees. | Retry later; contact support if it persists. |