Time entries
Time entries are used to track time spent on projects, which can then be billed to customers.
Resume a stopped timer
Resumes a stopped time entry. If another time entry is currently active, it will be stopped first. Can only resume timers that started today.
When the time entry belongs to another user than the user of the token, the token also needs the sales_invoices scope.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Resume a stopped timer › Responses
Time entry resumed
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
contact_id^\d+$A unique record identifier
project_id^\d+$A unique record identifier
sales_invoice_id^\d+$A unique record identifier
user_id^\d+$A unique record identifier
started_atdescriptionpaused_durationbillablecreated_atupdated_atStops an active time entry
Stops an active time entry. If the time entry is already stopped, the time entry is returned unchanged.
When the time entry belongs to another user than the user of the token, the token also needs the sales_invoices scope.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Stops an active time entry › Responses
Time entry stopped
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
contact_id^\d+$A unique record identifier
project_id^\d+$A unique record identifier
sales_invoice_id^\d+$A unique record identifier
user_id^\d+$A unique record identifier
started_atdescriptionpaused_durationbillablecreated_atupdated_atGet a time entry by id
Returns a time entry in the administration. When the time entry belongs to another user than the user of the
token, the token also needs the sales_invoices scope.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Get a time entry by id › Responses
A time entry
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
contact_id^\d+$A unique record identifier
project_id^\d+$A unique record identifier
sales_invoice_id^\d+$A unique record identifier
user_id^\d+$A unique record identifier
started_atdescriptionpaused_durationbillablecreated_atupdated_atUpdate a time entry
When updating a time entry, provide only the attributes you want to update. The other attributes will not be changed.
started_at and ended_at are rounded down to full minutes when updating a time entry, with a minimum of 1 minute between them.
When the time entry belongs to another user than the user of the token, the token also needs the sales_invoices scope.
A time entry that is on a sales invoice cannot be updated.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Update a time entry › Responses
Time entry updated
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
contact_id^\d+$A unique record identifier
project_id^\d+$A unique record identifier
sales_invoice_id^\d+$A unique record identifier
user_id^\d+$A unique record identifier
started_atdescriptionpaused_durationbillablecreated_atupdated_atDelete a time entry
Delete a time entry by id. When the time entry belongs to another user than the user of the token, the token
also needs the sales_invoices scope. A time entry that is on a sales invoice cannot be deleted.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Delete a time entry › Responses
Time entry deleted
Destroys note from entity
Deletes a note from a time entry.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
time_entry_id^\d+$ · requiredA unique record identifier
id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Destroys note from entity › Responses
Note deleted
Adds note to entity
Adds a note to the time entry.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
time_entry_id^\d+$ · requiredA unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Adds note to entity › Responses
Note created
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
entity_id^\d+$A unique record identifier
entity_typeuser_id^\d+$A unique record identifier
assignee_id^\d+$A unique record identifier
todonotecompleted_atcompleted_by_id^\d+$A unique record identifier
todo_typedatacreated_atupdated_atList all time entries
Returns a paginated list of time entries in the administration.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
query Parameters
filterFilters are key:value terms separated by commas (e.g. period:this_year,state:all). Any filter you pass replaces the defaults below entirely, so include every key you need. Available filters:
| Filter | Type | Default | Description |
|---|---|---|---|
| state | String | all | all, open or non_billable |
| period | String | this_year | This can either be the description of a period (this_week, prev_week, next_week, this_month, prev_month, next_month, this_quarter, prev_quarter, next_quarter, this_year, prev_year, next_year) or a custom period (201301..201302, 20130101..20130131). A custom period must have a start and an end date. It must not be longer than 10 years and must be between 20000101 and 21000101. For one month, use 202401..202401, not 202401. Without period, the filter does not limit the dates. The default this_year applies only when you send no filter. |
| contact_id | Integer | Select time entries belonging to a certain contact | |
| include_nil_contacts | Boolean | false | Whether to include time entries that have no assigned contact |
| include_active | Boolean | false | Whether to include active time entries i.e. time entries without ended_at |
| project_id | Integer | Select time entries belonging to a certain project | |
| user_id | Integer | Select time entries belonging to a certain user | |
| day | Date | Select time entries on a specific date |
You can filter by multiple states at the same time as well. To do this, separate the state values by a pipe: state:open|non_billable.
pageper_page^\d+$queryFree-text search across the time entry description.
List all time entries › Responses
A list of time entries
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
contact_id^\d+$A unique record identifier
project_id^\d+$A unique record identifier
sales_invoice_id^\d+$A unique record identifier
user_id^\d+$A unique record identifier
started_atdescriptionpaused_durationbillablecreated_atupdated_atCreate a time entry
API to post a time entry. Used to create time entries to record time spent by an employee.
Api user needs access to both sales invoices and time entries for this action.
started_at and ended_at are rounded down to full minutes when creating a time entry, with a minimum of 1 minute between them.
Required scope(s)
time_entries
path Parameters
administration_id^\d+$ · requiredThe unique identifier of the administration
A unique record identifier
format^(.(json|xml))?$ · requiredThe format in which the response is given, can be empty to use the default format
Create a time entry › Responses
Time entry created
id^\d+$A unique record identifier
administration_id^\d+$A unique record identifier
contact_id^\d+$A unique record identifier
project_id^\d+$A unique record identifier
sales_invoice_id^\d+$A unique record identifier
user_id^\d+$A unique record identifier
started_atdescriptionpaused_durationbillablecreated_atupdated_at