Deel subpackage_contractorHiring API

The subpackage_contractorHiring API from Deel — 6 operation(s) for subpackage_contractorhiring.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/deel-subpackage-contractorhiring-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

deel-subpackage-contractorhiring-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Endpoints subpackage_contractorHiring API
  version: 1.0.0
servers:
- url: https://api.letsdeel.com/rest/v2
- url: https://api-staging.letsdeel.com/rest/v2
tags:
- name: subpackage_contractorHiring
paths:
  /contracts/{contract_id}/documents:
    post:
      operationId: create-contract-document
      summary: Attach a file to contract
      description: "Attach a file to contract document.\n **Token scopes**: `contracts:write`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: Deel contract id.
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contractor-hiring_createContractDocument_Response_201'
        '400':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
      requestBody:
        description: A form to attach a file to contract document.
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: Upload the file you want to attach to this entry.
  /contracts/{contract_id}/invite:
    get:
      operationId: get-contract-invite
      summary: Get worker invite link
      description: "Generates and returns a signed invitation URL that allows a worker to review and sign their contract securely. Use this endpoint to initiate or resend the contract signing process after the contract has been created. Requires the contract_id, which is provided during the initial Create Contract workflow.\n **Token scopes**: `contracts:read`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: Deel contract id.
        required: true
        schema:
          type: string
      - name: locale
        in: query
        description: Locale to use for the invite link.
        required: false
        schema:
          type: string
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contractor-hiring_getContractInvite_Response_200'
        '400':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
  /contracts/{contract_id}/preview:
    get:
      operationId: get-contract-preview
      summary: Preview a contract agreement
      description: "Retrieve an IC and EOR contract agreement content in HTML. If no template is specified, the default or currently assigned template will be used. This endpoint does not support Global Payroll contract type.\n **Token scopes**: `contracts:read`, `worker:read`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: Deel contract id.
        required: true
        schema:
          type: string
      - name: templateId
        in: query
        description: ID of an existing contract template.
        required: false
        schema:
          type: string
          format: uuid
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '400':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
  /contracts/{contract_id}/invitations:
    delete:
      operationId: get-contract-invitations
      summary: Remove invite
      description: "Remove invite in order to re-invite a worker to sign the contract\n **Token scopes**: `contracts:write`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: Deel contract id.
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contractor-hiring_getContractInvitations_Response_200'
        '400':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
    post:
      operationId: create-contract-invitation
      summary: Send contract to worker
      description: "Invite a worker to sign the contract. Worker will be notified via email\n **Token scopes**: `contracts:write`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: Deel contract id.
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contractor-hiring_createContractInvitation_Response_201'
        '400':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/ContractsContractIdInvitationsPostRequestBodyContentApplicationJsonSchemaData'
  /contracts/{contract_id}/payment_cycles:
    get:
      operationId: get-contract-payment-cycles
      summary: Retrieve contractor payment dates
      description: "Fetches a list of payment dates associated with a specific contract. This endpoint provides information on when contractors are scheduled to be paid, along with the current status of each payment cycle.\n **Token scopes**: `contracts:read`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: The Deel contract ID for which payment dates are being retrieved.
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A successful response containing contractor payment dates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contractor-hiring_getContractPaymentCycles_Response_200'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
  /contracts/{contract_id}/signatures:
    post:
      operationId: create-contract-signature
      summary: Sign a contract
      description: "Sign a contract as a client.\n **Token scopes**: `contracts:write`"
      tags:
      - subpackage_contractorHiring
      parameters:
      - name: contract_id
        in: path
        description: Deel contract id.
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contractor-hiring_createContractSignature_Response_201'
        '400':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '401':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '403':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '404':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
        '500':
          description: Operation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorContainer'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/ContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaData'
