Clockodo API:
Manage multiple entries

Endpoint api/v2/entrygroups

The grouped query of time entries is particularly suitable for evaluation purposes or for invoicing.

Object type "entrygroup"

Parameter Type Description
grouped_bystring
Group criterion of the current group
groupstring
Identificator of the current group
namestring
Description of the curent group
numberstring|null
Data number of the group (customers number, personnel number, ..)
Only if the group criterion is customers_id, projects_id, services_id or users_id
notestring|null
Note of the current group
Only if the group criterion is customers_id, projects_id or services_id
restrictionsarray
Restrictions which apply to the current group appart from the current grouped_by criterion and time criteria
durationinteger
Duration of all entries in the group
[revenue]float
Revenue of all entries in the group
Only with necessary access rights to group
[budget_used]boolean
Has budget been used for at least one entry in the group?
Only with necessary access rights to group
[has_budget_revenues_billed]boolean
Has at least one group entry, which belongs to a project with hard budget, already been billed?
Only with necessary access rights to group
[has_budget_revenues_not_billed]boolean
Has at least one group entry, which belongs to a project with hard budget, not been billed so far?
Only with necessary access rights to group
[has_non_budget_revenues_billed]boolean
Has at least one group entry, which does not belong to a project with hard budget, already been billed?
Only with necessary access rights to group
[has_non_budget_revenues_not_billed]boolean
Has at least one group entry, which does not belong to a project with hard budget, not been billed so far?
Only with necessary access rights to group
[hourly_rate]float|null
Average hourly_rate for the group
Only with necessary access rights to group
[hourly_rate_is_equal_and_has_no_lump_sums]boolean
Is the hourly rate equal for all billable entries in the group and does the group not have any lump sum entries? In this case the revenue can be calculated like this: revenue = hourly_rate * duration
This is useful especially for billing purposes.
Only with necessary access rights to group
[duration_without_rounding]integer
Duration without rounding
Only if rounding has been requested
[revenue_without_rounding]float
Revenue without rounding
Only if rounding has been requested; only with necessary access rights to group
[rounding_success]boolean
Could the revenue be rounded successfully or hasn't it been possible because of different hourly rates in the group
Only on the last group if rounding has been requested; only with necessary access rights to group
[sub_groups]array
If multiple group criterions have been requested, the next group level will be listed as subgroups

Request groups

Request
GET /api/v2/entrygroups
Required parameters time_sincestring
Filter start time
in format ISO 8601 UTC, e.g. "2021-06-30T12:34:56Z"
time_untilstring
Filter end time
in format ISO 8601 UTC, e.g. "2021-06-30T12:34:56Z"
groupingarray
Grouping of the entries; groups will be nested of multiple grouping option are selected
Selected values of this set: [customers_id, projects_id, services_id, users_id, texts_id, lumpsum_services_id, billable, is_lumpsum, year, week, month, day]

Example in HTTP GET notation: grouping[]=customers_id&grouping[]=users_id
Optional parameters filter[users_id]integer
Filter for a selected co-worker
filter[customers_id]integer
Filter for a selected customer
filter[projects_id]integer
Filter for a selected project
filter[services_id]integer
Filter for a selected service
filter[lumpsum_services_id]integer
Filter for a lump sum
filter[billable]integer
Filter for a billability
0, 1 or 2
billable = 2 represents "billable and already billed"
filter[text] / filter[texts_id]string / integer
Filter for a text
filter[budget_type]string
Filter for types of budgets
strict, strict-completed, strict-incomplete, soft, soft-completed, soft-incomplete, without, without-strict
round_to_minutesinteger
Activation of rounding of time durations to the given count of minutes; e.g. "15" for rounding to quarter hours
(Default 0)
prepend_customer_to_ project_nameboolean
Project names will be prefixed with customer names
(Default true)
calc_also_revenues_for_ projects_with_hard_budgetboolean
By default, revenues for projects with hard budgets will no be calculated. If you activate this option, the sum of all revenues to this project can be more than the project budget
(Default false)
Example cURL request
curl -v 
  -X GET \ 
  -H 'X-ClockodoApiUser: [email adress]' \ 
  -H 'X-ClockodoApiKey: [API key]' \ 
  -H 'X-Clockodo-External-Application: [name of application];[email address]' \
  "https://my.clockodo.com/api/v2/entrygroups?time_since=2024-01-01T00:00:00Z&time_until=2024-02-01T00:00:00Z&grouping[]=projects_id&grouping[]=services_id&filter[users_id]=123&filter[customers_id]=456
