{ "aid": "clockodo.com:clockodo-api-2026-03-24", "name": "Clockodo API Documentation", "type": "Index", "description": "# Clockodo REST API\n\nOur API opens Clockodo for other systems. Billing and project management applications or custom shell scripts, for example, are useful mash-ups with Clockodo.\n\nAs a REST API, the interface allows you to query and modify Clockodo data and control the clock via HTTP in JSON format.\n\n## Legacy API Documentation\n\nIf you're still using an earlier version of any of our API endpoints, you can find the corresponding documentation here: [Clockodo Legacy API Documentation](https://www.clockodo.com/api/)\n\nPlease note that this documentation is no longer actively updated. Please update your integrations by May 1, 2026, and migrate to the latest API endpoints documented here to benefit from improved features and ongoing support:\n\n| Deprecated endpoint | Successor |\n|----------------------------------------------|---------------------------------------------------------------------------------------------------------------|\n| api/absences | [api/v4/absences](./#tag/Absence) |\n| api/customers | [api/v3/customers](./#tag/Customer) |\n| api/v2/customers/countProjects | [api/v3/customers/countProjects](./#tag/Customer/operation/getCustomersCountProjectsV3) |\n| api/entries | [api/v2/entries](./#tag/Entry) |\n| api/holidaysquota | [api/v2/holidaysQuota](./#tag/HolidayQuota) |\n| api/lumpsumservices | [api/v4/lumpSumServices](./#tag/LumpSumService) |\n| api/services | [api/v4/services](./#tag/Service) |\n| api/users | [api/v3/users](./#tag/User) |\n| api/users/me | [api/v4/users/me](./#tag/User/operation/getUsersMeV4) |\n| api/v2/absences | [api/v4/absences](./#tag/Absence) |\n| api/v3/absences | [api/v4/absences](./#tag/Absence) |\n| api/v2/aggregates/users/me | [api/v4/users/me](./#tag/User/operation/getUsersMeV4) |\n| api/v2/customers | [api/v3/customers](./#tag/Customer) |\n| api/v2/entriesTexts | [api/v3/entriesTexts](./#tag/EntryText) |\n| api/holidayscarry | [api/v3/holidaysCarry](./#tag/HolidayCarryover) |\n| api/v2/lumpsumservices | [api/v4/lumpSumServices](./#tag/LumpSumService) |\n| api/v3/lumpsumservices | [api/v4/lumpSumServices](./#tag/LumpSumService) |\n| api/nonbusinessdays | [api/v2/nonbusinessDays](./#tag/NonbusinessDay) |\n| api/nonbusinessgroups | [api/v2/nonbusinessGroups](./#tag/NonbusinessGroup) |\n| api/overtimecarry | [api/v3/overtimeCarry](./#tag/OvertimeCarry) |\n| api/v2/projects | [api/v4/projects](./#tag/Project) |\n| api/v2/services | [api/v4/services](./#tag/Service) |\n| api/v3/services | [api/v4/services](./#tag/Service) |\n| api/v2/teams | [api/v3/teams](./#tag/Team) |\n| api/v2/users | [api/v3/users](./#tag/User) |\n| api/v2/users/me | [api/v4/users/me](./#tag/User/operation/getUsersMeV4) |\n| api/v2/workTimes/changeRequests/{id}/approve | [api/v3/workTimes/changeRequests/{id}/approve](./#tag/WorkTime/operation/approveWorkTimesChangeRequestByIdV3) |\n\n## URL of the Clockodo API\n\nYou can access our API via the following URL:\n\n```text\nhttps://my.clockodo.com/api/[resource type]\n```\n\nThe resource type represents a class of your data.\n\nOnce you request a specific resource, for example, query information about exactly one entity, you can use the following URL:\n\n```text\nhttps://my.clockodo.com/api/[resource type]/[resource ID]\n```\n\nIn the following sections of this documentation, you will find more detailed descriptions of the available endpoints for each resource type. For example, under [Entry](./#tag/Entry) you will find detailed information on how you can manage time entries in your Clockodo environment.\n\n## HTTP Verbs\n\nTo tell the API which operations you want to perform on the resources, the so-called verbs of the HTTP protocol are used. The following operations are usually possible:\n\n| HTTP Verb | Description |\n|-----------------------------|-----------------------------------------------------------------|\n| `GET` | Query a list of all the resources of the selected resource type |\n| `GET` (with resource ID) | Query exactly one resource |\n| `POST` | Create a new resource |\n| `PUT` (with resource ID) | Update or edit a resource |\n| `DELETE` (with resource ID) | Delete a resource |\n\n## Authentication\n\nEach Clockodo user has his personal API access, which takes into account the user's access rights. You can find your API key under the menu item \"Personal data\" in your Clockodo account.\n\nTo gain access to your data via the API, you must authenticate yourself to the API using the API key. There are two different ways to do this:\n\n**Via the following HTTP headers:**\n\n```http\nX-ClockodoApiUser: [email address]\nX-ClockodoApiKey: [API key]\n```\n\n**Or using the basic authentication of the HTTP protocol:**\n\n```http\nUser: [email address]\nPassword: [API key]\n```\n\n## Client identification\n\nEach request to our API must contain an identification of the calling application, including the email address of a technical contact person. For this, the following HTTP header must be used:\n\n```http\nX-Clockodo-External-Application: [name of application or company];[email address]\n```\n\n**Example:**\n\n```http\nX-Clockodo-External-Application: Clockodo;admin@clockodo.com\n```\n\n## Localization: Language & formats\n\nSome response values of the API are localized. For example, texts describing dates, error messages, etc. \nIn order to switch between available languages (`en`, `de`, `fr`), use the following HTTP header:\n\n```http\nAccept-Language: en\n```\n\n## Response codes\n\nThe API responds to requests with the status codes of the HTTP protocol. In the event of errors, you will also find additional error information in the response.\n\n| Status Code | Meaning |\n| ----------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| `200` | OK – The request was successful |\n| `400` | Bad Request – The request was defective (e.g. missing parameter) |\n| `401` | Unauthorized – Authentication failed |\n| `403` | Forbidden – Insufficient access rights for the requested resource |\n| `404` | Not Found – The requested resource was not found |\n| `405` | Method Not Allowed – The requested endpoint cannot be used |\n| `409` | Conflict – A resource with the data already exists |\n| `422` | Unprocessable Entity - The server understands the content type but cannot process the instructions (validation or semantic errors) |\n| `429` | Too Many Requests – Too many requests to an endpoint in a certain period of time |\n| `500` | Internal Server Error – An unknown error occurred |\n\n## Rate Limits\n\nTo maintain platform stability, ensure fair usage across all customers, and protect overall performance, the Clockodo API enforces tiered rate limits. If a limit is exceeded, the request is rejected with HTTP 429 (Too Many Requests). You should implement backoff and retry logic.\n\nCurrent default limits per authenticated user:\n\n| Window | Limit |\n| ---------- |-----------------|\n| 1 minute | 900 requests |\n| 15 minutes | 2,250 requests |\n| 1 hour | 4,500 requests |\n| 1 day | 20,000 requests |\n\nBest practices:\n\n- Design idempotent operations so safe retries are possible after 429.\n- Distribute bursts evenly instead of sending large spikes.\n- Use pagination and filtering to reduce unnecessary payloads.\n- Cache stable data (e.g. metadata lists) instead of re-fetching every request.\n- Only request fields and endpoints actually needed by your workflow.\n\nIf you hit a limit:\n\n1. Respect any Retry-After header if present.\n2. Apply exponential backoff (e.g. 1s, 2s, 4s...) up to a sensible cap.\n3. Reduce concurrency and throttle subsequent batches.\n\nContact support if your sustained legitimate usage regularly requires higher thresholds.\n\n## Page-by-page output\n\nCertain resources such as [entries](./#tag/Entry), [customers](./#tag/Customer) and [projects](./#tag/Project) can return a lot of data. Therefore, a “page-by-page output” is active for these resources, meaning the number of elements returned per call is limited.\n\nYou can use the additional request parameter `page` to access further elements.\n\n```http\npage=[integer]\n```\n\n**Additional content of the response:**\n\n```json\n\"paging\": {\n \"items_per_page\": [integer],\n \"current_page\": [integer],\n \"count_pages\": [integer],\n \"count_items\": [integer]\n}\n```\n\n## Example calls\n\n**Example: Retrieve all services with cURL using basic authentication:**\n\n```bash\ncurl -v \\\n -X GET \\\n -u [email address]:[API key] \\\n -H 'X-Clockodo-External-Application: [name of application];[email address]' \\\n 'https://my.clockodo.com/api/v4/services'\n```\n\n**Example: Retrieve all services with cURL using authentication via the HTTP header:**\n\n```bash\ncurl -v \\\n -X GET \\\n -H 'X-ClockodoApiUser: [email address]' \\\n -H 'X-ClockodoApiKey: [API key]' \\\n -H 'X-Clockodo-External-Application: [name of application];[email address]' \\\n 'https://my.clockodo.com/api/v4/services'\n```\n\n**Example: Create a service:**\n\n```bash\ncurl -v \\\n -X POST \\\n -H 'X-ClockodoApiUser: [email address]' \\\n -H 'X-ClockodoApiKey: [API key]' \\\n -H 'X-Clockodo-External-Application: [name of application];[email address]' \\\n --data \"name=Test Service\" \\\n 'https://my.clockodo.com/api/v4/services'\n```\n\n# Clockodo Webhooks\n\nWebhooks make it possible to react to events in Clockodo in real time. When a defined event occurs, our system automatically sends an HTTP POST request to a URL you specify. \nThis allows you to trigger your own workflows or automate and synchronize external systems.\n\n## Supported Webhook Events\n\nSupported webhook events are documented under [Webhooks](./#tag/Webhook).\n\n## Creating and Editing a Webhook\n\nYou can create a new webhook or edit an existing one via the _Webhooks_ section in the Clockodo menu. \nSimply select the desired event (see table above), enter the target URL and a token.\n\n### Webhook Validation\n\nA webhook must be validated when it is initially created or its URL is changed. \nThis is as a security measure and ensures that you control the specified target URL.\n\nTo validate the webhook, Clockodo sends a POST request to the URL you provided with the following payload:\n\n```json\n{\n \"secret\": \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"\n}\n```\n\nEnter the received secret into the corresponding input field in Clockodo.\n\n## Webhook Payload\n\nEach webhook call is sent as an HTTP POST request in JSON format to the configured URL. The general structure is as follows:\n\n```json\n{\n \"subscription_id\": 42,\n \"company_id\": 1337,\n \"occurred_at\": \"1986-05-10T17:02:00Z\",\n \"payload\": {\n \"team\": {\n \"id\": 9001\n }\n },\n \"event_name\": \"team.updated\",\n \"token\": \"My_Sup3r_T0k3n\"\n}\n```\n\n- `subscription_id` \n Unique ID of the webhook subscription\n\n- `company_id` \n ID of your company in Clockodo\n\n- `occurred_at` \n Timestamp of the event (ISO 8601, UTC)\n\n- `event_name` \n Type of the triggered event\n\n- `payload` \n Contains the affected entity and its ID\n\n- `token` \n The token you defined when setting up the webhook (used to authenticate incoming requests)\n\nWe only transmit the ID of the created, modified, or deleted entity. **We don't transmit full datasets or deltas**.\n\nThis approach has several advantages:\n\n- **Data security** \n No sensitive or extensive data is transmitted unnecessarily.\n\n- **Actuality of the data** \n After receiving a webhook event, you can **retrieve the current and complete data** via API. \n This prevents inconsistencies that could arise due to parallel changes or delays.\n\n- **Reduced risk of errors** \n For complex or rapidly changing data structures, querying the current state is often more reliable than processing potentially outdated snapshots.\n\n- **Flexibility** \n Your system can decide when and to what extent it needs additional information.\n\n## Best Practices and Recommendations\n\n- **Event validation** \n Always verify the token and structure of incoming webhook data.\n\n- **Idempotency** \n Ensure your systems can correctly handle duplicate or repeated events.\n\n- **Logging** \n Log incoming webhook calls for debugging and traceability purposes.\n", "url": "https://raw.githubusercontent.com/jentic/jentic-public-apis/refs/heads/main/apis/openapi/clockodo.com/clockodo-api/2026-03-24/apis.json", "tags": [ "clockodo.com", "clockodo-api" ], "created": "2026-04-07", "modified": "2026-04-07", "specificationVersion": "0.19", "access": "3rd-Party", "maintainers": [ { "FN": "Jentic", "X-github": "jentic", "url": "https://github.com/jentic" } ], "apis": [ { "aid": "clockodo.com:clockodo-api-2026-03-24", "name": "Clockodo API Documentation", "description": "# Clockodo REST API\n\nOur API opens Clockodo for other systems. Billing and project management applications or custom shell scripts, for example, are useful mash-ups with Clockodo.\n\nAs a REST API, the interface allows you to query and modify Clockodo data and control the clock via HTTP in JSON format.\n\n## Legacy API Documentation\n\nIf you're still using an earlier version of any of our API endpoints, you can find the corresponding documentation here: [Clockodo Legacy API Documentation](https://www.clockodo.com/api/)\n\nPlease note that this documentation is no longer actively updated. Please update your integrations by May 1, 2026, and migrate to the latest API endpoints documented here to benefit from improved features and ongoing support:\n\n| Deprecated endpoint | Successor |\n|----------------------------------------------|---------------------------------------------------------------------------------------------------------------|\n| api/absences | [api/v4/absences](./#tag/Absence) |\n| api/customers | [api/v3/customers](./#tag/Customer) |\n| api/v2/customers/countProjects | [api/v3/customers/countProjects](./#tag/Customer/operation/getCustomersCountProjectsV3) |\n| api/entries | [api/v2/entries](./#tag/Entry) |\n| api/holidaysquota | [api/v2/holidaysQuota](./#tag/HolidayQuota) |\n| api/lumpsumservices | [api/v4/lumpSumServices](./#tag/LumpSumService) |\n| api/services | [api/v4/services](./#tag/Service) |\n| api/users | [api/v3/users](./#tag/User) |\n| api/users/me | [api/v4/users/me](./#tag/User/operation/getUsersMeV4) |\n| api/v2/absences | [api/v4/absences](./#tag/Absence) |\n| api/v3/absences | [api/v4/absences](./#tag/Absence) |\n| api/v2/aggregates/users/me | [api/v4/users/me](./#tag/User/operation/getUsersMeV4) |\n| api/v2/customers | [api/v3/customers](./#tag/Customer) |\n| api/v2/entriesTexts | [api/v3/entriesTexts](./#tag/EntryText) |\n| api/holidayscarry | [api/v3/holidaysCarry](./#tag/HolidayCarryover) |\n| api/v2/lumpsumservices | [api/v4/lumpSumServices](./#tag/LumpSumService) |\n| api/v3/lumpsumservices | [api/v4/lumpSumServices](./#tag/LumpSumService) |\n| api/nonbusinessdays | [api/v2/nonbusinessDays](./#tag/NonbusinessDay) |\n| api/nonbusinessgroups | [api/v2/nonbusinessGroups](./#tag/NonbusinessGroup) |\n| api/overtimecarry | [api/v3/overtimeCarry](./#tag/OvertimeCarry) |\n| api/v2/projects | [api/v4/projects](./#tag/Project) |\n| api/v2/services | [api/v4/services](./#tag/Service) |\n| api/v3/services | [api/v4/services](./#tag/Service) |\n| api/v2/teams | [api/v3/teams](./#tag/Team) |\n| api/v2/users | [api/v3/users](./#tag/User) |\n| api/v2/users/me | [api/v4/users/me](./#tag/User/operation/getUsersMeV4) |\n| api/v2/workTimes/changeRequests/{id}/approve | [api/v3/workTimes/changeRequests/{id}/approve](./#tag/WorkTime/operation/approveWorkTimesChangeRequestByIdV3) |\n\n## URL of the Clockodo API\n\nYou can access our API via the following URL:\n\n```text\nhttps://my.clockodo.com/api/[resource type]\n```\n\nThe resource type represents a class of your data.\n\nOnce you request a specific resource, for example, query information about exactly one entity, you can use the following URL:\n\n```text\nhttps://my.clockodo.com/api/[resource type]/[resource ID]\n```\n\nIn the following sections of this documentation, you will find more detailed descriptions of the available endpoints for each resource type. For example, under [Entry](./#tag/Entry) you will find detailed information on how you can manage time entries in your Clockodo environment.\n\n## HTTP Verbs\n\nTo tell the API which operations you want to perform on the resources, the so-called verbs of the HTTP protocol are used. The following operations are usually possible:\n\n| HTTP Verb | Description |\n|-----------------------------|-----------------------------------------------------------------|\n| `GET` | Query a list of all the resources of the selected resource type |\n| `GET` (with resource ID) | Query exactly one resource |\n| `POST` | Create a new resource |\n| `PUT` (with resource ID) | Update or edit a resource |\n| `DELETE` (with resource ID) | Delete a resource |\n\n## Authentication\n\nEach Clockodo user has his personal API access, which takes into account the user's access rights. You can find your API key under the menu item \"Personal data\" in your Clockodo account.\n\nTo gain access to your data via the API, you must authenticate yourself to the API using the API key. There are two different ways to do this:\n\n**Via the following HTTP headers:**\n\n```http\nX-ClockodoApiUser: [email address]\nX-ClockodoApiKey: [API key]\n```\n\n**Or using the basic authentication of the HTTP protocol:**\n\n```http\nUser: [email address]\nPassword: [API key]\n```\n\n## Client identification\n\nEach request to our API must contain an identification of the calling application, including the email address of a technical contact person. For this, the following HTTP header must be used:\n\n```http\nX-Clockodo-External-Application: [name of application or company];[email address]\n```\n\n**Example:**\n\n```http\nX-Clockodo-External-Application: Clockodo;admin@clockodo.com\n```\n\n## Localization: Language & formats\n\nSome response values of the API are localized. For example, texts describing dates, error messages, etc. \nIn order to switch between available languages (`en`, `de`, `fr`), use the following HTTP header:\n\n```http\nAccept-Language: en\n```\n\n## Response codes\n\nThe API responds to requests with the status codes of the HTTP protocol. In the event of errors, you will also find additional error information in the response.\n\n| Status Code | Meaning |\n| ----------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| `200` | OK – The request was successful |\n| `400` | Bad Request – The request was defective (e.g. missing parameter) |\n| `401` | Unauthorized – Authentication failed |\n| `403` | Forbidden – Insufficient access rights for the requested resource |\n| `404` | Not Found – The requested resource was not found |\n| `405` | Method Not Allowed – The requested endpoint cannot be used |\n| `409` | Conflict – A resource with the data already exists |\n| `422` | Unprocessable Entity - The server understands the content type but cannot process the instructions (validation or semantic errors) |\n| `429` | Too Many Requests – Too many requests to an endpoint in a certain period of time |\n| `500` | Internal Server Error – An unknown error occurred |\n\n## Rate Limits\n\nTo maintain platform stability, ensure fair usage across all customers, and protect overall performance, the Clockodo API enforces tiered rate limits. If a limit is exceeded, the request is rejected with HTTP 429 (Too Many Requests). You should implement backoff and retry logic.\n\nCurrent default limits per authenticated user:\n\n| Window | Limit |\n| ---------- |-----------------|\n| 1 minute | 900 requests |\n| 15 minutes | 2,250 requests |\n| 1 hour | 4,500 requests |\n| 1 day | 20,000 requests |\n\nBest practices:\n\n- Design idempotent operations so safe retries are possible after 429.\n- Distribute bursts evenly instead of sending large spikes.\n- Use pagination and filtering to reduce unnecessary payloads.\n- Cache stable data (e.g. metadata lists) instead of re-fetching every request.\n- Only request fields and endpoints actually needed by your workflow.\n\nIf you hit a limit:\n\n1. Respect any Retry-After header if present.\n2. Apply exponential backoff (e.g. 1s, 2s, 4s...) up to a sensible cap.\n3. Reduce concurrency and throttle subsequent batches.\n\nContact support if your sustained legitimate usage regularly requires higher thresholds.\n\n## Page-by-page output\n\nCertain resources such as [entries](./#tag/Entry), [customers](./#tag/Customer) and [projects](./#tag/Project) can return a lot of data. Therefore, a “page-by-page output” is active for these resources, meaning the number of elements returned per call is limited.\n\nYou can use the additional request parameter `page` to access further elements.\n\n```http\npage=[integer]\n```\n\n**Additional content of the response:**\n\n```json\n\"paging\": {\n \"items_per_page\": [integer],\n \"current_page\": [integer],\n \"count_pages\": [integer],\n \"count_items\": [integer]\n}\n```\n\n## Example calls\n\n**Example: Retrieve all services with cURL using basic authentication:**\n\n```bash\ncurl -v \\\n -X GET \\\n -u [email address]:[API key] \\\n -H 'X-Clockodo-External-Application: [name of application];[email address]' \\\n 'https://my.clockodo.com/api/v4/services'\n```\n\n**Example: Retrieve all services with cURL using authentication via the HTTP header:**\n\n```bash\ncurl -v \\\n -X GET \\\n -H 'X-ClockodoApiUser: [email address]' \\\n -H 'X-ClockodoApiKey: [API key]' \\\n -H 'X-Clockodo-External-Application: [name of application];[email address]' \\\n 'https://my.clockodo.com/api/v4/services'\n```\n\n**Example: Create a service:**\n\n```bash\ncurl -v \\\n -X POST \\\n -H 'X-ClockodoApiUser: [email address]' \\\n -H 'X-ClockodoApiKey: [API key]' \\\n -H 'X-Clockodo-External-Application: [name of application];[email address]' \\\n --data \"name=Test Service\" \\\n 'https://my.clockodo.com/api/v4/services'\n```\n\n# Clockodo Webhooks\n\nWebhooks make it possible to react to events in Clockodo in real time. When a defined event occurs, our system automatically sends an HTTP POST request to a URL you specify. \nThis allows you to trigger your own workflows or automate and synchronize external systems.\n\n## Supported Webhook Events\n\nSupported webhook events are documented under [Webhooks](./#tag/Webhook).\n\n## Creating and Editing a Webhook\n\nYou can create a new webhook or edit an existing one via the _Webhooks_ section in the Clockodo menu. \nSimply select the desired event (see table above), enter the target URL and a token.\n\n### Webhook Validation\n\nA webhook must be validated when it is initially created or its URL is changed. \nThis is as a security measure and ensures that you control the specified target URL.\n\nTo validate the webhook, Clockodo sends a POST request to the URL you provided with the following payload:\n\n```json\n{\n \"secret\": \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"\n}\n```\n\nEnter the received secret into the corresponding input field in Clockodo.\n\n## Webhook Payload\n\nEach webhook call is sent as an HTTP POST request in JSON format to the configured URL. The general structure is as follows:\n\n```json\n{\n \"subscription_id\": 42,\n \"company_id\": 1337,\n \"occurred_at\": \"1986-05-10T17:02:00Z\",\n \"payload\": {\n \"team\": {\n \"id\": 9001\n }\n },\n \"event_name\": \"team.updated\",\n \"token\": \"My_Sup3r_T0k3n\"\n}\n```\n\n- `subscription_id` \n Unique ID of the webhook subscription\n\n- `company_id` \n ID of your company in Clockodo\n\n- `occurred_at` \n Timestamp of the event (ISO 8601, UTC)\n\n- `event_name` \n Type of the triggered event\n\n- `payload` \n Contains the affected entity and its ID\n\n- `token` \n The token you defined when setting up the webhook (used to authenticate incoming requests)\n\nWe only transmit the ID of the created, modified, or deleted entity. **We don't transmit full datasets or deltas**.\n\nThis approach has several advantages:\n\n- **Data security** \n No sensitive or extensive data is transmitted unnecessarily.\n\n- **Actuality of the data** \n After receiving a webhook event, you can **retrieve the current and complete data** via API. \n This prevents inconsistencies that could arise due to parallel changes or delays.\n\n- **Reduced risk of errors** \n For complex or rapidly changing data structures, querying the current state is often more reliable than processing potentially outdated snapshots.\n\n- **Flexibility** \n Your system can decide when and to what extent it needs additional information.\n\n## Best Practices and Recommendations\n\n- **Event validation** \n Always verify the token and structure of incoming webhook data.\n\n- **Idempotency** \n Ensure your systems can correctly handle duplicate or repeated events.\n\n- **Logging** \n Log incoming webhook calls for debugging and traceability purposes.\n", "image": "/clockodo-logo.svg", "baseURL": "https://my.clockodo.com/api", "humanURL": "https://github.com/jentic/jentic-public-apis/tree/main/apis/openapi/clockodo.com/clockodo-api/2026-03-24", "version": "2026-03-24", "tags": [ "clockodo.com", "clockodo-api" ], "properties": [ { "type": "OpenAPI", "name": "OpenAPI definition", "url": "https://raw.githubusercontent.com/jentic/jentic-public-apis/refs/heads/main/apis/openapi/clockodo.com/clockodo-api/2026-03-24/openapi.json", "mediaType": "application/openapi+json" }, { "type": "GitHubRepo", "url": "https://github.com/jentic/jentic-public-apis/tree/main/apis/openapi/clockodo.com/clockodo-api/2026-03-24" } ], "contact": [ { "FN": "Clockodo support", "email": "support@clockodo.com", "url": "https://www.clockodo.com/en/about-us/" } ] } ] }