Skip to main content
The Partner Onboarding API verifies your end customers’ identity. You create a customer, upload their documents, and the verification result comes back asynchronously. Endl handles the verification provider; you only work with the endpoints here.
This API does not share the Partner API’s response envelope. A successful response body is the data object — there is no { data, code, message, status } wrapper. See Errors and lifecycle.

Two customer types, the same endpoints

Individual (KYC)

Identity fields, a questionnaire and custom fields, then a photo ID and a selfie.

Business (KYB)

A company plus one entry per beneficial owner, company documents, and each owner’s documents.
There is also an import path: if you have already verified the customer elsewhere, pass a shareToken instead of the full payload.

Base URL

Every endpoint lives under /api/v0/customer.
The testing guide gives the local host and says the QA host comes from the backend team. https://qa-api.endl.xyz is used here for consistency with the rest of this documentation — confirm it before pointing an integration at it.

Authentication

One header. There is no login step and no secret to send.
A missing or blank key returns 401 Authentication Failed!. A key without the onboarding permission returns 403 on every call.

Content types

application/json
Create, update, get, list, kyc-link and delete. Any other content type returns 415.
multipart/form-data
A file part named document, plus text form fields.

Rate limiting

Each partner has a per-minute cap. Exceeding it returns 429 and the request is not processed — retry in the next minute window.

Correlation id

Every response carries an X-Request-ID header. Log it, and quote it when reporting a problem so the backend can trace that exact request.

Validate everything, then create

On create and update the whole payload — identity, questionnaire and custom fields — is validated before anything is written. If a single field is wrong the request is rejected with 400 and nothing is created. It is all-or-nothing, so a failed create leaves no partial customer behind.