Questionnaires API
Questionnaires are reusable DDQ (Due Diligence Questionnaire) templates containing structured questions. Each questionnaire serves as a blueprint for creating responses with specific entities.
The Questionnaire API is currently read-only. Questionnaires are created and managed through the web interface. Use this API to retrieve questionnaire structures when creating responses.
Key Concepts
- Templates: Questionnaires are reusable templates, not assessments themselves
- Questions: Each questionnaire contains text-based questions with configurable types
- File Questions: Separate file upload requirements for documents and certificates
- Sections: Questions are organized into sections and subsections for structure
Common Use Cases
- Retrieve available questionnaires before creating a response
- Fetch question structure to build dynamic UI forms
- Understand required fields and question types for autofill
- Display questionnaire details to users
List Questionnaires
Retrieves a paginated list of all questionnaire templates in your tenant.
/api/v1/questionnaires/
Query Parameters
| Parameter | Type | Description |
|---|---|---|
type |
string | Filter by questionnaire type: ddq or rfi |
page |
integer | Page number (default: 1) |
page_size |
integer | Results per page (default: 50, max: 100) |
Response
Returns paginated list with minimal questionnaire information. Each questionnaire includes:
id- Questionnaire IDname- Questionnaire namedescription- Description textquestionnaire_type- Type (ddq or rfi)question_count- Total number of text questionscreated_at- Creation timestamp
Response (200 OK)
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": "Standard DDQ",
"description": "Standard due diligence questionnaire",
"questionnaire_type": "ddq",
"question_count": 42,
"created_at": "2026-01-15T10:30:00Z"
},
{
"id": 2,
"name": "Security Assessment",
"description": "Information security assessment",
"questionnaire_type": "ddq",
"question_count": 28,
"created_at": "2026-01-18T14:20:00Z"
}
]
}
Get Questionnaire
Retrieves a specific questionnaire by ID, including all questions and file requirements.
/api/v1/questionnaires/{id}/
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id |
integer | The unique identifier of the questionnaire |
Response
Returns the full questionnaire object including:
questions- Array of all text-based questionsfile_questions- Array of file upload requirementssections- Optional section structure (JSON)question_count- Total text questionsresponse_count- Number of active responses using this template
List Questions
Retrieves all text-based questions for a questionnaire, ordered by section and number.
/api/v1/questionnaires/{id}/questions/
Response
Returns array of question objects ordered by section_number, sub_section_number, and number.
Questionnaire Object
The questionnaire object represents a reusable DDQ template with structured questions.
List View Attributes
| Field | Type | Description |
|---|---|---|
id |
integer | Unique identifier |
name |
string | Questionnaire name |
description |
string | Detailed description |
questionnaire_type |
string | Type: ddq (Due Diligence Questionnaire) or rfi (Request for Information) |
question_count |
integer | Total number of text questions |
created_at |
datetime | Creation timestamp (ISO 8601) |
Detail View Additional Fields
| Field | Type | Description |
|---|---|---|
sections |
object | Optional JSON structure defining predefined sections |
questions |
array | Array of text-based question objects |
file_questions |
array | Array of file upload requirement objects |
response_count |
integer | Number of active responses (excludes PREFILL status) |
Question Object
Text-based questions within a questionnaire template.
Attributes
| Field | Type | Description |
|---|---|---|
id |
integer | Unique question identifier |
number |
integer | Question number for display ordering |
section |
string | Section name (e.g., "Part 1", "Section A") |
section_number |
integer | Numeric section order |
sub_section |
string | Subsection name (nullable) |
sub_section_number |
integer | Numeric subsection order within section |
text |
string | The actual question text (max 1000 characters) |
question_type |
string | Question type (see below) |
required |
boolean | Whether answer is required |
exclude_from_autofill |
boolean | If true, AI autofill will skip this question |
Question Object Example
{
"id": 123,
"number": 1,
"section": "Part 1",
"section_number": 1,
"sub_section": "Company Information",
"sub_section_number": 1,
"text": "What is your company's legal name?",
"question_type": "text",
"required": true,
"exclude_from_autofill": false
}
File Question Object Example
{
"id": 45,
"document_type": "certificate_of_incorporation",
"description": "Certificate of Incorporation",
"required": true,
"multiple": false
}
Question Types
KYC Genie supports four question types for text-based questions:
text (Free Text)
Open-ended text responses for descriptive answers.
{
"question_type": "text",
"text": "Describe your incident response procedures",
"required": true
}
boolean (Yes/No)
Simple yes or no questions. Answer stored as "yes" or "no" text.
{
"question_type": "boolean",
"text": "Do you have ISO 27001 certification?",
"required": true
}
yes_no_na (Yes/No/NA)
Yes/No with optional "Not Applicable" answer. Answer stored as "yes", "no", or "na".
{
"question_type": "yes_no_na",
"text": "Do you process credit card data?",
"required": false
}
text_and_date (Text with Date)
Combined text response with associated date field.
{
"question_type": "text_and_date",
"text": "When did you last conduct a penetration test?",
"required": true
}
File uploads are handled separately via the file_questions array. These are not part of the question types above and use a different model (FileQuestion) with document type specifications.