Assessment inputs
An Assessment starts with a worker identity and optional context about the employment, assignment, project, and payment being evaluated. Dockt uses these inputs to determine which requirements apply.
You can send known context when you create the Assessment. If Dockt needs another value, the response includes an input_requests entry that gives you the code, type, reason, and allowed options.
Request shape
Section titled “Request shape”Create an Assessment with POST /v1/assessments:
{ "external_id": "worker-case-1042", "worker": { "first_name": "Amina", "last_name": "Diallo", "date_of_birth": "1990-05-17", "nationality": "FR" }, "context": [ { "code": "employment.relationship", "value": "posted_employee" }, { "code": "employment.employer_country", "value": "FR" }, { "code": "assessment.evaluation_date", "value": "2026-08-23" } ]}external_id and external_profile are optional. Use external_id to correlate the Assessment with a record in your system. Send external_profile only when your Workspace has a matching profile configured.
Worker fields
Section titled “Worker fields”| Field | Type | Meaning |
|---|---|---|
first_name | string | Worker’s legal first name. Must not be empty. |
last_name | string | Worker’s legal last name. Must not be empty. |
date_of_birth | date | Worker’s date of birth as YYYY-MM-DD. |
nationality | country code | Worker’s nationality as an ISO 3166-1 alpha-2 code such as BE or FR. |
The worker object identifies the person being assessed. Don’t place employment, employer, project, or assignment information in these fields; send it as context.
Context value types
Section titled “Context value types”Every context item contains a code and one scalar value. Codes must be unique within one request.
| Value type | JSON value | Rules |
|---|---|---|
string | string | A non-empty value. Surrounding whitespace is removed. |
integer | number | A whole number greater than or equal to zero. Don’t send a quoted number. |
boolean | boolean | JSON true or false, not the strings "true" or "false". |
date | string | A valid calendar date in YYYY-MM-DD format. |
country_code | string | A two-letter ISO 3166-1 alpha-2 code. Dockt normalizes it to uppercase. |
single_select | string | One exact value from the options listed for that code. |
Worker and employment context
Section titled “Worker and employment context”| Code | Type | Meaning and accepted values |
|---|---|---|
employment.relationship | single_select | Worker’s relationship to the assignment: posted_employee, local_employee, or self_employed. |
worker.origin | single_select | Worker’s origin category for mobility rules: eea_swiss or non_eea. |
employment.posting_status | single_select | Whether the employment is posted across borders or local. |
employment.employer_country | country_code | Country in which the employer is established. |
employment.social_security_regime | single_select | Social-security regime that applies: eu_eea_swiss_coordination, uk_withdrawal_or_tca, bilateral_agreement, third_country_no_agreement, belgian_social_security, or unknown. |
employment.vander_elst_required | boolean | Whether the case must satisfy Vander Elst conditions. |
employment.vander_elst_candidate | boolean | Whether the worker and assignment may qualify for a Vander Elst route and should be evaluated for it. |
employment.non_eea_temporary_services_exemption | boolean | Whether a temporary-services exemption is claimed for a non-EEA self-employed worker. |
employment.limosa_exemption_claimed | boolean | Whether the case claims an exemption from the Limosa declaration requirement. |
employment.limosa_exemption_reason | string | Reason supplied for the claimed Limosa exemption. |
employer.has_belgian_vat | boolean | Whether the employer has a Belgian VAT number or KBO registration. |
employer.established_in_eea_swiss | boolean | Whether the posting employer is genuinely established in the EEA or Switzerland. |
employer.has_belgian_establishment | boolean | Whether the employer has an establishment in Belgium. |
employer.is_temporary_agency | boolean | Whether the employer operates as a temporary-employment agency. |
assignment.duration_days | integer | Expected total length of the assignment in calendar days. |
assignment.residency_duration_days | integer | Relevant period of legal residence, in days. |
assignment.be.stay_duration_days | integer | Expected number of days the worker will stay in Belgium. |
assignment.be.duration_days_in_180 | integer | Number of assignment days that fall within the relevant rolling 180-day window. |
assignment.is_cleaning_sector | boolean | Whether the worker’s assignment is in the cleaning sector. |
Evaluation and project context
Section titled “Evaluation and project context”| Code | Type | Meaning and accepted values |
|---|---|---|
assessment.evaluation_date | date | Date on which Dockt should evaluate the case. Use the relevant business date, not automatically the upload date. |
project.be.worksite_region | single_select | Belgian region of the worksite: flanders, brussels, wallonia, german_community, or unknown. |
project.is_construction | boolean | Whether the project is a construction project. |
project.be.activity_30bis | boolean | Whether the work is immovable work covered by the Belgian 30bis rules. |
project.be.activity_ready_mixed_concrete | boolean | Whether the project includes ready-mixed concrete activity. |
project.be.activity_meat_30ter | boolean | Whether the activity falls under the meat-sector 30ter rules. |
project.be.activity_guarding_30ter | boolean | Whether the activity is guarding or surveillance covered by 30ter rules. |
project.is_cleaning_for_third_party | boolean | Whether cleaning work is performed for a third party. |
project.temporary_mobile_construction_site | boolean | Whether the worksite is a temporary or mobile construction site. |
project.asbestos_hazardous_works | boolean | Whether the project includes asbestos or other hazardous works. |
project.contract_value_ex_vat | integer | Contract value excluding VAT, expressed as the whole-number amount used by your workflow. |
project.site_total_cost_ex_vat | integer | Total site cost excluding VAT, expressed as a whole-number amount. |
project.subcontractor_count | integer | Number of subcontractors involved in the project. |
project.subcontract_chain_depth | integer | Number of levels in the subcontracting chain. |
project.customer_role | single_select | Your organization’s role: principal, main_contractor, intermediate_contractor, subcontractor, or unknown. |
project.relationship_to_contractor | single_select | Whether the relationship to the relevant contractor is direct, indirect, or unknown. |
project.direct_contractor_risk_sector | boolean | Whether the direct contractor operates in a sector subject to the evaluated risk rules. |
project.contractor_uses_third_country_nationals | boolean | Whether the contractor uses workers who are nationals of countries outside the applicable free-movement area. |
project.include_payment_withholding_checks | boolean | Whether the Assessment should include payment-withholding checks. |
project.include_posted_worker_inspection_file | boolean | Whether the workflow should include the posted-worker inspection-file requirement. |
project.include_technical_hse_requirements | boolean | Whether technical health, safety, and environment requirements should be included. |
Payment context
Section titled “Payment context”| Code | Type | Meaning |
|---|---|---|
payment.planned | boolean | Whether a payment is planned for the evaluated case. |
payment.invoice_amount_ex_vat | integer | Invoice amount excluding VAT, expressed as a whole-number amount. |
payment.invoice_payment_date | date | Planned or actual invoice payment date. |
payment.contractor_or_subcontractor | boolean | Whether the payment is made to a contractor or subcontractor. |
Respond to input requests
Section titled “Respond to input requests”An Assessment response may ask for a context value:
{ "code": "project.customer_role", "label": "Customer role", "reason": "The applicable requirement depends on your role in the contracting chain.", "value_type": "single_select", "options": [ { "value": "principal", "label": "principal" }, { "value": "main_contractor", "label": "main contractor" } ]}Use code unchanged, render an input appropriate for value_type, and restrict selectable values to options when the array is non-empty. Show label to the user and use reason to explain why the information is needed.
Update the Assessment with PATCH /v1/assessments/{assessmentId}. Context values merge by code, so send only the values you want to add or replace.
Treat this page as the complete accepted code catalog for the current API contract. Your integration should still render unfamiliar future input_requests from their returned value_type and options instead of rejecting the entire Assessment response.