Skip to content

Time

Allowed query parameters

Filters

FilterTypeDescription
searchStringFull-text search
ownBooleanShow only own time entries
date_rangeDateRangeFilter by tracked date
<start-date>,<end-date>
projectIdFilter by Project Id
companyIdFilter by Company Id
memberStringA Member Id
rateIdFilter by Rate Id
locked_by_invoiceIdFilter by Invoice Id that locked the time entry
is_accountableBooleanFilter by accountable status
is_lockedBooleanFilter by locked status
custom_fieldKey,StringFilter by Custom Field (eg. my_internal_id,42)

Sorting

tracked_at, amount

Includes

member.user.media, project.company.media, rate, lockedByInvoice

Create a time entry

post
/time
Attribute (* required)TypeDescription
description *StringTime entry description
project_id *StringA Project Id
rate_id *StringA Rate Id
amount *NumberTime amount in hours (minimum: 0)
tracked_atDateTracked date (Default: Today)
is_accountableBooleanIf time is accountable (Default: true)
is_lockedBooleanIf time entry is locked
custom_fieldsObject?Custom data as Custom Fields

Example response

json
// HTTP 201 Created
{
    // a time object
}

Update a time entry

put
/time/{id}
AttributeTypeDescription
descriptionStringTime entry description
project_idStringA Project Id
rate_idStringA Rate Id
amountNumberTime amount in hours (minimum: 0)
tracked_atDateTracked date
is_accountableBooleanIf time is accountable
is_lockedBooleanIf time entry is locked
custom_fieldsObject?Custom data as Custom Fields

Example response

json
// HTTP 200 OK
{
    // a time object
}

Retrieve a time entry

get
/time/{id}

Example response

json
// HTTP 200 OK
{
    "id": "XAjXJ2GVpM",
    "project_id": "nKEvwlgjeZ",
    "rate_id": "rA3bX9kL2m",
    "amount": 4.75,
    "description": "Worked on the design",
    "is_accountable": true,
    "is_locked": false,
    "locked_by_invoice": null,
    "tracked_at": "2022-02-08T00:00:00.000000Z",
    "costs": 237.5,
    "member": {
        // A Member object
    },
    "rate": {
        // A Rate object
    },
    "project": {
        // A Project object
    },
    "custom_fields": {}
}

Delete a time entry

delete
/time/{id}

Example response

json
// HTTP 204 No Content

List time entries

get
/time

The list endpoint accepts the same query parameters as described above and returns a paginated array of time objects in the data property. Each time object has the same structure as in Retrieve a time entry.

Read more about Pagination, Filtering, Sorting and Includes on the Introduction page.