Response
{
  "groups": 
  {
    [object of type group which may contain subgroups],
    [object of type group which may contain subgroups],
    ...
  }
}

Edit group of entries

Request
PUT /api/v2/entrygroups
Required parameters time_sincestring
Filter start time
in format ISO 8601 UTC, e.g. "2021-06-30T12:34:56Z"
time_untilstring
Filter end time
in format ISO 8601 UTC, e.g. "2021-06-30T12:34:56Z"
Optional parameters filter[users_id]integer
Filter for a selected co-worker
filter[customers_id]integer
Filter for a selected customer
filter[projects_id]integer
Filter for a selected project
filter[services_id]integer
Filter for a selected service
filter[lumpsum_services_id]integer
Filter for a lump sum service
filter[billable]integer
Filter for a billability
0, 1 or 2
billable = 2 represents "billable and already billed"
filter[text] / filter[texts_id]string / integer
Filter for a text
filter[budget_type]string
Filter for types of budgets
strict, strict-completed, strict-incomplete, soft, soft-completed, soft-incomplete, without, without-strict
users_idinteger
New user assignment to set
customers_idinteger
New customer assignment to set
projects_idinteger
New project assignment to set
services_idinteger
New service assignment to set
lumpsum_services_idinteger
New lump sum service assignment to set
billableinteger
New billability to set
0, 1 or 2
billable = 2 represents "billable and already billed"
textstring
New text to set
hourly_ratefloat
New hourly rate to set
confirm_keystring
Confirmation for safety
For safety, the api will response with a confirm key with which you have to request once again in order to confirm your edit action
Example request with all params as JSON body
{
  "time_since": "2024-01-01T00:00:00Z",
  "time_until": "2024-02-01T00:00:00Z",
  "grouping": ["projects_id", "services_id"],
  "filter": {
    "users_id": 123,
    "customers_id": 456
  }
}
First response (to request without confirm key):
{
  "confirm_key": [string],
  "affected_entries": [integer, count of entries which will be affected]
}
Final response (to request with confirm key):
{
  "success": true,
  "edited_entries": [integer]
}

Delete group of entries

Request
DELETE /api/v2/entrygroups
Required parameters time_sincestring
Filter start time
in format ISO 8601 UTC, e.g. "2021-06-30T12:34:56Z"
time_untilstring
Filter end time
in format ISO 8601 UTC, e.g. "2021-06-30T12:34:56Z"
Optional parameters filter[users_id]integer
Filter for a selected co-worker
filter[customers_id]integer
Filter for a selected customer
filter[projects_id]integer
Filter for a selected project
filter[services_id]integer
Filter for a selected service
filter[lumpsum_services_id]integer
Filter for a lump sum
filter[billable]integer
Filter for a billability
0, 1 or 2
billable = 2 represents "billable and already billed"
filter[text] / filter[texts_id]string / integer
Filter for a text
filter[budet_type]string
Filter for types of budgets
strict, strict-completed, strict-incomplete, soft, soft-completed, soft-incomplete, without, without-strict
confirm_keystring
Confirmation for safety
For safety, the api will response with a confirm key with which you have to request once again in order to confirm your edit action
First response (to request without confirm key):
{
  "confirm_key": [string],
  "affected_entries": [integer, count of entries which will be affected]
}
Final response (to request with confirm key):
{
  "success": true,
  "deleted_entries": [integer]
}
stripes illustration
Contact us!

Our Customer-Success-Team will answer your questions.

Contact now!
Essayer gratuitement de toutes les fonctions pendant 14 jours
En soumettant le formulaire vous reconnaissez nos conditions générales et notre déclaration de confidentialité et confirmez d’utiliser Clockodo en tant qu’ entrepreneur.

Profitez de l'expérience de 10 000 autres entreprises :

Bechtle Mannheim LogoBechtlePeerigon LogoPeerigon GmbH
Phoenix Logistik LogoPhoenix LogistikFieda LogoFidea