components:
  schemas:
    ApiErrorRequest:
      type: object
      properties:
        method:
          type: string
          description: The HTTP method of the failed request
        url:
          type: string
          description: The relative URL of the failed request
        status:
          type: number
          format: double
          description: The status code of the response
        api_req_id:
          type: string
          description: The request ID of the failed request
        docs:
          type: string
          description: A link to the official documentation for the requested endpoint resource
        source:
          type: string
          description: The source handler which produced the returned error
        code:
          type: number
          format: double
          description: The code of the source handler which produced the returned error
      title: ApiErrorRequest
    ContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        created:
          type: boolean
      required:
      - created
      title: ContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaData
    ContractsContractIdInvitationsPostRequestBodyContentApplicationJsonSchemaDataLocale:
      type: string
      enum:
      - en
      - es
      - fr
      - de
      - it
      - pt
      - pl
      - nn
      - nl
      - da
      - deAT
      - fi
      - sv
      - nlBE
      - ja
      default: en
      description: Locale of the email
      title: ContractsContractIdInvitationsPostRequestBodyContentApplicationJsonSchemaDataLocale
    ContractsContractIdDocumentsPostResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        key:
          type: string
          description: You can call attachments end-point, get key and URL to upload your file.
        filename:
          type: string
          description: Original filename you used to upload using attachments end-point.
      required:
      - key
      - filename
      description: This object is used for linking file attachments to your records.
      title: ContractsContractIdDocumentsPostResponsesContentApplicationJsonSchemaData
    contractor-hiring_createContractDocument_Response_201:
      type: object
      properties:
        data:
          oneOf:
          - $ref: '#/components/schemas/ContractsContractIdDocumentsPostResponsesContentApplicationJsonSchemaData'
          - type: 'null'
          description: This object is used for linking file attachments to your records.
      required:
      - data
      title: contractor-hiring_createContractDocument_Response_201
    contractor-hiring_createContractInvitation_Response_201:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ContractsContractIdInvitationsPostResponsesContentApplicationJsonSchemaData'
      required:
      - data
      title: contractor-hiring_createContractInvitation_Response_201
    contractor-hiring_createContractSignature_Response_201:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ContractsContractIdSignaturesPostResponsesContentApplicationJsonSchemaData'
      required:
      - data
      title: contractor-hiring_createContractSignature_Response_201
    contractor-hiring_getContractInvitations_Response_200:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ContractsContractIdInvitationsDeleteResponsesContentApplicationJsonSchemaData'
      required:
      - data
      title: contractor-hiring_getContractInvitations_Response_200
    ApiError:
      type: object
      properties:
        message:
          type: string
          description: A description of the returned error
        path:
          type: string
          description: The JSON path where input validation failed
      title: ApiError
    contractor-hiring_getContractInvite_Response_200:
      type: object
      properties:
        data:
          type: string
      required:
      - data
      title: contractor-hiring_getContractInvite_Response_200
    ContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaDataContractTemplateId:
      oneOf:
      - type: number
        format: double
      - type: string
      description: Please use null to use default Deel contract template; otherwise you can use the template you created and customized. If template ID is not in payload, template stays unchanged.
      title: ContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaDataContractTemplateId
    ApiErrorContainer:
      type: object
      properties:
        request:
          $ref: '#/components/schemas/ApiErrorRequest'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
      title: ApiErrorContainer
    ContractsContractIdInvitationsPostResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        created:
          type: boolean
      required:
      - created
      title: ContractsContractIdInvitationsPostResponsesContentApplicationJsonSchemaData
    ContractsContractIdInvitationsDeleteResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        deleted:
          type: boolean
          description: Confirms the deletion.
      required:
      - deleted
      title: ContractsContractIdInvitationsDeleteResponsesContentApplicationJsonSchemaData
    contractor-hiring_getContractPaymentCycles_Response_200:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContractsContractIdPaymentCyclesGetResponsesContentApplicationJsonSchemaDataItems'
      required:
      - data
      title: contractor-hiring_getContractPaymentCycles_Response_200
    ContractsContractIdPaymentCyclesGetResponsesContentApplicationJsonSchemaDataItems:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the payment.
        status:
          $ref: '#/components/schemas/ContractsContractIdPaymentCyclesGetResponsesContentApplicationJsonSchemaDataItemsStatus'
          description: The current status of the payment cycle.
        due_date:
          type: string
          format: date-time
          description: The date and time when the payment is due.
      required:
      - id
      - status
      - due_date
      title: ContractsContractIdPaymentCyclesGetResponsesContentApplicationJsonSchemaDataItems
    ContractsContractIdInvitationsPostRequestBodyContentApplicationJsonSchemaData:
      type: object
      properties:
        email:
          type: string
          format: email
          description: Worker email
        locale:
          $ref: '#/components/schemas/ContractsContractIdInvitationsPostRequestBodyContentApplicationJsonSchemaDataLocale'
          description: Locale of the email
        message:
          type: string
          description: Message to the worker
      title: ContractsContractIdInvitationsPostRequestBodyContentApplicationJsonSchemaData
    ContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaData:
      type: object
      properties:
        client_signature:
          type: string
          description: Signature of client.
        contract_template_id:
          $ref: '#/components/schemas/ContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaDataContractTemplateId'
          description: Please use null to use default Deel contract template; otherwise you can use the template you created and customized. If template ID is not in payload, template stays unchanged.
      required:
      - client_signature
      title: ContractsContractIdSignaturesPostRequestBodyContentApplicationJsonSchemaData
    ContractsContractIdPaymentCyclesGetResponsesContentApplicationJsonSchemaDataItemsStatus:
      type: string
      enum:
      - active
      - upcoming
      - awaiting_payment
      - overdue
      description: The current status of the payment cycle.
      title: ContractsContractIdPaymentCyclesGetResponsesContentApplicationJsonSchemaDataItemsStatus
  securitySchemes:
    deelToken:
      type: http
      scheme: bearer
      description: "## Authentication\nThe 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.\n\n```curl\ncurl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \\\n  -H 'Authorization: Bearer YOUR-TOKEN-HERE'\n```\n\n[Learn more about authentication](/api/authentication)\n"
    oauth2:
      type: http
      scheme: bearer
      description: Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/