Background ChecksCandidate PortalSubmit candidate form POST
POST
/api/v1/api/bgc/candidate-form-data/

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.

Authorization

ApiKeyAuth
X-API-Key<token>

In: header

Request Body

TypeScript Definitions

Use the request body type in TypeScript.

Serializer for candidate form submission.

Response Body

application/json

curl -X POST "https://example.com/api/v1/api/bgc/candidate-form-data/" \  -H "Content-Type: application/json" \  -d '{    "request_key": "123e4567-e89b-12d3-a456-426614174000",    "request_data": {      "first_name": "John",      "last_name": "Doe",      "email": "john.doe@example.com",      "phone": "+2348012345678",      "date_of_birth": "1990-01-15",      "address": {        "street": "123 Main Street",        "city": "Lagos",        "state": "Lagos",        "country": "Nigeria",        "postal_code": "100001"      },      "employment_history": [        {          "company": "Tech Corp",          "position": "Software Engineer",          "start_date": "2020-01-01",          "end_date": "2023-12-31",          "is_current": false        }      ],      "education": [        {          "institution": "University of Lagos",          "degree": "Bachelor of Science",          "field_of_study": "Computer Science",          "graduation_year": 2019        }      ],      "references": [        {          "name": "Jane Smith",          "relationship": "Manager",          "email": "jane.smith@example.com",          "phone": "+2348098765432"        }      ]    }  }'
{  "data": {},  "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