Skip to content

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.

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.

FieldTypeMeaning
first_namestringWorker’s legal first name. Must not be empty.
last_namestringWorker’s legal last name. Must not be empty.
date_of_birthdateWorker’s date of birth as YYYY-MM-DD.
nationalitycountry codeWorker’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.

Every context item contains a code and one scalar value. Codes must be unique within one request.

Value typeJSON valueRules
stringstringA non-empty value. Surrounding whitespace is removed.
integernumberA whole number greater than or equal to zero. Don’t send a quoted number.
booleanbooleanJSON true or false, not the strings "true" or "false".
datestringA valid calendar date in YYYY-MM-DD format.
country_codestringA two-letter ISO 3166-1 alpha-2 code. Dockt normalizes it to uppercase.
single_selectstringOne exact value from the options listed for that code.
CodeTypeMeaning and accepted values
employment.relationshipsingle_selectWorker’s relationship to the assignment: posted_employee, local_employee, or self_employed.
worker.originsingle_selectWorker’s origin category for mobility rules: eea_swiss or non_eea.
employment.posting_statussingle_selectWhether the employment is posted across borders or local.
employment.employer_countrycountry_codeCountry in which the employer is established.
employment.social_security_regimesingle_selectSocial-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_requiredbooleanWhether the case must satisfy Vander Elst conditions.
employment.vander_elst_candidatebooleanWhether the worker and assignment may qualify for a Vander Elst route and should be evaluated for it.
employment.non_eea_temporary_services_exemptionbooleanWhether a temporary-services exemption is claimed for a non-EEA self-employed worker.
employment.limosa_exemption_claimedbooleanWhether the case claims an exemption from the Limosa declaration requirement.
employment.limosa_exemption_reasonstringReason supplied for the claimed Limosa exemption.
employer.has_belgian_vatbooleanWhether the employer has a Belgian VAT number or KBO registration.
employer.established_in_eea_swissbooleanWhether the posting employer is genuinely established in the EEA or Switzerland.
employer.has_belgian_establishmentbooleanWhether the employer has an establishment in Belgium.
employer.is_temporary_agencybooleanWhether the employer operates as a temporary-employment agency.
assignment.duration_daysintegerExpected total length of the assignment in calendar days.
assignment.residency_duration_daysintegerRelevant period of legal residence, in days.
assignment.be.stay_duration_daysintegerExpected number of days the worker will stay in Belgium.
assignment.be.duration_days_in_180integerNumber of assignment days that fall within the relevant rolling 180-day window.
assignment.is_cleaning_sectorbooleanWhether the worker’s assignment is in the cleaning sector.
CodeTypeMeaning and accepted values
assessment.evaluation_datedateDate on which Dockt should evaluate the case. Use the relevant business date, not automatically the upload date.
project.be.worksite_regionsingle_selectBelgian region of the worksite: flanders, brussels, wallonia, german_community, or unknown.
project.is_constructionbooleanWhether the project is a construction project.
project.be.activity_30bisbooleanWhether the work is immovable work covered by the Belgian 30bis rules.
project.be.activity_ready_mixed_concretebooleanWhether the project includes ready-mixed concrete activity.
project.be.activity_meat_30terbooleanWhether the activity falls under the meat-sector 30ter rules.
project.be.activity_guarding_30terbooleanWhether the activity is guarding or surveillance covered by 30ter rules.
project.is_cleaning_for_third_partybooleanWhether cleaning work is performed for a third party.
project.temporary_mobile_construction_sitebooleanWhether the worksite is a temporary or mobile construction site.
project.asbestos_hazardous_worksbooleanWhether the project includes asbestos or other hazardous works.
project.contract_value_ex_vatintegerContract value excluding VAT, expressed as the whole-number amount used by your workflow.
project.site_total_cost_ex_vatintegerTotal site cost excluding VAT, expressed as a whole-number amount.
project.subcontractor_countintegerNumber of subcontractors involved in the project.
project.subcontract_chain_depthintegerNumber of levels in the subcontracting chain.
project.customer_rolesingle_selectYour organization’s role: principal, main_contractor, intermediate_contractor, subcontractor, or unknown.
project.relationship_to_contractorsingle_selectWhether the relationship to the relevant contractor is direct, indirect, or unknown.
project.direct_contractor_risk_sectorbooleanWhether the direct contractor operates in a sector subject to the evaluated risk rules.
project.contractor_uses_third_country_nationalsbooleanWhether the contractor uses workers who are nationals of countries outside the applicable free-movement area.
project.include_payment_withholding_checksbooleanWhether the Assessment should include payment-withholding checks.
project.include_posted_worker_inspection_filebooleanWhether the workflow should include the posted-worker inspection-file requirement.
project.include_technical_hse_requirementsbooleanWhether technical health, safety, and environment requirements should be included.
CodeTypeMeaning
payment.plannedbooleanWhether a payment is planned for the evaluated case.
payment.invoice_amount_ex_vatintegerInvoice amount excluding VAT, expressed as a whole-number amount.
payment.invoice_payment_datedatePlanned or actual invoice payment date.
payment.contractor_or_subcontractorbooleanWhether the payment is made to a contractor or subcontractor.

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.