Deel REST API

Global payroll and HR platform

developer.deel.com ↗
Version
1.25.0
OpenAPI
3.0.1
Endpoints
153
Schemas
508
81
Quality
Updated
3 days ago
Hr hr payroll hiring
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.letsdeel.com/rest/v2
https://api-staging.letsdeel.com/rest/v2

Endpoints

Clear filters

Adjustments 1 endpoints

POST /adjustments

Create a new adjustment.

operationId: Adjustments_createNewAdjustment

Request Body

Creation data for a new adjustment

multipart/form-data
schema AdjustmentToCreateContainer
Property Type Required
data object required
file string required
title string required
amount object required
vendor string required
country string required
contract_id string required
description string required
cycle_reference string optional
move_next_cycle boolean optional
date_of_adjustment string optional
adjustment_category_id string required

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /adjustments

Attachments 1 endpoints

POST /attachments

Upload file to Deel storage to use the file attachment feature for other endpoints.

operationId: Attachments_uploadDeelFile

Request Body

File info object that needs to be created.

application/json
schema InputToCreateFileRef
Property Type Required
data object required
content_type string required

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /attachments

Candidates 1 endpoints

POST /candidates

Add a candidate to Deel.

operationId: Candidates_addCandidateToDeel

Request Body

Add a candidate to Deel

application/json
schema CandidateToCreateContainer
Property Type Required
data object required
id string required
link string required
email string optional
state string optional
status string required
country string optional
job_title string optional
last_name string required
first_name string required
start_date string required
nationality string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /candidates

Contractors 8 endpoints

POST /contracts

Create a new Deel contract.

operationId: Contractors_createNewDeelContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer
Property Type Required
data object required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts
POST /contracts/fixed-rate
operationId: Contractors_createNewFixedRateContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_ongoing_time_based
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string required
compensation_details object required
amount number required
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional
scale string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/fixed-rate
POST /contracts/milestone-based
operationId: Contractors_createNewMilestoneContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_payg_milestones
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string optional
compensation_details object required
amount number optional
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/milestone-based
POST /contracts/task-based
operationId: Contractors_createNewTaskBasedContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_payg_tasks
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string required
compensation_details object required
amount number optional
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/task-based
POST /contracts/time-based
operationId: Contractors_createNewTimeBasedContract

Request Body

Contract object that needs to be created

application/json
schema ContractToCreateContainer_pay_as_you_go_time_based
Property Type Required
data object required
meta object required
is_main_income boolean optional
documents_required boolean required
title string required
client object required
team object required
id string required
legal_entity object required
id string required
worker object optional
last_name string optional
first_name string required
expected_email string required
job_title object required
id string optional
name string optional
seniority object optional
id string optional
state_code string optional
external_id string optional
who_reports string optional
country_code string optional
notice_period number optional
scope_of_work string optional
special_clause string optional
termination_date string optional
type string required
start_date string required
compensation_details object required
amount number required
cycle_end number required
frequency string required
currency_code string required
first_payment number optional
notice_period number optional
cycle_end_type string required
payment_due_days number required
payment_due_type string required
first_payment_date string optional
pay_before_weekends boolean optional
scale string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/time-based
POST /contracts/{contract_id}/amendments

Amend the details of a contract. Please note that if the contract is already signed or active, then the update will have to be approved and re-signed for to take effect.

operationId: Contractors_amendContractDetails

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract object that needs to be amended

application/json
schema ContractToAmendDetailsContainer
Property Type Required
data object required
scale string optional
amount number optional
cycle_end number optional
frequency string optional
job_title_id string optional
seniority_id string optional
currency_code string optional
first_payment number optional
scope_of_work string optional
cycle_end_type string optional
effective_date string optional
job_title_name string optional
special_clause string optional
payment_due_days number optional
payment_due_type string optional
first_payment_date string optional
pay_before_weekends boolean optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/amendments
POST /contracts/{contract_id}/premium

Add additional protection against misclassification by upgrading to Deel Premium.

operationId: Contractors_upgradeToPremium

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Answers for assessment in order to find eligibility for Deel Premium.

application/json
schema PremiumToAddContainer
Property Type Required
data object required
contractor_characteristics boolean required
agreement_reflects_relation boolean required

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/premium
POST /contracts/{contract_id}/terminations

Terminate an active contract.

operationId: Contractors_terminateContract

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract that needs to be terminated and when.

application/json
schema ContractToTerminateContainer
Property Type Required
data object required
message string optional
terminate_now boolean optional
completion_date string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/terminations

Contracts 4 endpoints

POST /contracts/estimate

First payment is calculated from the number of working/calendar days between their start date and the start of the payment cycle.

operationId: Contracts_calculateFirstPaymentAmount

Request Body

Pro-rata payment object that needs to estimated payment

application/json
schema EstimateFirstPaymentContainer
Property Type Required
data object required
type string required
start_date string required
country_code string required
compensation_details object required
scale string optional
amount number optional
cycle_end number optional
currency_code string optional
work_week_end string optional
cycle_end_type string optional
work_week_start string optional
calculation_type string optional
payment_due_days number optional
payment_due_type string optional

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/estimate
POST /contracts/{contract_id}/documents

