Assessment inputs
An Assessment is a case for checking one worker’s details and documents. Use inputs to send the information your application already knows, such as a name, date of birth, or assignment dates. Every identity, employment, assignment, project, and payment field is optional. You can create an empty case with {} and add details later.
Dockt compares the details your application sends with information from documents and external sources. If a check still needs a detail, the response lists it in input_requests. Each entry includes the field code, value type, reason, and allowed options. Your application can use this list to find missing details in its own records.
Request shape
Section titled “Request shape”Create an Assessment with POST /v1/assessments:
{ "external_id": "worker-case-1042", "job": { "namespace": "contract_management", "external_id": "site-electrician" }, "inputs": [ { "code": "person.name.first", "value": "Amina", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "person.name.last", "value": "Diallo", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "person.date_of_birth", "value": "1990-05-17", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "person.nationality", "value": "FR", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "employment.relationship", "value": "employee", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "employment.employer_country", "value": "FR", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "assignment.start_date", "value": "2026-09-01", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } }, { "code": "assignment.end_date", "value": "2026-11-30", "source": { "kind": "integration", "reference": "contract_management:worker:1042" } } ]}external_id and job are optional. Use external_id to link the Assessment to a record in your system. Send job when its namespace and external_id identify a job mapped to an active Job Profile in your Workspace. A Job Profile defines the qualification requirements for that job.
To reuse a case when several people or processes might request it, send reuse_existing: true with a nonblank external_id. Dockt performs the lookup and creation as one operation in the active Workspace. It returns the existing case without updating its inputs, or creates one if none exists. Multiple matches return 409. Omit reuse_existing to create a new case.
Identity Claims
Section titled “Identity Claims”Send identity details in inputs. Each value includes its source, just like the other fields. Dockt calls a value from your application, a person, or a document a Claim: information to evaluate, rather than proof that the value is correct. You can supply a name, date of birth, or nationality independently.
| Code | Type | Meaning |
|---|---|---|
person.name |
string | Full legal name when the source does not separate names. |
person.name.first |
string | Legal given names. |
person.name.last |
string | Legal family names. |
person.date_of_birth |
date | Unambiguous calendar date in YYYY-MM-DD. |
person.nationality |
country code or list | One code or up to eight codes, such as ["FR", "MA"]. Dockt preserves all nationalities. |
person.residence_country |
country code | Residence country, distinct from nationality and employer country. |
organization.legal_name |
string | Legal employer name, distinct from the selected worker. |
Read resolved_inputs to see which values Dockt can use and where they came from. The response’s worker is a read-only identity summary. To add or change a value, send it through inputs.
Context value types
Section titled “Context value types”Every input contains code, value, and source: { kind, reference }. Use integration for information imported from another system and operator for information entered by a person. Keep reference stable for the same source record so Dockt can track corrections.
A request may contain up to 64 inputs. The same code can appear from different sources, but one source cannot submit the same code twice in a request. Only nationality accepts a list. Dockt determines whether information is verified; your application cannot set that verification level.
Use the following JSON types for input values:
| 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”Employment and posting describe different parts of the case. employment.relationship identifies an employee or a self-employed worker. employment.posting_status identifies a local assignment or one posted from abroad. Self-employed workers can also be posted.
These fields describe the worker, employer, and assignment. EEA refers to the European Economic Area.
| Code | Type | Meaning and accepted values |
|---|---|---|
employment.relationship |
single_select |
Whether the worker is an employee or self_employed. |
employment.posting_status |
single_select |
Whether this assignment is posted from abroad or local. |
assignment.worksite_country |
country_code |
Country where this assignment is performed. |
employment.social_security_country |
country_code |
Country whose social-security legislation applies; not inferred from nationality. |
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.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.start_date |
date |
First date on which the worker is expected to perform the assignment. Periodic monitoring can run before this date and schedules a fresh reassessment on it. |
assignment.end_date |
date |
Last date on which the worker is expected to perform the assignment. The date is inclusive, and periodic reassessment stops after it. |
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. |
If you provide both assignment dates, assignment.start_date must be on or before assignment.end_date.
Evaluation and project context
Section titled “Evaluation and project context”These fields describe the evaluation date and the project:
| Code | Type | Meaning and accepted values |
|---|---|---|
assessment.evaluation_date |
date |
Date on which Dockt should evaluate the case. This value makes the Assessment point-in-time, so Dockt doesn’t periodically reassess it. |
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. |
Configure payment-withholding, posted-worker inspection-file, and technical health-and-safety requirements through Workspace Assessment Policy. They are policy choices, not facts about one Assessment.
Payment context
Section titled “Payment context”These fields describe payments associated with the case:
| 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. |
Resolve context gaps through your integration
Section titled “Resolve context gaps through your integration”An Assessment response may include an input_requests entry for a detail that Dockt could not determine:
{ "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" } ]}For a value your system already knows, use code unchanged and match value_type. If options is non-empty, use one of those values. Keep this list in your backend; don’t turn it into a form for users to complete.
Send known values through inputs with PATCH /v1/assessments/{assessmentId}. Don’t guess missing values. You can upload documents while details are still missing, and Dockt can continue checks that have enough information. Dockt adds conditional evidence requirements only after it can determine whether they apply.
In your application, show Dockt’s result and the missing or incorrect evidence it identifies. If Dockt has too little information to check the worker, explain that in one short summary. Let users add documents instead of asking them to fill in every missing detail.
The Dockt console and browser extension follow this approach. They show the result, the available details, and differences between sources without asking users to supply answers.
Once usable document or qualification evidence satisfies an applicable requirement, Dockt stops reporting missing values for its other accepted options.
Corrections and source history
Section titled “Corrections and source history”A new value for the same code and source replaces that source’s current value. Dockt keeps the earlier value in the history and preserves values from other sources. Send value: null to withdraw this source’s value. Sending an identical input doesn’t change the case.
Optional valid_from and valid_until limit when a value applies. Both dates are inclusive. The response’s inputs keeps the original values, normalized values used for comparison, recording dates, and links to the values that replaced them.
Read values and verification levels
Section titled “Read values and verification levels”resolved_inputs shows each field’s value, sources, and status:
established: Dockt has a value it can use.insufficient_information: Dockt doesn’t have enough information to establish a value.conflicting_information: The available sources disagree.
The field’s assurance describes how the value is supported:
declared: A person or connected system provided the value.document_supported: Document evidence supports the value.authority_verified: An independent external source verified the value.
Dockt calls a value established by an external source an Assertion, and a value it resolves for evaluation a Fact. Extraction confidence describes how confidently Dockt read a document; it doesn’t verify that the information is true.
When comparing names, Dockt normalizes Unicode, case, and whitespace and preserves punctuation. It never guesses dates. It keeps all nationalities from the sources rather than treating an additional nationality as a conflict.
Worker-specific documents must match the selected worker and assignment before Dockt uses their employment information. A valid document for another worker can still be unsuitable for this case. Copies of the same credential count as one source. Document coverage dates don’t set the actual assignment dates.
Review conflicting values
Section titled “Review conflicting values”To record a person’s review of a conflict, submit an operator input with reconciliation: { claim_ids, reason }. Include all current source Claim IDs for that field and the reason for choosing the value.
The reviewed value remains declared; a manual review doesn’t verify it with an external source. Dockt preserves the other sources and returns the field to an unresolved state if new conflicting evidence appears. A review based on outdated sources returns 409. Keep Claim IDs in your integration’s requests rather than showing them in the worker-facing interface.
Values Dockt calculates
Section titled “Values Dockt calculates”Dockt derives age, nationality-based rule selection, and calendar assignment duration from the available information. Don’t submit worker.origin, age, or calculated legal-route flags. Assignment duration and residence duration describe different periods.
When Dockt has usable assignment start and end dates, it counts the calendar days, including both dates. It uses this result for assignment.duration_days if no duration was supplied. The result keeps both date sources and their assurance.
A supplied duration takes precedence, including zero. Conflicting duration Claims require review. Assignment dates don’t establish how long the worker stays in Belgium, their period of legal residence, or totals for a rolling 180-day period.
This reference lists all input codes accepted by the current API contract. If a future input_requests entry is unfamiliar, preserve it without rejecting the entire Assessment response or guessing a value.