Right to work
POST https://api.checksharecode.co.uk/v1/check/right-to-work checks a candidate or employee can work in the UK, on gov.uk, as their employer. Everything you send to this endpoint is here, and only that. A live check usually takes 15 to 40 seconds, so set your timeout to at least 60 seconds, or use the async endpoint.
What you send
rtw_test_… keys return sandbox data. rtw_live_… keys run a real check.Bearer rtw_live_…sandbox-latency=realistic makes a test code take as long as a live check. See test codes. Live keys ignore it.sandbox-latency=realisticAB1CD2EF31990-01-01Acme LtdDon’t send checker_type, which is for right to rent, or job_title, purpose and other_purpose, which are for immigration status: a right to work request with any of them is refused with 400 INVALID_INPUT. You don’t need check either, as the endpoint names the check. If you send it, it must be right_to_work.
Save the photo and PDF if you need a record: we keep a copy of the check for up to 7 days only to investigate problems, then delete it.
curl https://api.checksharecode.co.uk/v1/check/right-to-work \
-H "authorization: Bearer $CHECKSHARECODE_API_KEY" \
-H "content-type: application/json" \
-d '{
"share_code": "AB1CD2EF3",
"date_of_birth": "1990-01-01",
"company_name": "Acme Ltd"
}'{
"outcome": "ACCEPTED",
"title": "Right to work",
"name": "JANE EXAMPLE DOE",
"date_of_birth": "1990-01-01",
"details": "They have the right to work in the UK.",
"nationality": null,
"permission_type": null,
"start_date": null,
"expiry_date": null,
"recheck_date": null,
"conditions": [],
"restrictions": [],
"reference": "WE-EXAMPLE-12",
"company_name": "Acme Ltd",
"check_date": "2026-09-27",
"share_code": "AB1CD2EF3",
"photo_data_url": "data:image/jpeg;base64,/9j/4AAQ…",
"pdf_data_url": "data:application/pdf;base64,JVBERi0…",
"checked_at": "2026-09-27T10:14:03.000Z"
}Try it
The same for every check
These are written once, for this endpoint, right to rent, immigration status and driving licence alike.