Background ChecksCandidate PortalTrack a check by reference GET
GET
/api/v1/api/bgc/track/{tracking_id}/

Returns a candidate's own view of their background check progress. Takes no API key — the tracking reference is the credential, so treat it as one and do not publish it anywhere the candidate would not expect.

This is the candidate-facing counterpart to the timeline, and returns less: progress only, not your internal notes or provider detail. Link candidates here if you want them to self-serve on status.

Authorization

ApiKeyAuth
X-API-Key<token>

In: header

Path Parameters

tracking_id*string

The candidate request reference, used here as the tracking reference.

Formatuuid

Response Body

application/json

curl -X GET "https://example.com/api/v1/api/bgc/track/497f6eca-6276-4993-bfeb-53cbbbba6f08/"
{  "data": [    {      "id": 0,      "event_type": "package_created",      "event_type_display": "string",      "title": "string",      "description": "string",      "actor_type": "string",      "actor_name": "string",      "is_milestone": true,      "is_error": true,      "created_at": "2019-08-24T14:15:22Z",      "time_ago": "string"    }  ],  "status": true,  "message": "Request successful.",  "errors": {},  "meta": {    "timestamp": "2019-08-24T14:15:22Z",    "version": "v1",    "request_id": "string"  },  "pagination": {    "page": 0,    "page_size": 0,    "total_pages": 0,    "total_items": 0  }}
Response Codes & Statuses: Prembly API responses include custom response_code values (e.g., 00 Success, 01 Not Found, 02 Unavailable).
View Response Codes Guide
Prembly Slack Community

Join our developer Slack channel for real-time integration support, engineering updates, and direct Q&A with the Prembly team.

Join Slack Channel

Submit candidate form POST

Submits a candidate's completed background check form. Takes no API key — the caller is whichever page the candidate filled in, identified only by the `request_key` issued when the request was created. **Which page that is depends on the `callback_url` you set when creating the request.** Leave it pointing at the Prembly-hosted form and the candidate is sent there, and you need not call this endpoint at all. Point it at a page of your own and you are hosting the form: you collect the candidate's details and post them here yourself. ### If you host the form You take on the obligations that come with collecting this data. The form gathers personal information — identity, address, employment and education history, and named references — so you are responsible for obtaining the candidate's consent and for telling them what the data will be used for, before you submit it. This endpoint performs no consent check and will accept whatever it is given. Consent to the background check itself is captured later in the provider's own flow and reported back as a `consent_signed` webhook event; that is a separate step and does not cover your collection of the data here. Your page must also be served from the host you registered as `callback_url`. A `redirect_url` on an unrecognised host is ignored, because these endpoints are unauthenticated and honouring one would be an open redirect. ### Submitting Accepts JSON or `multipart/form-data`. Inline file blobs inside `request_data` are converted to storage URLs before the verification engine is called; multipart file fields on the same request are stored and replaced with URLs. Submitting twice for the same `request_key` is rejected.

List all check types GET

Returns every check type, optionally narrowed by country. **Prices are yours, not list prices.** Where your organisation has negotiated an override it replaces the country default in the response. Currency follows `country_code` when you pass one, and otherwise your wallet's currency — so the same check can come back priced differently depending on how you ask.