Time Entries
Time Entries represent time spent working for a client or project.
Access Requirements
| Access | Requires Authorization |
| Scopes | user:time_entries:read |
Important Note
When using GET calls for Projects and Time Tracking, please leave out the Content Type from your header.
Includes
There are no includes for time entries.
Filters
| Filter Type | Name | Description |
|---|---|---|
| Bool | billable | true returns entries that can be automatically added to an invoice |
| Bool | billed | true returns entries that have already been added to an invoice |
| Equals | client_id | matches exact client id |
| Bool | include_deleted | true returns deleted time entries |
| Bool | team | true returns entries logged by all members of the business |
| Bool | include_unlogged | true returns entries currently in progress for a running timer |
| Datetime | started_from | matches entries that take place at or after the specified UTC date/time |
| Datetime | started_to | matches entries that take place before or at the specified UTC date/time |
| Datetime | updated_since | matches entries that have been updated at or after the specified UTC date/time |
| Equals | identity_id | matches entries logged against a specific teammate or user |
Field Descriptions
underlined fields are required on creation
| Field | Type | Description |
|---|---|---|
| billable | bool | True for entries that can be automatically added to an invoice |
| billed | bool | True for entries that have already been added to an invoice or manually marked as billed |
| client_id | int | The unique identifier of the client to be billed for this entry |
| duration | int | The length of time in seconds |
| internal | bool | True if the time entry is not assigned to a client |
| is_logged | bool | False if the time entry is being created from a running timer |
| note | string | A short description of the work being done during the time |
| project_id | int | The unique identifier of the project worked on during the time |
| service_id | int | The unique identifier of the project service worked on during the time |
| started_at | int | The date/time in UTC when the work started |
| identity_id | int | The unique identifier of the teammate or user logging the time entry |
Get A Single Time Entry
Request:
GET "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/5095"
Response:
{
"time_entry": {
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
}
List Time Entries
Request:
GET "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries"
Response:
{
"time_entries": [
{
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
],
"meta": {
"pages": 1,
"total_logged": 30,
"total_unbilled": 30,
"per_page": 15,
"total": 1,
"page": 1
}
}
List Time Entries From A Specific Day
Request:
GET "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries?started_from=2016-08-17T00:00:00Z&started_to=2016-08-18T00:00:00Z"
Response:
{
"time_entries": [
{
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
],
"meta": {
"pages": 1,
"total_logged": 30,
"total_unbilled": 30,
"per_page": 4,
"total": 1,
"page": 1
}
}
List Time Entries Update From A Particular Time
Request:
GET "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries?updated_since=2016-08-01T03:00:00Z&include_deleted=1"
{
"time_entries": [
{
"note": null,
"duration": null,
"project_id": 153125,
"client_id": 2149780,
"is_logged": false,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5097,
"timer": {
"id": 2938,
"is_running": true
}
},
{
"note": null,
"duration": null,
"project_id": null,
"client_id": 2149780,
"is_logged": false,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5098,
"timer": {
"id": 2939,
"is_running": true
}
},
{
"note": null,
"duration": null,
"project_id": null,
"client_id": 2149780,
"is_logged": false,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5096,
"timer": {
"id": 2937,
"is_running": true
}
},
{
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
],
"meta": {
"pages": 1,
"total_logged": 30,
"total_unbilled": 30,
"per_page": 4,
"total": 4,
"page": 1
}
}
Create a Time Entry
Request:
POST "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries"
{
"time_entry": {
"is_logged": true,
"duration": 7200,
"note": "Stuff",
"started_at": "2016-08-16T20:00:00.000Z",
"client_id": "2149780",
"identity_id":"8804571",
"project_id": "153125"
}
}
Response:
{
"time_entry": {
"note": "Stuff",
"duration": 7200,
"project_id": 153125,
"client_id": 2149780,
"is_logged": true,
"started_at": "2016-08-16T20:00:00Z",
"active": true,
"id": 5100,
"timer": null
}
}
Update a Time Entry
Request:
PUT "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/<time_entry_id>"
{
"time_entry": {
"is_logged": true,
"duration": 600,
"note": "Updated Note",
"started_at": "2016-08-16T18:03:28.000Z",
"timer": {
"id": "2936"
},
"client_id": "2227125",
"project_id": "153125"
}
}
Response:
{
"time_entry": {
"note": "Updated Note",
"duration": 600,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
}
Delete a Time Entry
Request:
DELETE https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/<time_entry_id>
Response:
(status 204) NO CONTENT
Fetch time entries
Request: GET
"https://api.freshbooks.com/timetracking/business/<business_id>/time_entries"
url = "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries"
headers = {'Authorization': 'Bearer <Bearer Token>', 'Api-Version': 'alpha', 'Content-Type': 'application/json'}
res = requests.get(url, data=None, headers=headers)
Response:
{
"time_entries": [
{
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
],
"meta": {
"pages": 1,
"total_logged": 30,
"total_unbilled": 30,
"per_page": 15,
"total": 1,
"page": 1
}
}
Fetch Time Entries for a given day
Request: GET
"https://api.freshbooks.com/timetracking/business/<business_id>/time_entries?page=0&started_from=2016-08-17T04%3A00%3A00Z&started_to=2016-08-18T03%3A59%3A59Z"
url = "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries?page=0&started_from=2016-08-17T04%3A00%3A00Z&started_to=2016-08-18T03%3A59%3A59Z"
headers = {'Authorization': 'Bearer <Bearer Token>', 'Api-Version': 'alpha', 'Content-Type': 'application/json'}
res = requests.get(url, data=None, headers=headers)
Response:
{
"time_entries": [
{
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
],
"meta": {
"pages": 1,
"total_logged": 30,
"total_unbilled": 30,
"per_page": 4,
"total": 1,
"page": 1
}
}
Fetch Time Entries that have been updated since a precise time
Request: GET
"https://api.freshbooks.com/timetracking/business/<business_id>/time_entries?updated_since=2015-08-01T03%3A00%3A00Z&include_deleted=1"
url = "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries?updated_since=2015-08-01T03%3A00%3A00Z&include_deleted=1"
headers = {'Authorization': 'Bearer <Bearer Token>', 'Api-Version': 'alpha', 'Content-Type': 'application/json'}
res = requests.get(url, data=None, headers=headers)
Response:
{
"time_entries": [
{
"note": null,
"duration": null,
"project_id": 153125,
"client_id": 2149780,
"is_logged": false,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5097,
"timer": {
"id": 2938,
"is_running": true
}
},
{
"note": null,
"duration": null,
"project_id": null,
"client_id": 2149780,
"is_logged": false,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5098,
"timer": {
"id": 2939,
"is_running": true
}
},
{
"note": null,
"duration": null,
"project_id": null,
"client_id": 2149780,
"is_logged": false,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5096,
"timer": {
"id": 2937,
"is_running": true
}
},
{
"note": "Things",
"duration": 30,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
],
"meta": {
"pages": 1,
"total_logged": 30,
"total_unbilled": 30,
"per_page": 4,
"total": 4,
"page": 1
}
}
Create a Time Entry
request: POST
"https://api.freshbooks.com/timetracking/business/<business_id>/time_entries"
url = "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries"
headers = {'Authorization': 'Bearer <Bearer Token>', 'Api-Version': 'alpha', 'Content-Type': 'application/json'}
payload = {
"time_entry": {
"is_logged": true,
"duration": 7200,
"note": "stuff",
"started_at": "2016-08-16T20:00:00.000Z",
"client_id": "2149780",
"project_id": "153125"
}
}
Response:
{
"time_entry": {
"note": "Stuff",
"duration": 7200,
"project_id": 153125,
"client_id": 2149780,
"is_logged": true,
"started_at": "2016-08-16T20:00:00Z",
"active": true,
"id": 5100,
"timer": null
}
}
Update a Time Entry
Request: PUT
"https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/<time_entry_id>"
url = "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/<time_entry_id>"
headers = {'Authorization': 'Bearer <Bearer Token>', 'Api-Version': 'alpha', 'Content-Type': 'application/json'}
payload = {
"time_entry": {
"is_logged": true,
"duration": 600,
"note": "Updated Note",
"started_at": 2016-08-16T18:03:28.000Z
"timer": {
"id": "2936"
},
"client_id": "2227125",
"project_id": "153125"
}
}
Response:
{
"time_entry": {
"note": "Updated Note",
"duration": 600,
"project_id": 153125,
"client_id": 2227125,
"is_logged": true,
"started_at": "2016-08-16T18:03:28Z",
"active": true,
"id": 5095,
"timer": {
"id": 2936,
"is_running": false
}
}
}
Delete a Time Entry
Request: DELETE
https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/<time_entry_id>
url = "https://api.freshbooks.com/timetracking/business/<business_id>/time_entries/<time_entry_id>"
headers = {'Authorization': 'Bearer <Bearer Token>', 'Api-Version': 'alpha', 'Content-Type': 'application/json'}
res = requests.delete(url, data=None, headers=headers)
Response:
(Status 204) NO CONTENT
