GuidesAPI ReferenceChangelog
Changelog

Added

  • Contract APISign worker contract: created_at is now included in the success response, allowing users to track the time when a contract is created
  • Contract APISign worker contract: updated_at is now included in the success response, allowing users to track the time when a contract is signed
  • Deel EngageRetrieve worker's actionable journeys: actionable_path is now included in the success response, containing the URL that a user can navigate to in order to start or resume a course

Added

  • ScreeningsData retrieval: entity_type now accepts hris_profile as a value, allowing users to retrieve screenings for an entity based on their HRIS profile

Fixed

  • Webhooks APICreate a webhook: Documentation updated to reflect the removal of nesting the request payload inside a data object
  • Webhooks APIEdit a webhook: Documentation updated to reflect the removal of nesting the request payload inside a data object

Added

  • ContractList contract amendments: New endpoint is added, allowing users to list the amendments made to a specific contract throughout its lifecycle
  • ScreeningsGet worker's KYC details: New endpoint is added, allowing organizations to retrieve detailed KYC verification data for workers

Changed

  • Job scopesRequest job scope validation: client_name is now supported in the request payload, allowing users to specify the client name for job scope validation
  • ContractSign worker contract: created_at is now included in the success response, allowing to track the time when a contract is signed
  • ContractSign worker contract: updated_at is now included in the success response, allowing to track the last update time of the contract

Added

  • PayoutsGet the auto-withdrawal setting: New endpoint that allows users to check if auto-withdrawal is enabled and view the selected withdrawal method
  • PayoutsChange the auto-withdrawal setting: New endpoint to update a contractor's auto-withdrawal setting, allowing users to enable or disable auto-withdrawal and specify a withdrawal threshold or method
  • PayoutsRequest to withdraw funds: New endpoint to manually trigger a fund withdrawal, allowing users to specify an amount and beneficiary
  • PayoutsList contractor balances: New endpoint to retrieve the available balances of a contractor, allowing users to check payout-ready funds per currency

List of all industry subcategories

Provides a list of industry subcategories for Legal Entity classification
Returns a paginated list of industry subcategories that can be associated with a Legal Entity.
Each item includes subcategory details, associated industry category name, and timestamps (created_at, updated_at). Results can be sorted by category_name or subcategory_name, and support cursor-based pagination for efficient data retrieval.
This endpoint is particularly useful when configuring or updating Legal Entities, enabling users to input valid industry options.

Endpoint: GET /rest/v2/industries

Token scopes: legal-entity:read

API Reference: List of all industry subcategories

Request Example:

curl --request GET \
     --url https://api.letsdeel.com/rest/v2/industries?limit=20&order=ASC&sort_by=subcategoryName \
     --header 'accept: application/json' \
     --header 'authorization: Bearer {{token}}'

Worker Contract Sign API

Sign a contract as a worker.

Endpoint: POST /rest/v2/workers/contracts/:contract_id/signatures

Token scopes: worker:write

API Reference: Sign worker contract

Request Example:

curl -X POST \
  "https://api.letsdeel.com/rest/v2/workers/contracts/37nex2x/signatures" \
  -H "Authorization: Bearer <worker_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "worker_signature": "John Doe"
    }
  }'

Enhancement: Add Candidate

API Reference: Retrieve Seniority Levels

Request body changes

Added personalEmail property to the parameters in order to allow differentiating between work email (email property) and personal email (personalEmail new property)

Endpoint improvements and new onboarding webhook events

🚀 New onboarding webhook events

  1. onboarding.status.updated: Triggered when the onboarding status is updated

    //Sample payload
    
    {
      "data": {
        "meta": {
          "event_type": "onboarding.status.updated",
          "event_type_id": "f37087e1-91fd-4d49-a4a8-a8e3218fd2e3",
          "organization_id": "98d14f88-c97a-4ec5-9858-36a731f6e2a5",
          "organization_name": "6QWYZCZ5",
          "tracking_id": "26c2f543-f93a-4fb0-a35b-618f77c09de5"
        },
        "resource": {
          "hiring_type": "contractor",
          "hris_profile_id": "5afd4d99-27da-4fc3-9683-65963a6e0914",
          "status": "ONBOARDING",
          "old_status": "PENDING_INVITE",
          "tracker_id": "eyJjb250cmFjdE9pZCI6IjN2cDUyNGsiLCJoaXJpbmdUeXBlIjoiY29udHJhY3RvciIsInVzZXJJZCI6MTY4NTgzNX0"
        }
      },
      "timestamp": "2025-07-21T16:52:23.907Z"
    }
    
  2. onboarding.checklist.updated: Triggered when the onboarding checklist is updated

    //Sample payload
    
    {
      "data": {
        "meta": {
          "event_type": "onboarding.checklist.updated",
          "event_type_id": "f37087e1-91fd-4d49-a4a8-a8e3218fd2e3",
          "organization_id": "98d14f88-c97a-4ec5-9858-36a731f6e2a5",
          "organization_name": "6QWYZCZ5",
          "tracking_id": "26c2f543-f93a-4fb0-a35b-618f77c09de5"
        },
        "resource": {
          "checklist_id": "7a3ef189-b191-4b58-bfda-211f1bf7af7a",
          "hiring_type": "contractor",
          "hris_profile_id": "5afd4d99-27da-4fc3-9683-65963a6e0914",
          "old_status": "PENDING",
          "status": "DONE",
          "step_id": "95611eee-ab61-419f-ae62-8adbcc41f778",
          "step_slug": "contractor_sign_up_to_deel",
          "tracker_id": "eyJjb250cmFjdE9pZCI6IjN2cDUyNGsiLCJoaXJpbmdUeXBlIjoiY29udHJhY3RvciIsInVzZXJJZCI6MTY4NTgzNX0"
        }
      },
      "timestamp": "2025-07-21T16:52:23.907Z"
    }
    

🚀 Enhancement: Retrieve Seniority Levels

API Reference: Retrieve Seniority Levels

Request body changes

Added support for filtering the seniorities list by EOR contracts

  • is_eor_contract (boolean, optional)
    New public API query parameter to include only levels valid for EOR contracts

🚀 New Endpoint: Create Child Organization

This process creates a new organization that includes the following elements:

  • An API token specific to the new organization, which can be used to perform API operations on its behalf.
  • A default group associated with the organization.
  • A hierarchical structure that connects the authenticated organization (the Parent Organization) to the new organization (the Child Organization). This hierarchy allows the Child Organization to inherit white-label settings from its Parent Organization.
  • A user from the Parent Organization who will be assigned to the Child Organization.
    This endpoint establishes the minimum requirements necessary for the new organization to be fully operational immediately after its creation.
    Prerequisites: Requires an organization token with the organizations: write scope. The organization associated with the token must have the partner portal feature enabled, and it must be a parent organization (i.e., it should not be a child of another organization in the hierarchy).
    Endpoint: POST /rest/v2/organizations/children
    Token scopes: organizations:write
    API Reference: Create Child Organization
    Request Example:
curl --request POST \
  --url https://api.letsdeel.com/rest/v2/organizations/children \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --header 'x-auth-token: {{token}}' \
  --data '{
    "data": {
      "child_organization": {
        "name": "Child organization",
        "headquarters_country": "US",
        "workforce_size": 100,
        "is_api_enabled": false,
        "department": "Finance"
      },
      "parent_organization": {
        "admin_email": "[email protected]"
      }
    }
  }