For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
SupportDeel Home
OverviewPlatformEmployer of RecordContractorsGlobal PayrollHREmbeddedDeel ITAPI ReferenceChangelog
OverviewPlatformEmployer of RecordContractorsGlobal PayrollHREmbeddedDeel ITAPI ReferenceChangelog
  • Resources
    • Blog
    • Community
    • API spec
  • Contractors
    • Introduction
    • Invoice adjustments
    • Timesheets
  • Common Use Cases
    • Sign contracts and amendments in bulk
    • Give bonus to contractors
    • Reimburse contractor expenses
  • Endpoints
      • PATCHAdd external Id
      • POSTCreate a new contract
      • GETList of contracts
      • GETRetrieve a single contract
LogoLogo
SupportDeel Home
EndpointsContracts

Create a new contract

POST
/contracts
POST
/rest/v2/contracts
$curl -X POST https://api.letsdeel.com/rest/v2/contracts \
> -H "Authorization: Bearer <token>" \
> -H "Content-Type: application/json" \
> -d '{
> "data": {
> "meta": {
> "documents_required": true
> },
> "title": "Software Developer",
> "client": {
> "team": {
> "id": "string"
> },
> "legal_entity": {
> "id": "string"
> }
> },
> "job_title": {},
> "type": "pay_as_you_go_time_based",
> "start_date": "1999-12-31",
> "compensation_details": {
> "amount": 100,
> "cycle_end": 15,
> "frequency": "monthly",
> "currency_code": "GBP",
> "first_payment": 500,
> "cycle_end_type": "DAY_OF_MONTH",
> "payment_due_days": 7,
> "payment_due_type": "REGULAR",
> "first_payment_date": "1999-12-31",
> "pay_before_weekends": true,
> "scale": "daily"
> }
> }
>}'
1{
2 "data": {
3 "id": "5vrzvjn",
4 "type": "time_based",
5 "title": "Software Developer",
6 "client": {
7 "team": {
8 "id": "00000000-0000-0000-0000-000000000000",
9 "name": "Engineering"
10 },
11 "legal_entity": {
12 "id": "00000000-0000-0000-0000-000000000000",
13 "name": "John Doe",
14 "type": "company",
15 "email": "test@example.com",
16 "subtype": "LLC",
17 "vat_number": "12345678",
18 "registration_number": "12345678"
19 },
20 "id": "00000000-0000-0000-0000-000000000000",
21 "email": "test@example.com",
22 "full_name": "John Doe"
23 },
24 "status": "new",
25 "worker": {
26 "id": "00000000-0000-0000-0000-000000000000",
27 "email": "test@example.com",
28 "image": "https://example.com/image.jpg",
29 "country": "US",
30 "full_name": "John Doe",
31 "last_name": "Doe",
32 "first_name": "John",
33 "nationality": "US",
34 "legal_entity": {
35 "type": "company",
36 "personal_name": "John Doe",
37 "registration_number": "12345678"
38 },
39 "date_of_birth": "2022-05-24T09:38:46.235Z",
40 "expected_email": "test@example.com",
41 "alternate_email": [
42 {
43 "email": "test@example.com",
44 "isVerified": true
45 }
46 ]
47 },
48 "job_title": "Software Developer",
49 "created_at": "2022-05-24T09:38:46.235Z",
50 "signatures": {
51 "signed_at": "2022-05-24T09:38:46.235Z",
52 "client_signature": "John Doe",
53 "client_signed_at": "2022-05-24T09:38:46.235Z",
54 "worker_signature": "John Doe",
55 "worker_signed_at": "2022-05-24T09:38:46.235Z"
56 },
57 "start_date": "2022-05-24T09:38:46.235Z",
58 "invitations": {
59 "client_email": "test@example.com",
60 "worker_email": "test@example.com"
61 },
62 "is_archived": false,
63 "special_clause": "Special clause",
64 "termination_date": "2022-05-24T09:38:46.235Z",
65 "work_statement_id": "1597885e-c30d-4747-b665-d9ac4990e90a",
66 "employment_details": {
67 "type": "employee",
68 "days_per_week": 5,
69 "hours_per_day": 8,
70 "probation_period": 30,
71 "paid_vacation_days": 20,
72 "state": "CO",
73 "country": "US"
74 },
75 "compensation_details": {
76 "scale": "hourly",
77 "amount": "100.00",
78 "frequency": "monthly",
79 "currency_code": "GBP",
80 "first_payment": "100.00",
81 "first_payment_date": "2022-05-24T09:38:46.235Z",
82 "gross_annual_salary": "100.00",
83 "gross_signing_bonus": "100.00",
84 "gross_variable_bonus": "100.00"
85 },
86 "quote": {
87 "benefits": [
88 {
89 "fee": 100,
90 "name": "Health Insurance",
91 "plan": "Basic",
92 "price": 100,
93 "fee_usd": 100,
94 "currency": "GBP",
95 "price_usd": 100
96 }
97 ],
98 "currency": "GBP",
99 "cba_total": 900,
100 "created_at": "1999-12-31",
101 "updated_at": "1999-12-31",
102 "salary_total": 900,
103 "annual_salary": 900,
104 "cba_total_usd": 900,
105 "breakdown_costs": {
106 "monthly": {
107 "costs": [
108 {
109 "name": "Health Insurance",
110 "total": 50,
111 "currency": "GBP",
112 "total_usd": 50
113 }
114 ],
115 "total": 900,
116 "total_usd": 900
117 }
118 },
119 "salary_total_usd": 900,
120 "gross_salary_total": 900,
121 "mobility_fee_total": 900,
122 "monthly_cost_total": 900,
123 "platform_fee_total": 900,
124 "employer_cost_total": 900,
125 "gross_salary_total_usd": 900,
126 "mobility_fee_total_usd": 900,
127 "monthly_cost_total_usd": 900,
128 "platform_fee_total_usd": 900,
129 "employer_cost_total_usd": 900,
130 "severance_accrual_total": 900,
131 "recurring_allowance_total": 900,
132 "severance_accrual_total_usd": 900,
133 "recurring_allowance_total_usd": 900
134 },
135 "seniority": {
136 "id": 123456,
137 "name": "Mid (Individual Contributor Level 2)",
138 "level": 2
139 },
140 "external_id": "00000000-0000-0000-0000-000000000000",
141 "who_reports": "both",
142 "custom_fields": [
143 {
144 "name": "Employee ID",
145 "value": "54234"
146 }
147 ],
148 "notice_period": 15,
149 "scope_of_work": "Software development"
150 }
151}

Creates a new contractor contract and returns it with its assigned id. After creation, invite the contractor to sign via POST /contracts/{contract_id}/invitations. Token scopes: contracts:write

Was this page helpful?
Previous

List of contracts

Next
Built with

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 curl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \ -H 'Authorization: Bearer YOUR-TOKEN-HERE' ``` [Learn more about authentication](/api/authentication)
OR
AuthorizationBearer

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

Request

This endpoint expects an object.
dataobjectRequired

Response

Successful operation.
dataobject

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
500
Internal Server Error

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.

1curl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \
2 -H 'Authorization: Bearer YOUR-TOKEN-HERE'

Learn more about authentication