Skip to navigation
Welcome to

Deel Developer Documentation

REST, webhooks, MCP, and a CLI for hiring, payroll, HR, and compliance. Ship apps, automations, and embedded experiences on the workforce platform 40,000+ companies run their global teams on.

REST · OpenAPI 3.0.1MCP · Webhooks · CLI
# Create a contractor contract POST https://api.letsdeel.com/rest/contracts Authorization: Bearer $DEEL_API_KEY Content-Type: application/json { “data”: { “title”: “Senior Backend Engineer”, “type”: “ongoing_time_based”, “country_code”: “GB”, “start_date”: “2026-02-01”, “worker”: { “first_name”: “Alex”, “last_name”: “Rivera”, “expected_email”: “alex.r@acme.dev” }, “compensation_details”: { “amount”: 8000, “currency_code”: “GBP”, “frequency”: “monthly” } } }
// 201 Created · 138ms { “data”: { “id”: “ctr_7HqK2mJ…”, “status”: “draft”, “type”: “ongoing_time_based”, “country_code”: “GB” } }
// Create a contractor contract const response = await fetch(“https://api.letsdeel.com/rest/contracts”, { method: “POST”, headers: { “Authorization”: “Bearer ” + process.env.DEEL_API_KEY, “Content-Type”: “application/json”, }, body: JSON.stringify({ data: { title: “Senior Backend Engineer”, type: “ongoing_time_based”, country_code: “GB”, start_date: “2026-02-01”, worker: { first_name: “Alex”, last_name: “Rivera”, expected_email: “alex.r@acme.dev”, }, compensation_details: { amount: 8000, currency_code: “GBP”, frequency: “monthly”, }, }, }), }); const contract = await response.json(); console.log(contract.data.id); // → ctr_7HqK2mJ…
# Create a contractor contract import os import requests response = requests.post( “https://api.letsdeel.com/rest/contracts”, headers={ “Authorization”: “Bearer ” + os.environ[“DEEL_API_KEY”], “Content-Type”: “application/json”, }, json={ “data”: { “title”: “Senior Backend Engineer”, “type”: “ongoing_time_based”, “country_code”: “GB”, “start_date”: “2026-02-01”, “worker”: { “first_name”: “Alex”, “last_name”: “Rivera”, “expected_email”: “alex.r@acme.dev”, }, “compensation_details”: { “amount”: 8000, “currency_code”: “GBP”, “frequency”: “monthly”, }, }, }, ) contract = response.json() print(contract[“data”][“id”]) # → ctr_7HqK2mJ…
// Create a contractor contract payload, _ := json.Marshal(map[string]any{ “data”: map[string]any{ “title”: “Senior Backend Engineer”, “type”: “ongoing_time_based”, “country_code”: “GB”, “start_date”: “2026-02-01”, “worker”: map[string]any{ “first_name”: “Alex”, “last_name”: “Rivera”, “expected_email”: “alex.r@acme.dev”, }, “compensation_details”: map[string]any{ “amount”: 8000, “currency_code”: “GBP”, “frequency”: “monthly”, }, }, }); req, _ := http.NewRequest(“POST”, “https://api.letsdeel.com/rest/contracts”, bytes.NewReader(payload)) req.Header.Set(“Authorization”, “Bearer “+os.Getenv(“DEEL_API_KEY”)) req.Header.Set(“Content-Type”, “application/json”) resp, _ := http.DefaultClient.Do(req) // → 201 Created
// Create a contractor contract var json = """ { “data”: { “title”: “Senior Backend Engineer”, “type”: “ongoing_time_based”, “country_code”: “GB”, “start_date”: “2026-02-01”, “worker”: { “first_name”: “Alex”, “last_name”: “Rivera”, “expected_email”: “alex.r@acme.dev” }, “compensation_details”: { “amount”: 8000, “currency_code”: “GBP”, “frequency”: “monthly” } } }"""; var request = HttpRequest.newBuilder() .uri(URI.create(“https://api.letsdeel.com/rest/contracts”)) .header(“Authorization”, “Bearer ” + System.getenv(“DEEL_API_KEY”)) .header(“Content-Type”, “application/json”) .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString()); // → 201 Created
# Connect Claude Desktop to Deel’s MCP server # ~/Library/Application Support/Claude/claude_desktop_config.json { “mcpServers”: { “deel”: { “url”: “https://api.letsdeel.com/mcp” } } }
// Claude now has access to tools like: • org_person_list • contract_list • timeoff_request_create • eor_employment_cost_calculate
# Create an invoice adjustment from the terminal $ deel adjustments create —invoice —env demo \ —input type=BONUS,amount=500,contract_id=C123,description=“Q3 bonus”,date_submitted=2026-09-01
{ “data”: { “adjustment_id”: “adj_4Kp9…”, “status”: “pending”, “is_created”: true }, “meta”: { “request_id”: “8b1c1a2e-…” } } # Agents discover any command before calling it $ deel adjustments create —invoice —help —json
● 201 Created 138 ms

Launch and integrate apps

One platform for every integration

Deel PayrollDeel HireDeel MobilityDeel IT

What will you build on Deel today?

Need anything else? We’re here.

Trusted by 40,000+ companies, from startups to enterprise

Built with