Attach a file to contract document.

operationId: Contracts_attachFileToDocument

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

A form to attach a file to contract document.

multipart/form-data
schema FileObject
Property Type Required
file string optional

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/documents
POST /contracts/{contract_id}/invitations

Invite a worker to sign the contract. Worker will be notified via email.

operationId: Contracts_inviteWorkerToSign

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract invitation object that needs to be created

application/json
schema ContractInvitationToCreateContainer
Property Type Required
data object required
email string required
message string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/invitations
POST /contracts/{contract_id}/signatures

Sign a contract as a client.

operationId: Contracts_clientSignContract

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract signature object that needs to be created

application/json
schema ContractSignatureToCreateContainer
Property Type Required
data object required
client_signature string required
contract_template_id number optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/signatures

Eor 2 endpoints

POST /eor

Create an Employee of Record (EOR) contract quote. The endpoints creates a contract quote request. Deel will process the information and get back with a quote for this contract.

operationId: Eor_createContractQuote

Request Body

Employee (eor) contract object that needs to be created

application/json
schema EorContractToCreateContainer
Property Type Required
data object required
client object required
team object required
id string required
legal_entity object optional
id string optional
pension object optional
id string optional
contribution string optional
employee object required
email string optional
address object optional
zip string optional
city string optional
state string optional
street string optional
country string optional
last_name string required
first_name string required
nationality string required
job_title string required
seniority object required
id string optional
employment object required
type string optional
state string optional
country string required
end_date string optional
holidays number optional
start_date string required
scope_of_work string optional
time_off_type string optional
probation_period number optional
work_visa_required boolean required
health_plan_id string optional
compensation_details object required
salary number optional
currency string required
variable_compensation number optional
variable_compensation_type string optional
quote_additional_fields object optional
dob string optional
gender string optional
worker_type string optional

Responses

200

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /eor
POST /eor/employment_cost

Determine EOR employee costs across the globe.

operationId: Eor_calculateEmployeeCosts

Request Body

Information to use in the EOR employeeCost calculation.

application/json
schema EorEmployeeCostCalculationRequestBodyContainer
Property Type Required
data object required
salary number required
country string required
benefits array optional
plan_id string optional
provider_id string required
currency string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /eor/employment_cost

Globalpayroll 3 endpoints

POST /contracts/gp

Create a Global Payroll contract.

operationId: GlobalPayroll_createContractGp

Request Body

Global Payroll (GP) contract object that needs to be created

application/json
schema GPContractToCreateContainer
Property Type Required
data object required
client object required
team object required
id string required
legal_entity object required
id string required
employee object required
email string required
address object required
zip string required
city string required
state string optional
street string required
country string required
last_name string required
first_name string required
work_email string required
nationality string optional
employee_number string optional
job_title string required
employment object required
type string required
holidays object required
allowance number required
start_date string required
start_date string required
compensation_details object required
scale string required
salary number required
currency string optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/gp
POST /gp/workers/{worker_id}/banks

Add a new bank account for an employee.

operationId: GlobalPayroll_addBankAccount

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

Request body to add new bank account for employee

application/json
schema AddWorkerBankAccountContainer
Property Type Required
data object required
city string optional
iban string optional
email string optional
phone string optional
postal string optional
tax_id string optional
bank_code string optional
bank_name string optional
full_name string optional
swift_bic string optional
rib_number string optional
branch_code string optional
account_type string optional
country_code string optional
address_line1 string optional
address_line2 string optional
currency_code string optional
original_name string optional
account_number string optional
province_state string optional
…3 more object optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /gp/workers/{worker_id}/banks
POST /gp/workers/{worker_id}/terminations

Request a termination for a global payroll employee. A successful call starts the termination process and does not confirm termination.

operationId: GlobalPayroll_requestTerminationProcess

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

Request body to add new bank account for employee

application/json
schema WorkerTerminationBodyContainer
Property Type Required
data object required
message string required
severance object required
is_voluntary boolean required
desired_end_date string required
last_date_of_work string required

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /gp/workers/{worker_id}/terminations

Invoices 3 endpoints

POST /invoice-adjustments

Create an invoice adjustment using this endpoint. For example, you can add a bonus, commission, VAT %, deduction etc. to an invoice.

operationId: Invoices_createAdjustment

Parameters

Name In Required Type Description
recurring query optional boolean

Add this invoice adjustment as recurring

Request Body

InvoiceAdjustment object that needs to be created

application/json
schema InvoiceAdjustmentToCreateContainer
Property Type Required
data object required
type string required
amount number required
contract_id string required
description string required
date_submitted string required
paymentCycleId number optional
multipart/form-data
schema InvoiceAdjustmentToCreateWithFile
Property Type Required
type string required
amount number required
contract_id string required
description string required
date_submitted string required
paymentCycleId number optional
file string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /invoice-adjustments
POST /invoice-adjustments/many/reviews

Review multiple invoice adjustments to approve or decline a batch.

operationId: Invoices_reviewMultiple

Request Body

InvoiceAdjustment review objects that need to be created

