REST API: KYC
List questionnaire sessions
Page through questionnaire records.
Purpose
Use this call to list the records that the questionnaire step collected before the KYC started. See two-stage questionnaire, then KYC for the flow.
Request
POST <API_BASE_URL>/kyc/questionnaire/sessions. All calls are POST under your API address. Replace <API_BASE_URL> with the API address provided with your access.
Send a permanent API token in the token field of the body, or a user token in the token header. See authentication.
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
token | string (uuid) | if no header | Your permanent API token. Required unless you send a user token in the token header. |
page | number | no | The page number. |
pageSize | number | no | Records per page. |
schemaId | string (uuid) | no | Return only the records of this scenario. |
filters | object | no | Additive filters for questionnaire records. |
Response
HTTP 200. One page of questionnaire records, newest first.
| Field | Type | Description |
|---|---|---|
status | string | Always ok on this body. |
results | array of object | The records of this page, newest first. |
results[].questionnaireSessionId | string (uuid) | The identifier of the record. Delete questionnaire session takes it. |
results[].schemaId | string (uuid) | The scenario the form belonged to. |
results[].clientKey | string | Your own identifier for the person. |
results[].status | string | idle when the form was opened but never committed, success when the answers were recorded. It says nothing about check verdicts. |
results[].createdAt | number | A Unix timestamp in seconds, not milliseconds and not an ISO string. This is different from the ISO value in the webhook and in session status. |
results[].fullName | string | As entered in the form. Null once the answers were destroyed. |
results[].dob | string | As entered in the form. Null once the answers were destroyed. |
results[].fields | array of object | The remaining form fields as entered, each with key, title and value. |
results[].checks | array of object | A summary of the database checks run against the record, present only when there are any. |
results[].linkedSessions | array of string (uuid) | The KYC sessions that were compared against this record, recorded for mismatches and document failures too. |
Errors
400: The body failed validation. The answer hasstatusoferrorand adetailslist with one entry per offending field (path,expected,actual).401: The token is missing, expired or unknown.
A refusal can also come before the operation runs: an address outside your IP allowlist, a token bound to another address, or a body that is not valid JSON. See response format and errors.
Example
Request:
curl -X POST "<API_BASE_URL>/kyc/questionnaire/sessions" \
-H "Content-Type: application/json" \
-d '{
"token": "<your permanent API token>",
"page": 1,
"pageSize": 20
}'
Response:
{
"status": "ok",
"results": [
{
"questionnaireSessionId": "00000000-0000-0000-0000-000000000000",
"schemaId": "<your scenario id>",
"clientKey": "<your identifier for the person>",
"status": "success",
"createdAt": 1767261600,
"fullName": "<name as entered>",
"dob": "<date of birth as entered>",
"fields": [],
"linkedSessions": []
}
]
}