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.

Read-Only API

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.

GET /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 ID
  • name - Questionnaire name
  • description - Description text
  • questionnaire_type - Type (ddq or rfi)
  • question_count - Total number of text questions
  • created_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.

GET /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 questions
  • file_questions - Array of file upload requirements
  • sections - Optional section structure (JSON)
  • question_count - Total text questions
  • response_count - Number of active responses using this template

List Questions

Retrieves all text-based questions for a questionnaire, ordered by section and number.

GET /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 Upload Requirements

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.