Returns the current state of an onboarding requisition: verification status, analysis status, liveness status and the current step of the journey. This is the endpoint your application polls from creation until the final decision.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Endpoint
GET /v3/onboarding/{onboarding_requisition_id}
Headers
| Parameter | Type | Description | Required or Optional | Example |
|---|---|---|---|---|
| X-Onboarding-Token | String | Access token of the onboarding requisition, returned in the access_token field when the requisition was created. It authorizes every call made for that requisition. | required | kR4tX0pQ7sV9nL2mB6yH8wZ3cJ1fA5dE7gT0uI9oP4s |
Path Parameters
| Parameter | Type | Description | Required | Example |
|---|---|---|---|---|
| onboarding_requisition_id | Integer | Identifier of the onboarding requisition to be read | Yes | 10482 |
Request Examples
Poll while the end user completes the proof of life:
GET /v3/onboarding/10482
X-Onboarding-Token: kR4tX0pQ7sV9nL2mB6yH8wZ3cJ1fA5dE7gT0uI9oP4sPoll after the form was submitted:
GET /v3/onboarding/10483
X-Onboarding-Token: 7wD2sN9kV4bX1mQ6tL3yH8pZ0cR5fJ2aE7gU4iO1nS6Response Details
Waiting for the liveness (individual onboarding):
{
"worked": true,
"onboarding_requisition_id": 10482,
"onboarding_type": "PF",
"status": "PENDING",
"status_internal": null,
"liveness_status": "PENDING",
"current_step": "LIVENESS",
"liveness_url": "https://liveness.example.com/start/abc123def456",
"liveness_attempts_left": 2,
"submitted_at": null,
"company": null,
"representative_document": null,
"updated_at": "2026-09-04T14:19:04Z"
}After the form was submitted (company onboarding):
{
"worked": true,
"onboarding_requisition_id": 10483,
"onboarding_type": "PJ",
"status": "IN_PROGRESS",
"status_internal": null,
"liveness_status": "PASSED",
"current_step": "PROCESSING",
"liveness_url": null,
"liveness_attempts_left": 2,
"submitted_at": "2026-09-04T12:00:00Z",
"company": {
"official_name": "Example Company LTDA",
"fantasy_name": "Example Company",
"opening_date": "2015-03-12",
"legal_nature": "Limited Liability Company",
"legal_nature_code": "2062",
"main_activity": "Custom computer programming services",
"main_activity_code": "6201-5/01",
"joint_stock": "100000.00",
"zip_code": "90010150",
"state": "RS",
"city": "Porto Alegre",
"street": "Avenida Borges de Medeiros",
"neighborhood": "Centro Historico",
"number": "1000",
"complement": "Suite 302"
},
"representative_document": "11144477735",
"updated_at": "2026-09-04T15:02:47Z"
}Response Fields
| Field | Type | Description |
|---|---|---|
| worked | Boolean | Always returns true when the request is successful |
| onboarding_requisition_id | Integer | Identifier of the onboarding requisition |
| onboarding_type | String | Type of onboarding: PF (individual) or PJ (company). null when the type was not recorded for the requisition. See Onboarding Type Values below. |
| status | String | Verification status of the journey. See Verification Status Values below. |
| status_internal | String | Result of the analysis performed after the verification finishes. null while no decision has been made yet. See Analysis Status Values below. |
| liveness_status | String | Status of the proof of life: PENDING, PASSED or FAILED. null when the liveness journey has not started. See Liveness Status Values below. |
| current_step | String | Step the journey is currently on: LIVENESS, FORM, PROCESSING, REVIEW or DONE. |
| liveness_url | String | Link where the end user completes the proof of life. Filled only while liveness_status is PENDING; null in every other situation. |
| liveness_attempts_left | Integer | How many further proof-of-life journeys can still be opened for this requisition. |
| submitted_at | DateTime | Date and time the form was submitted. Format: ISO 8601 in UTC-0 (YYYY-MM-DDTHH:MM:SSZ). null before the submission. |
| company | Object | Official registry data of the company. Returned only for PJ onboardings; null for PF. See Company Fields below. |
| representative_document | String | CPF of the legal representative sent when the requisition was created. Returned only for PJ onboardings; null for PF, and also null if no representative was recorded. |
| updated_at | DateTime | Date and time of the last change to the requisition. Format: ISO 8601 in UTC-0 (YYYY-MM-DDTHH:MM:SSZ). |
Company Fields
Present only when onboarding_type is PJ. Every field is returned individually and may come back null while the official registry lookup has not returned yet, so your form must keep collecting the editable data regardless.
| Field | Type | Description |
|---|---|---|
| official_name | String | Registered legal name of the company. null until the registry lookup returns. |
| fantasy_name | String | Trade name of the company. null when not available. |
| opening_date | Date | Date the company was opened. Format: YYYY-MM-DD. null when not available. |
| legal_nature | String | Description of the legal nature of the company. null when not available. |
| legal_nature_code | String | Code of the legal nature of the company. null when not available. |
| main_activity | String | Description of the main economic activity. null when not available. |
| main_activity_code | String | Code of the main economic activity. null when not available. |
| joint_stock | String | Share capital registered for the company. null when not available. |
| zip_code | String | Postal code of the registered address. null when not available. |
| state | String | State of the registered address. null when not available. |
| city | String | City of the registered address. null when not available. |
| street | String | Street of the registered address. null when not available. |
| neighborhood | String | Neighborhood of the registered address. null when not available. |
| number | String | Street number of the registered address. null when not available. |
| complement | String | Address complement. null when not available. |
Onboarding Type Values
| Value | Description |
|---|---|
PF | Onboarding of an individual (CPF) |
PJ | Onboarding of a company (CNPJ) |
Verification Status Values
| Value | Description |
|---|---|
PENDING | The requisition was created and the verification has not produced a result yet |
IN_PROGRESS | The verification is running |
APPROVED | The verification finished with an approval |
REPROVED | The verification finished with a rejection |
COMPLETED | The verification journey is finished |
Analysis Status Values
| Value | Description |
|---|---|
PENDING | The analysis has not started |
WAITING_APPROVAL | The requisition is waiting for a final decision |
APPROVED | Final decision: the onboarding was approved |
REJECTED | Final decision: the onboarding was rejected |
null means nobody has decided yet.
Liveness Status Values
| Value | Description |
|---|---|
PENDING | A proof-of-life journey is open and waiting for the end user. liveness_url is filled. |
PASSED | The end user completed the proof of life successfully |
FAILED | The proof of life was not successful. A new attempt can be opened while attempts remain. |
null means the proof-of-life journey never started.
Status Dimensions
The response carries three independent status fields plus one consolidated step:
| Field | What it tells you |
|---|---|
| liveness_status | Whether the end user has completed the proof of life |
| status | Where the verification of the submitted data stands |
| status_internal | The final decision on the onboarding, once it has been made |
| current_step | The three fields above, together with submitted_at, consolidated into a single value. Use it to drive your screens; use the individual fields only for extra detail. |
Journey Steps
current_step is the value your application should branch on while the journey runs:
| Value | What it means | What your application should do |
|---|---|---|
LIVENESS | The proof of life has not been completed yet (not started, still open, or failed) | Send the end user to liveness_url. If liveness_status is FAILED and liveness_attempts_left is greater than 0, open a new attempt with POST /v3/onboarding/{onboarding_requisition_id}/liveness/retry. Keep polling. |
FORM | The proof of life passed and the form has not been submitted yet | Render your own form and send the collected data to POST /v3/onboarding/{onboarding_requisition_id}/submit. Keep polling. |
PROCESSING | The form was submitted and the verification is running in the background | Nothing to do. Keep polling and show a waiting state to the end user. |
REVIEW | The verification finished and the requisition is waiting for the final decision | Nothing to do. Keep polling. |
DONE | A final decision was made and is available in status_internal | Stop polling and act on status_internal (APPROVED or REJECTED). |
Error Responses
| HTTP Code | Error Message | Description |
|---|---|---|
| 404 | Onboarding requisition not found. | The requisition does not exist or the X-Onboarding-Token header is missing or does not match the access token of this requisition. The same response is returned in both cases. |
| 422 | Validation error | The requisition identifier in the path is not a valid integer. |
Business Rules
Access:
- Every call must send the
X-Onboarding-Tokenheader with theaccess_tokenreturned when the onboarding requisition was created. - A token is valid for a single onboarding requisition.
- A missing or incorrect token returns
404with the same message used for an unknown identifier: the API never confirms whether a requisition exists to a caller that does not hold its token. - Store the access token when the requisition is created; it is not returned again by this endpoint.
Liveness:
liveness_urlis returned only whileliveness_statusisPENDING. Once the proof of life passes or fails, the field comes backnulland the previous link must not be reused.liveness_attempts_leftstarts at2: a requisition allows at most 3 proof-of-life journeys in total and the first one is already opened when the requisition is created. The field decreases by 1 every time a further journey is opened, and reaches0on the last available attempt.- A new attempt can only be opened after a
FAILEDproof of life and only whileliveness_attempts_leftis greater than 0. - If
liveness_statusstays onPENDINGafter the end user has finished the proof of life, callPOST /v3/onboarding/{onboarding_requisition_id}/liveness/refreshto reconcile the result, then read this endpoint again.
Company Data:
- The
companyobject is returned only forPJonboardings. ForPFonboardings it is alwaysnull. - The registry lookup runs asynchronously: the object can be returned with all fields
nullright after creation and filled in a later poll. - Do not block your form on this data. Collect the editable fields from the end user and send them in the form submission.
Legal representative:
representative_documentis the CPF sent asrepresentative_documentonPOST /v3/onboarding/form. It is returned only forPJonboardings.- Use it to pre-fill the legal-representative partner on your form. The person who passed the liveness is this CPF, and the submit call must mark that same partner as
is_legal_representative.
Important Notes:
- All dates and times are returned in UTC-0, in ISO 8601 with the
Zsuffix (for example,2026-09-04T14:19:04Z). status_internalisnulluntil a decision is made; treatnullas "still in progress", never as a rejection.submitted_atisnulluntil the form is submitted and never changes afterwards.- This endpoint is read-only and can be called at any point of the journey, including after
current_stepreachesDONE.
Polling Recommendations:
- Poll every 3 to 5 seconds while the end user is on the proof of life, so your screen reacts as soon as
current_stepmoves fromLIVENESStoFORM. - Poll every 10 to 30 seconds while
current_stepisPROCESSINGorREVIEW. - Stop polling once
current_stepreachesDONE. - Use
updated_atto detect whether anything changed between two polls.
404Onboarding requisition not found, or the access token is missing or incorrect
