Skip to navigation

List shifts in an organization

Beta

Lists the shifts recorded on the organization’s contracts for a period, from any app or system that entered them. Use it to sync worked time into an external payroll, ERP or reporting system, fetching only what changed since the last sync.

Token scopes: time-tracking:read, worker:read

Beta: this version requires the X-Beta: true request header and its contract may change before it is promoted to stable. It is scheduled to become stable on 2027-02-03.

Authentication

AuthorizationBearer

Authentication

The Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail.

curl -X GET 'https://api.deel.training/rest/v2/contracts' \
  -H 'Authorization: Bearer YOUR-TOKEN-HERE'

Learn more about authentication

OR
AuthorizationBearer

Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/

Headers

X-BetaenumRequiredDefaults to true

Opts in to the beta version of this endpoint. Must be true.

Allowed values:

Query parameters

fromstringRequiredformat: "date"
First shift day of the range, inclusive. The range spans at most 31 days.
tostringRequiredformat: "date"
Last shift day of the range, inclusive. The range spans at most 31 days.
contract_idslist of stringsOptional

Return only shifts on these contracts. Repeat the key for several values. Worker tokens only see their own contracts; other contracts return no shifts.

statuseslist of enumsOptional

Return only shifts in these approval statuses. Repeat the key for several values. A pay-as-you-go shift is matched on its own approval status, which can differ from the status it shows when its hourly report has moved on.

Allowed values:
typeslist of enumsOptional
Return only shifts of these types. Repeat the key for several values.
Allowed values:
originslist of enumsOptional
Return only shifts entered through these channels. Repeat the key for several values.
contract_typeslist of enumsOptional
Return only shifts on contracts of these types. Repeat the key for several values.
project_idstringOptionalformat: "uuid"

Return only shifts recorded against this project. Pay-as-you-go shifts are not matched by this filter yet.

limitintegerOptional1-100Defaults to 50
Maximum number of shifts in the page.
cursorstringOptional

Opaque cursor from the previous page’s next_cursor. Send it with the same filters, in the same order, and the same limit as the first page.

Response

One page of shifts, in the order they were created.
datalist of objects
Shifts in this page.
has_moreboolean

Whether to fetch another page with next_cursor. A full page sets it, so the page after it can be empty.

next_cursorstring or null

Cursor for the next page; null on the last page.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error