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
LogoLogo
SupportDeel Home
Built with
HomeGuidesAPI ReferenceChangelog
Welcome to

Deel Developer Documentation

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

bolt Quickstart

menu_book API reference

REST · OpenAPI 3.0.1MCP · Webhooks
# Create a contractor contract POST https://api.letsdeel.com/rest/v2/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/v2/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/v2/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/v2/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/v2/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

● 201 Created 138 ms

Launch and integrate apps

smart_toyMCP Server

Connect AI agents to workforce data

Expose contracts, people, payroll, and time data to Claude, ChatGPT, or your own agent with Deel’s MCP server. OAuth, scoped access, and tool discovery out of the box.

Connect Deel to your AI agent north_east
extensionApp Store

Build an integration for the Deel App Store

Get your integration in front of 40,000+ Deel customers. OAuth install flow, managed listings and review, and the Partner API — everything you need to drive adoption from day one.

Build & publish your Deel app north_east
publicDeel Embedded

Global employment infrastructure, via API

Build global employment natively into your product — your team owns the UX, Deel stays invisible. Built on owned infrastructure across 130+ entities in 150+ countries. 50M API calls per month at 99.95% reliability.

Build with Embedded north_east

One platform for every integration

Deel PayrollDeel HireDeel MobilityDeel IT

What will you build on Deel today?

Hire and pay global employees

Enable global hiring workflows

Turn a job offer into a fully onboarded employee in 150+ countries, with contracts, compliance, and payroll included.

Build a global hiring flow arrow_forward

Automate payroll operations

Push raises, bonuses, deductions, and expense reimbursements into payroll automatically. No spreadsheets, no missed deadlines.

Build a payroll inputs flow arrow_forward

Sync workforce cost and payroll data

Stream salary, tax, and employer cost data from Deel into your BI stack, giving finance teams visibility into global headcount spend by country, entity, or worker type.

Build a workforce cost feed arrow_forward

Pay and manage contractors

Automate contractor onboarding

Generate a compliant contract, collect a signature, and capture KYC and bank details before the worker logs their first hour.

Build contractor onboarding arrow_forward

Process contractor payments

Submit hours and receipts from your own product, route approvals, and push them straight through to the next payout.

Build a time & expense flow arrow_forward

Trigger real-time payments

Trigger off-cycle payments, milestone payouts, and bonuses in 120+ currencies. No payroll cycle required.

Build a payments flow arrow_forward

Wire Deel into your stack

Sync workforce systems and identity

Two-way sync with your IdP or HRIS so a new hire shows up everywhere they need to, and a leaver disappears just as cleanly.

Sync people across systems arrow_forward

Automate compliance workflows

Run background checks, right-to-work, screenings, and immigration cases through one API, and prove it to auditors later.

Automate compliance arrow_forward

Trigger event driven automations

Subscribe to contracts, payments, timesheets, and approvals. Trigger Slack alerts, Jira tickets, or your own logic the moment they change.

Build event-driven flows arrow_forward

Need anything else? We’re here.

forum

Join the community

Chat with other developers building on Deel in Deel Stack.

schedule

Changelog

Every API change, shipped on the date it went live.

key

How to get API keys

Step-by-step Help Center article. Keys are issued from the Deel app.

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

ShopifyKlarnaRedditJelly BellyInstacartOn Running
About UsCustomer ReviewsHelp CenterAPI ReferenceIntegrationsDeel BlogResource LibraryCareers
Built with
© Copyright 2024. All Rights Reserved.
DisclaimerPrivacy PolicyTerms of ServiceCookie PolicyCookie Settings