application/json
schema InvoiceAdjustmentReviewsToCreateContainer
Property Type Required
data object required
ids array required
reason string required
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /invoice-adjustments/many/reviews
POST /invoice-adjustments/{invoice_adjustment_id}/reviews

Review an invoice adjustment to approve or decline it.

operationId: Invoices_submitAdjustmentReview

Parameters

Name In Required Type Description
invoice_adjustment_id path optional number

ID of an existing invoice adjustment

Request Body

InvoiceAdjustment review object that need to be created

application/json
schema InvoiceAdjustmentReviewToCreateContainer
Property Type Required
data object required
reason string required
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /invoice-adjustments/{invoice_adjustment_id}/reviews

Managers 1 endpoints

POST /managers

Create a new organization manager.

operationId: Managers_createNewManager

Request Body

Basic information of the new admin user.

application/json
schema AdminUserCreateContainer
Property Type Required
data object required
email string required
last_name string required
first_name string required

Responses

201

Basic information of the new admin user.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

409

A matching profile already exists.

500

Operation failed.

POST /managers

Milestones 3 endpoints

POST /contracts/{contract_id}/milestones

Add a new milestone to contract.

operationId: Milestones_createNewMilestone

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Milestone object that needs to be created

application/json
schema MilestoneToCreateContainer
Property Type Required
data object required
title string required
amount string required
description string required
multipart/form-data
schema MilestoneToCreateFormWithFile
Property Type Required
title string required
amount string required
description string required
file string optional

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/milestones
POST /contracts/{contract_id}/milestones/many/reviews

Review a batch of milestones to approve or reject submitted work.

operationId: Milestones_reviewMultiple

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Milestone review objects that need to be created

application/json
schema MilestoneReviewsToCreateContainer
Property Type Required
data object required
ids array required
reason string optional
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/milestones/many/reviews
POST /contracts/{contract_id}/milestones/{milestone_id}/reviews

Review a milestone to approve or decline submitted work.

operationId: Milestones_createReview

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

milestone_id path optional string

ID of milestone to return

Request Body

Milestone review object that need to be created

application/json
schema MilestoneReviewToCreateContainer
Property Type Required
data object required
reason string optional
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/milestones/{milestone_id}/reviews

Offcyclepayments 1 endpoints

POST /contracts/{contract_id}/off-cycle-payments

Add a new invoice line-item for the purpose of off-cycle payment for a given contract.

operationId: OffcyclePayments_addPaymentInvoice

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Off-cycle payment object that needs to be created

application/json
schema OffCyclePaymentToCreateContainer
Property Type Required
data object required
amount number required
description string optional
date_submitted string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/off-cycle-payments

Partnermanaged 5 endpoints

POST /partner-managed/employees/{employee_id}/banks

Add bank account for an EOR employee.

operationId: PartnerManaged_addBankAccountForEorEmployee

Parameters

Name In Required Type Description
employee_id path optional string

Unique identifier for an employee in Deel.

Request Body

Bank Account object that needs to be created

application/json
schema BankAccountToAddContainer
Property Type Required
data array required
key string required
value string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /partner-managed/employees/{employee_id}/banks
POST /partner-managed/employees/{employee_id}/compliance-documents/{document_id}

Upload an employee compliance document.

operationId: PartnerManaged_uploadComplianceDocument

Parameters

Name In Required Type Description
employee_id path optional string

Unique identifier for an employee in Deel.

document_id path optional number

Unique identifier for a compliance document in Deel.

Request Body

The employee compliance document data to upload.

multipart/form-data
schema UploadEmployeeComplianceDocumentFileContainer
Property Type Required
file string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /partner-managed/employees/{employee_id}/compliance-documents/{document_id}
POST /partner-managed/employees/{employee_id}/contracts/{contract_id}/additional-information

Add additional information for an EOR employee.

operationId: PartnerManaged_addAdditionalInformationForEorEmployee

Parameters

Name In Required Type Description
employee_id path optional string

Unique identifier for an employee in Deel.

contract_id path optional string

Deel contract id.

Request Body

Bank Account object that needs to be created

application/json
schema AdditionalEORInfoContainer
Property Type Required
data object required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /partner-managed/employees/{employee_id}/contracts/{contract_id}/additional-information
POST /partner-managed/employees/{employee_id}/contracts/{contract_id}/custom-verification-letter

Request employment verification letters, visa support, bank verification and more.

operationId: PartnerManaged_requestCustomVerificationLetter

Parameters

Name In Required Type Description
employee_id path optional string

Unique identifier for an employee in Deel.

contract_id path optional string

Deel contract id.

Request Body

Request custom verification letter to be requested

application/json
schema RequestCustomVerificationLetterContainer
Property Type Required
data object required
type string required
description string required
includeQRCode boolean optional
multipart/form-data
schema RequestCustomVerificationLetterWithFile
Property Type Required
type string required
description string required
includeQRCode boolean optional
files array required
file string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /partner-managed/employees/{employee_id}/contracts/{contract_id}/custom-verification-letter
POST /partner-managed/employees/{employee_id}/contracts/{contract_id}/signatures

Sign a contract as a employee.

operationId: PartnerManaged_signContract

Parameters

Name In Required Type Description
employee_id path optional string

Unique identifier for an employee in Deel.

contract_id path optional string

Deel contract id.

Request Body

Contract signature object that needs to be created

application/json
schema EmployeeContractSignatureToCreateContainer
Property Type Required
data object required
signature string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /partner-managed/employees/{employee_id}/contracts/{contract_id}/signatures

People 2 endpoints

POST /people/{worker_id}/time-offs

Add a time off request for a worker. New requests are auto-approved.

operationId: People_addTimeOffRequest

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

Detail of the time off that will be registered to the contract.

multipart/form-data
schema CreatePeopleTimeoff
Property Type Required
type string required
reason string required
end_date string required
start_date string required
attachments string optional

Responses

200

successful operation

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /people/{worker_id}/time-offs
POST /hris/direct-employees
operationId: People_createDirectEmployee

Request Body

Hris direct employee object that will be created

application/json
schema HrisDirectEmployee
Property Type Required
contract object required
compensation object required
currency string required
gross_annual_salary number required
vacation_info object optional
vacation_yearly_policy number required
vacation_accrual_start_date string required
job_information object required
employee_details object required
email string required
state string optional
country string required
last_name string required
first_name string required
work_email string required
nationality string required
team_information object required
team_id number required
legal_entity_id number required

Responses

201

Hris direct employee object that was created or edited

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

409

A matching profile already exists

500

Operation failed.

POST /hris/direct-employees

Tasks 3 endpoints

POST /contracts/{contract_id}/tasks

Create a new task for the contractor.

operationId: Tasks_createNewTask

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Contract object that needs to be created

application/json
schema InputToCreatePgoTask
Property Type Required
data object required
amount string required
attachment object optional
key string required
filename string required
description string required
date_submitted string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/tasks
POST /contracts/{contract_id}/tasks/many/reviews

Review multiple tasks to approve or decline the submitted work.

operationId: Tasks_reviewManyTasks

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Timesheet review objects that need to be created

application/json
schema RequestBodyToCreatePgoTaskReviewsReviewsContainer
Property Type Required
data object required
ids array required
reason string optional
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/tasks/many/reviews
POST /contracts/{contract_id}/tasks/{task_id}/reviews

Review a single task to approve or decline the submitted work.

operationId: Tasks_submitTaskReview

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

task_id path optional string

ID of task entity.

Request Body

Timesheet review objects that need to be created

application/json
schema RequestBodyToCreatePgoTaskReviewsByIdReviewsContainer
Property Type Required
data object required
reason string optional
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/tasks/{task_id}/reviews

Timeoff 1 endpoints

POST /contracts/{contract_id}/time-offs

Add a time off request for a full-time employee.

operationId: TimeOff_addRequestObsolete

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

Detail of the time off that will be registered to the contract.

application/json
schema CreateTimeoffContainer
Property Type Required
data object required
type string required
reason string optional
end_date string optional
start_date string optional
other_timeoff_name string optional
with_multiple_dates boolean required
is_end_date_half_day boolean optional
is_start_date_half_day boolean optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /contracts/{contract_id}/time-offs

Timesheets 3 endpoints

POST /timesheets

Submit work for a contractor.

operationId: Timesheets_submitWorkForContractor

Request Body

Timesheet object that needs to be created

application/json
schema TimesheetToCreateContainer
Property Type Required
data object required
quantity number required
contract_id string required
description string required
date_submitted string required
multipart/form-data
schema TimesheetToCreateWithFile
Property Type Required
quantity number required
contract_id string required
description string required
date_submitted string required
file string optional

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /timesheets
POST /timesheets/many/reviews

Review a batch of timesheets to approve or reject submitted work.

operationId: Timesheets_reviewMultiple

Request Body

Timesheet review objects that need to be created

application/json
schema TimesheetReviewsToCreateContainer
Property Type Required
data object required
ids array required
reason string optional
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /timesheets/many/reviews
POST /timesheets/{timesheet_id}/reviews

Review a timesheet to approve or decline submitted work.

operationId: Timesheets_reviewSingleTimesheet

Parameters

Name In Required Type Description
timesheet_id path optional number

ID of an existing timesheet

Request Body

Timesheet review object that need to be created

application/json
schema TimesheetReviewToCreateContainer
Property Type Required
data object required
reason string optional
status string required

Responses

201

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /timesheets/{timesheet_id}/reviews

Token 1 endpoints

POST /public-tokens

Create a public token to use with embedded Deel SDK components.

operationId: Token_createPublicToken

Request Body

Public token object that needs to be created.

application/json
schema CreatePublicTokenContainer
Property Type Required
data object required
scope array optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

POST /public-tokens

User 2 endpoints

POST /Users
operationId: User_createUser

Request Body

a new user without ‘id’

application/json
schema CreateClientUser
Property Type Required
name object required
givenName string optional
familyName string optional
schemas array required
userName string required
userType string required
application/scim+json
schema CreateClientUser
Property Type Required
name object required
givenName string optional
familyName string optional
schemas array required
userName string required
userType string required

Responses

201

successfully created user

400

bad request

401

authorization failure

403

permissions denied

404

not found

409

duplicate email

429

too many requests

500

internal server error

POST /Users
POST /Users/.search
operationId: User_searchOrList

Request Body

search parameters

application/json
schema SearchRequest
Property Type Required
count integer optional
filter string optional
schemas array optional
startIndex integer optional
application/scim+json
schema SearchRequest
Property Type Required
count integer optional
filter string optional
schemas array optional
startIndex integer optional

Responses

200

successful operation

400

bad request

401

authorization failure

403

permissions denied

429

too many requests

500

internal server error

POST /Users/.search

Webhooks 1 endpoints

POST /webhooks

Create a new webhooks subscription.

operationId: Webhooks_createSubscription

Request Body

required
application/json
schema CreateWebhookRequest
Property Type Required
url string required
name string required
events array required
status string required
api_version string required
description string required
signing_key string required

Responses

201

successful operation

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

POST /webhooks

Schemas

object AddWorkerBankAccountContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkerBankAccountToAdd"
    }
  },
  "x-internal": true
}
object AdditionalEORInfo
{
  "description": "Fields for country validation mandatory found at `/eor/validations/{country_code}`."
}
object AdditionalEORInfoContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdditionalEORInfo"
    }
  },
  "x-internal": true
}
object Address
{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "example": "CO",
      "description": "Region code."
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode"
    },
    "locality": {
      "type": "string",
      "example": "Denver",
      "description": "Locality name."
    },
    "postalCode": {
      "type": "string",
      "example": "44000",
      "description": "Postal code."
    },
    "streetAddress": {
      "type": "string",
      "example": "Deel Street 500",
      "description": "Street and number."
    }
  }
}
object AdjustmentCategory
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "c0431543f64c448e5ba4b525a50291",
      "description": "Unique identifier of an adjustment category."
    },
    "label": {
      "type": "string",
      "example": "Employee Dinner",
      "description": "The label of the adjustment category."
    },
    "unit_type": {
      "type": "string",
      "example": "currency",
      "description": "The unit type of the adjustment category."
    }
  }
}
object AdjustmentCreatedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/PayrollAdjustment"
    }
  },
  "x-internal": true
}
string AdjustmentStatusEnum
{
  "enum": [
    "open",
    "pending_approval",
    "overwritten",
    "failed",
    "success"
  ],
  "type": "string",
  "x-internal": true,
  "description": "Adjustment status"
}
object AdjustmentToCreate
{
  "type": "object",
  "required": [
    "contract_id",
    "amount",
    "title",
    "description",
    "adjustment_category_id",
    "file",
    "vendor",
    "country"
  ],
  "properties": {
    "file": {
      "type": "string",
      "format": "binary",
      "minLength": 1,
      "description": "File of adjustment."
    },
    "title": {
      "type": "string",
      "example": "Your title here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Title of adjustment."
    },
    "amount": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "example": 100.25,
      "minimum": 1,
      "minLength": 1,
      "description": "Amount of adjustment."
    },
    "vendor": {
      "type": "string",
      "example": "Vendor",
      "minLength": 3,
      "description": "Vendor of adjustment."
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode",
      "example": "CA",
      "description": "Country of adjustment."
    },
    "contract_id": {
      "type": "string",
      "example": "m3jk2j",
      "minLength": 5,
      "description": "The identifier of the contract associated with the adjustment"
    },
    "description": {
      "type": "string",
      "example": "Your description here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Description of adjustment."
    },
    "cycle_reference": {
      "type": "string",
      "example": "my_cycle_reference",
      "description": "Cycle reference of adjustment."
    },
    "move_next_cycle": {
      "type": "boolean",
      "example": true,
      "nullable": true,
      "description": "If an adjustments can belong to another payroll cycle."
    },
    "date_of_adjustment": {
      "$ref": "#/components/schemas/DateString",
      "example": "2023-11-02T00:00:00.000Z",
      "description": "The date of the expense associated with the adjustment."
    },
    "adjustment_category_id": {
      "type": "string",
      "example": "c9cf4c2c0165f48f494415390c3b49",
      "minLength": 25,
      "description": "Adjustment category id."
    }
  },
  "x-internal": true,
  "description": "Details of adjustment to create"
}
object AdjustmentToCreateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdjustmentToCreate"
    }
  },
  "x-internal": true
}
object AdjustmentToUpdate
{
  "type": "object",
  "properties": {
    "file": {
      "type": "string",
      "format": "binary",
      "minLength": 1,
      "description": "File of adjustment."
    },
    "title": {
      "type": "string",
      "example": "Your title here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Title of adjustment."
    },
    "amount": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "example": 100.25,
      "minimum": 1,
      "minLength": 1,
      "description": "Amount of adjustment."
    },
    "description": {
      "type": "string",
      "example": "Your description here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Description of adjustment."
    }
  },
  "x-internal": true,
  "description": "Details of adjustment to update"
}
object AdjustmentToUpdateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdjustmentToUpdate"
    }
  },
  "x-internal": true
}
object AdjustmentsCategoriesContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AdjustmentCategory"
      }
    }
  },
  "x-internal": true
}
object AdjustmentsContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/PayrollAdjustment"
      }
    }
  },
  "x-internal": true
}
object AdminUser
{
  "type": "object",
  "required": [
    "id",
    "first_name",
    "last_name",
    "email"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier",
      "nullable": false,
      "description": "Admin user profile id."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "User's email"
    },
    "last_name": {
      "type": "string",
      "nullable": false,
      "description": "User's last name"
    },
    "first_name": {
      "type": "string",
      "nullable": false,
      "description": "User's first name"
    }
  }
}
object AdminUserCreateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdminUserCreateRequest"
    }
  },
  "x-internal": true
}
object AdminUserCreateRequest
{
  "type": "object",
  "required": [
    "first_name",
    "last_name",
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "nullable": false,
      "description": "User's email"
    },
    "last_name": {
      "type": "string",
      "nullable": false,
      "minLength": 1,
      "description": "User's last name"
    },
    "first_name": {
      "type": "string",
      "nullable": false,
      "minLength": 1,
      "description": "User's first name"
    }
  }
}
object AdminUsersContainer
{
  "type": "object",
  "required": [
    "data",
    "page"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AdminUser"
      }
    },
    "page": {
      "$ref": "#/components/schemas/PageInfoWithoutCursorNew"
    }
  },
  "x-internal": true
}
object Agreement
{
  "type": "object",
  "required": [
    "id",
    "agreement_title",
    "agreement_type",
    "msa",
    "client_legal_entity",
    "provider_legal_entity"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier",
      "nullable": false
    },
    "msa": {
      "type": "object",
      "required": [
        "id",
        "title"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "agreement_type": {
      "type": "string",
      "example": "shield",
      "nullable": false
    },
    "agreement_title": {
      "type": "string",
      "nullable": false
    },
    "client_legal_entity": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier",
          "nullable": false
        },
        "name": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "provider_legal_entity": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier",
          "nullable": false
        },
        "name": {
          "type": "string",
          "example": "Deel Inc.",
          "nullable": false
        }
      }
    }
  },
  "x-internal": true
}
array AgreementList
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Agreement"
  },
  "x-internal": true
}
object AgreementListContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AgreementList"
    },
    "page": {
      "$ref": "#/components/schemas/PageInfoWithoutCursor"
    }
  },
  "x-internal": true
}
string AgreementsParamLimit
{
  "type": "string",
  "default": "50",
  "x-internal": true,
  "description": "Maximum number of records to return. This is supposed to be an integer but query parameters are string. Maximum is 50."
}
string AgreementsParamOffset
{
  "type": "string",
  "default": "0",
  "x-internal": true,
  "description": "Offset/index of record for the next page of records to return. This is supposed to be an integer but query parameters are string."
}
object AgreementsSearchForm
{
  "type": "object",
  "properties": {
    "limit": {
      "$ref": "#/components/schemas/AgreementsParamLimit"
    },
    "offset": {
      "$ref": "#/components/schemas/AgreementsParamOffset"
    },
    "contract_id": {
      "type": "string",
      "nullable": false
    }
  },
  "x-internal": true,
  "description": "Convenient model to encapsulate query parameters to get a list of agreements."
}
object AlternateEmailItem
{
  "type": "object",
  "title": "Root Schema",
  "required": [
    "email",
    "isVerified"
  ],
  "properties": {
    "email": {
      "$ref": "#/components/schemas/EmailType",
      "title": "Alternate email"
    },
    "isVerified": {
      "type": "boolean",
      "title": "True if email has been verified"
    }
  }
}
array AlternateEmailList
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/AlternateEmailItem"
  },
  "description": "List of alternate email addresses."
}
object ApiError
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "example": "/data/type",
      "description": "The JSON path where input validation failed"
    },
    "message": {
      "type": "string",
      "example": "Must have required property 'example_field'",
      "description": "A description of the returned error"
    }
  },
  "x-internal": true
}
object ApiErrorContainer
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ApiError"
      }
    },
    "request": {
      "$ref": "#/components/schemas/ApiErrorRequest"
    }
  },
  "x-internal": true
}
object ApiErrorRequest
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "example": "/rest/v2/example",
      "description": "The relative URL of the failed request"
    },
    "code": {
      "type": "number",
      "example": 3,
      "description": "The code of the source handler which produced the returned error"
    },
    "docs": {
      "type": "string",
      "example": "https://developer.deel.com/reference/example",
      "description": "A link to the official documentation for the requested endpoint resource"
    },
    "method": {
      "type": "string",
      "example": "POST",
      "description": "The HTTP method of the failed request"
    },
    "source": {
      "type": "string",
      "example": "AJV",
      "description": "The source handler which produced the returned error"
    },
    "status": {
      "type": "number",
      "example": 400,
      "description": "The status code of the response"
    },
    "api_req_id": {
      "type": "string",
      "example": "00000000-0000-0000-0000-000000000000",
      "description": "The request ID of the failed request"
    }
  },
  "x-internal": true
}
object AttachmentFileRef
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "nullable": false,
      "description": "File URL to download the attachment."
    }
  },
  "x-internal": true
}
object AuthenticationScheme
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "specUrl": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "documentationUrl": {
      "type": "string"
    }
  }
}
object AuthenticationSchemes
{
  "type": "object",
  "properties": {
    "authenticationSchemes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AuthenticationScheme"
      }
    }
  }
}
object BankAccountAdded
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "dcc7b587-2246-4909-853e-12056e90c451",
      "description": "ID of Bank Account."
    },
    "status": {
      "$ref": "#/components/schemas/BankAccountStatus"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeString"
    },
    "updated_at": {
      "$ref": "#/components/schemas/DateTimeString"
    }
  },
  "x-internal": true
}
object BankAccountAddedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountAdded"
    }
  },
  "x-internal": true
}
object BankAccountGuide
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "example": "countryCode",
      "description": "The key of the field."
    },
    "type": {
      "type": "string",
      "example": "text",
      "description": "Type of the field"
    },
    "label": {
      "type": "string",
      "example": "Country",
      "description": "Label for this field."
    },
    "required": {
      "type": "boolean",
      "example": true,
      "description": "Whether the field is required or not."
    },
    "validations": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationType"
      }
    },
    "values_allowed": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BankAccountValueAllowed"
      }
    }
  },
  "x-internal": true
}
object BankAccountGuideContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BankAccountGuide"
      }
    }
  }
}
string BankAccountStatus
{
  "enum": [
    "new",
    "pending",
    "approved",
    "failed"
  ],
  "type": "string",
  "x-internal": true,
  "description": "Bank Account status"
}
array BankAccountToAdd
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "key",
      "value"
    ],
    "properties": {
      "key": {
        "type": "string",
        "description": "The key of the bank account properties."
      },
      "value": {
        "type": "string",
        "description": "The value for that key property."
      }
    }
  },
  "x-internal": true
}
object BankAccountToAddContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountToAdd"
    }
  },
  "x-internal": true
}
object BankAccountUpdated
{
  "type": "object",
  "required": [
    "id",
    "status",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    },
    "updated_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  }
}
object BankAccountUpdatedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountUpdated"
    }
  }
}
object BankAccountValueAllowed
{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "example": "Argentina",
      "description": "The name of the allowed value."
    },
    "value": {
      "type": "string",
      "example": "AR",
      "description": "The key of the allowed value."
    }
  },
  "x-internal": true
}
object BankGuide
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "required": {
      "type": "boolean"
    },
    "validations": {
      "type": "object",
      "properties": {
        "regex": {
          "type": "string"
        },
        "maxLength": {
          "type": "integer"
        },
        "minLength": {
          "type": "integer"
        }
      }
    },
    "values_allowed": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}
object BasicContract
{
  "type": "object",
  "required": [
    "id",
    "title",
    "type",
    "status",
    "client",
    "worker",
    "invitations",
    "signatures",
    "is_shielded",
    "is_archived",
    "created_at",
    "termination_date"
  ],
  "properties": {
    "id": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    },
    "type": {
      "$ref": "#/components/schemas/ContractTypeEnum"
    },
    "scale": {
      "type": "string",
      "nullable": true,
      "description": "The payment scale (e.g., hourly, weekly, monthly, etc.)"
    },
    "title": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    },
    "client": {
      "$ref": "#/components/schemas/ClientOfBasicContract"
    },
    "status": {
      "$ref": "#/components/schemas/ContractStatusEnum"
    },
    "worker": {
      "$ref": "#/components/schemas/WorkerOfBasicContract"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeString"
    },
    "signatures": {
      "$ref": "#/components/schemas/SignaturesOfBasicContract"
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "A unique identifier for the object provided by an external system."
    },
    "invitations": {
      "$ref": "#/components/schemas/InvitationsOfBasicContract"
    },
    "is_archived": {
      "type": "boolean"
    },
    "is_shielded": {
      "type": "boolean"
    },
    "who_reports": {
      "$ref": "#/components/schemas/ContractWhoReportsEnum"
    },
    "notice_period": {
      "$ref": "#/components/schemas/NoticePeriod"
    },
    "termination_date": {
      "$ref": "#/components/schemas/DateTimeString"
    }
  },
  "x-internal": true
}
object BasicInvoiceAdjustment
{
  "type": "object",
  "required": [
    "id",
    "type",
    "status",
    "description",
    "date_submitted",
    "created_at",
    "currency_code",
    "quantity",
    "total_amount",
    "contract",
    "worksheet",
    "reported_by",
    "reviewed_by",
    "payment_cycle",
    "attachment"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "type": {
      "$ref": "#/components/schemas/InvoiceAdjustmentTypeEnum"
    },
    "scale": {
      "type": "string",
      "example": "custom",
      "nullable": true
    },
    "status": {
      "$ref": "#/components/schemas/InvoiceAdjustmentStatusEnum"
    },
    "contract": {
      "type": "object",
      "required": [
        "id",
        "title",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "type": {
          "$ref": "#/components/schemas/ContractTypeEnum"
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "quantity": {
      "type": "number",
      "example": 1,
      "nullable": true
    },
    "worksheet": {
      "type": "object",
      "nullable": true,
      "required": [
        "weeks",
        "days",
        "hours",
        "minutes"
      ],
      "properties": {
        "days": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "hours": {
          "type": "number",
          "example": 1,
          "minimum": 0
        },
        "weeks": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "minutes": {
          "type": "number",
          "example": 0,
          "minimum": 0
        }
      }
    },
    "attachment": {
      "$ref": "#/components/schemas/FileAttachmentInfo"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    },
    "invoice_id": {
      "type": "number",
      "nullable": true
    },
    "description": {
      "type": "string",
      "nullable": false
    },
    "reported_by": {
      "type": "object",
      "nullable": false,
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "full_name": {
          "type": "string",
          "example": "John Smith",
          "nullable": false
        }
      }
    },
    "reviewed_by": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "full_name",
        "reviewed_at",
        "remarks"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "remarks": {
          "type": "string",
          "nullable": false
        },
        "full_name": {
          "type": "string",
          "example": "Jane Smith"
        },
        "reviewed_at": {
          "type": "string",
          "example": "2022-05-04T03:45:27.899Z"
        }
      }
    },
    "custom_scale": {
      "type": "string",
      "nullable": true
    },
    "total_amount": {
      "type": "string",
      "example": "200.0000",
      "nullable": false
    },
    "currency_code": {
      "$ref": "#/components/schemas/CurrencyCodeRequired"
    },
    "payment_cycle": {
      "type": "object",
      "nullable": false,
      "required": [
        "start_date",
        "end_date"
      ],
      "properties": {
        "end_date": {
          "$ref": "#/components/schemas/DateTimeStringRequired"
        },
        "start_date": {
          "$ref": "#/components/schemas/DateTimeStringRequired"
        }
      }
    },
    "date_submitted": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  },
  "x-internal": true
}
object BasicLegalEntity
{
  "type": "object",
  "required": [
    "id",
    "name",
    "entity_type",
    "entity_subtype"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false
    },
    "country": {
      "type": "string",
      "nullable": false
    },
    "entity_type": {
      "$ref": "#/components/schemas/LegalEntityType"
    },
    "entity_subtype": {
      "$ref": "#/components/schemas/LegalEntitySubType"
    }
  },
  "x-internal": true
}
object BasicOrganization
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    }
  },
  "x-internal": true
}
object BasicTeam
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    }
  },
  "x-internal": true
}
object BasicTimesheet
{
  "type": "object",
  "required": [
    "id",
    "type",
    "status",
    "description",
    "date_submitted",
    "created_at",
    "currency_code",
    "total_amount",
    "quantity",
    "contract",
    "worksheet",
    "reported_by",
    "reviewed_by",
    "attachment"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "type": {
      "type": "string",
      "description": "Deprecated - it is always \"work\""
    },
    "scale": {
      "type": "string",
      "example": "custom",
      "nullable": true
    },
    "status": {
      "$ref": "#/components/schemas/TimesheetStatusEnum"
    },
    "contract": {
      "type": "object",
      "required": [
        "id",
        "title",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "type": {
          "$ref": "#/components/schemas/ContractTypeEnum"
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "quantity": {
      "type": "number",
      "example": 1,
      "nullable": true
    },
    "worksheet": {
      "type": "object",
      "nullable": true,
      "required": [
        "weeks",
        "days",
        "hours",
        "minutes"
      ],
      "properties": {
        "days": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "hours": {
          "type": "number",
          "example": 1,
          "minimum": 0
        },
        "weeks": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "minutes": {
          "type": "number",
          "example": 0,
          "minimum": 0
        }
      }
    },
    "attachment": {
      "$ref": "#/components/schemas/FileAttachmentInfo"
    },
    "created_at": {
      "type": "string",
      "example": "2022-05-04T03:45:27.108Z",
      "nullable": false
    },
    "description": {
      "type": "string",
      "nullable": false
    },
    "reported_by": {
      "type": "object",
      "nullable": false,
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "full_name": {
          "type": "string",
          "example": "John Smith",
          "nullable": false
        }
      }
    },
    "reviewed_by": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "full_name",
        "reviewed_at",
        "remarks"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "remarks": {
          "type": "string",
          "nullable": false
        },
        "full_name": {
          "type": "string",
          "example": "Jane Smith"
        },
        "reviewed_at": {
          "type": "string",
          "example": "2022-05-04T03:45:27.899Z"
        }
      }
    },
    "custom_scale": {
      "type": "string",
      "nullable": true
    },
    "total_amount": {
      "type": "string",
      "example": "200.0000",
      "nullable": false,
      "description": "is equal to quantity times rate of active work statement + bonus in this record"
    },
    "currency_code": {
      "$ref": "#/components/schemas/CurrencyCodeRequired"
    },
    "payment_cycle": {
      "type": "object",
      "properties": {
        "end_date": {
          "$ref": "#/components/schemas/DateTimeString"
        },
        "start_date": {
          "$ref": "#/components/schemas/DateTimeString"
        }
      }
    },
    "date_submitted": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  },
  "x-internal": true
}
string BenefitContributionStatusEnum
{
  "enum": [
    "MANDATORY",
    "OPTIONAL",
    "UNAVAILABLE"
  ],
  "type": "string"
}
string BenefitContributionTypeEnum
{
  "enum": [
    "PERCENTAGE",
    "FIXED_AMOUNT",
    "MATCH"
  ],
  "type": "string"
}

Versions

Version Endpoints Schemas Ingested Status
1.25.0 153 508 2026-05-11 current
1.25.0 153 508 2026-04-16