Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Comp AI Questionnaire API
description: Compliance automation API for SOC 2, ISO 27001, HIPAA, GDPR, evidence collection, policy workflows, Trust Access, security questionnaires, integrations, cloud checks, and device compliance.
version: '1.0'
contact: {}
servers:
- url: https://api.trycomp.ai
description: Production API Server
tags:
- name: Questionnaire
description: Parse security questionnaires, generate answers from approved evidence, save reviewer edits, stream progress, and export completed files.
paths:
/v1/questionnaire:
get:
operationId: QuestionnaireController_findAll_v1
parameters: []
responses:
'200':
description: List of questionnaires
security:
- apikey: []
summary: List security questionnaires
tags:
- Questionnaire
description: List saved security questionnaires for an organization so teams can track customer reviews, answer status, and response history.
x-mint:
href: /api-reference/questionnaire/list-questionnaires
metadata:
title: List security questionnaires | Comp AI API
sidebarTitle: List security questionnaires
description: List saved security questionnaires for an organization so teams can track customer reviews, answer status, and response history.
og:title: List security questionnaires | Comp AI API
og:description: List saved security questionnaires for an organization so teams can track customer reviews, answer status, and response history.
x-speakeasy-mcp:
name: questionnaire-find-all
/v1/questionnaire/{id}:
get:
operationId: QuestionnaireController_findById_v1
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: Questionnaire details
security:
- apikey: []
summary: Get security questionnaire details
tags:
- Questionnaire
description: Retrieve one saved security questionnaire, including extracted questions, generated answers, and review context for the requesting client.
x-mint:
href: /api-reference/questionnaire/get-a-questionnaire-by-id
metadata:
title: Get security questionnaire details | Comp AI API
sidebarTitle: Get security questionnaire details
description: Retrieve one saved security questionnaire, including extracted questions, generated answers, and review context for the requesting client.
og:title: Get security questionnaire details | Comp AI API
og:description: Retrieve one saved security questionnaire, including extracted questions, generated answers, and review context for the requesting client.
x-speakeasy-mcp:
name: find-by-id
delete:
operationId: QuestionnaireController_deleteById_v1
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: Questionnaire deleted
security:
- apikey: []
summary: Delete a security questionnaire
tags:
- Questionnaire
description: Delete a saved security questionnaire when a customer review or vendor assessment no longer needs to be retained.
x-mint:
href: /api-reference/questionnaire/delete-a-questionnaire
metadata:
title: Delete a security questionnaire | Comp AI API
sidebarTitle: Delete a security questionnaire
description: Delete a saved security questionnaire when a customer review or vendor assessment no longer needs to be retained.
og:title: Delete a security questionnaire | Comp AI API
og:description: Delete a saved security questionnaire when a customer review or vendor assessment no longer needs to be retained.
x-speakeasy-mcp:
name: delete-by-id
/v1/questionnaire/{id}/auto-answer:
post:
description: Starts background answer generation for an already-parsed questionnaire and returns a run handle immediately. Poll GET /v1/questionnaire/:id until answeredQuestions equals totalQuestions, then read the answers from its questions.
operationId: QuestionnaireController_triggerAutoAnswer_v1
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerAutoAnswerResponseDto'
security:
- apikey: []
summary: Generate answers for a questionnaire
tags:
- Questionnaire
x-speakeasy-mcp:
name: generate-questionnaire-answers
x-mint:
metadata:
title: Generate answers for a questionnaire | Comp AI API
sidebarTitle: Generate answers for a questionnaire
description: Starts background answer generation for an already-parsed questionnaire and returns a run handle immediately. Poll GET /v1/questionnaire/:id until.
og:title: Generate answers for a questionnaire | Comp AI API
og:description: Starts background answer generation for an already-parsed questionnaire and returns a run handle immediately. Poll GET /v1/questionnaire/:id until.
/v1/questionnaire/parse:
post:
operationId: QuestionnaireController_parseQuestionnaire_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ParseQuestionnaireDto'
responses:
'200':
description: Parsed questionnaire content
content:
application/json:
schema:
type: object
security:
- apikey: []
summary: Parse questionnaire content
tags:
- Questionnaire
description: Parse questionnaire content from a submitted payload so teams can extract security questions before generating or reviewing answers.
x-mint:
href: /api-reference/questionnaire/parse-an-uploaded-questionnaire-file
metadata:
title: Parse questionnaire content | Comp AI API
sidebarTitle: Parse questionnaire content
description: Parse questionnaire content from a submitted payload so teams can extract security questions before generating or reviewing answers.
og:title: Parse questionnaire content | Comp AI API
og:description: Parse questionnaire content from a submitted payload so teams can extract security questions before generating or reviewing answers.
x-speakeasy-mcp:
name: parse-questionnaire
/v1/questionnaire/answer-single:
post:
description: Generate an answer for one security questionnaire item using the organization evidence library and return source references for review.
operationId: QuestionnaireController_answerSingleQuestion_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnswerSingleQuestionDto'
responses:
'200':
description: Generated single answer result
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
questionIndex:
type: number
question:
type: string
answer:
type:
- string
- 'null'
sources:
type: array
items:
type: object
error:
type:
- string
- 'null'
security:
- apikey: []
summary: Answer one questionnaire question
tags:
- Questionnaire
x-mint:
href: /api-reference/questionnaire/answer-a-single-questionnaire-question
metadata:
title: Answer one questionnaire question | Comp AI API
sidebarTitle: Answer one questionnaire question
description: Generate an answer for one security questionnaire item using the organization evidence library and return source references for review.
og:title: Answer one questionnaire question | Comp AI API
og:description: Generate an answer for one security questionnaire item using the organization evidence library and return source references for review.
x-speakeasy-mcp:
name: answer-single-question
/v1/questionnaire/save-answer:
post:
operationId: QuestionnaireController_saveAnswer_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SaveAnswerDto'
responses:
'200':
description: Save manual or generated answer
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
error:
type:
- string
- 'null'
security:
- apikey: []
summary: Save questionnaire answer
tags:
- Questionnaire
description: Save a manual or AI-generated security questionnaire answer for later review, export, and audit tracking.
x-mint:
href: /api-reference/questionnaire/save-a-questionnaire-answer
metadata:
title: Save questionnaire answer | Comp AI API
sidebarTitle: Save questionnaire answer
description: Save a manual or AI-generated security questionnaire answer for later review, export, and audit tracking.
og:title: Save questionnaire answer | Comp AI API
og:description: Save a manual or AI-generated security questionnaire answer for later review, export, and audit tracking.
x-speakeasy-mcp:
name: save-answer
/v1/questionnaire/delete-answer:
post:
operationId: QuestionnaireController_deleteAnswer_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteAnswerDto'
responses:
'200':
description: Delete questionnaire answer
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
error:
type:
- string
- 'null'
security:
- apikey: []
summary: Delete questionnaire answer
tags:
- Questionnaire
description: Delete a stored questionnaire answer when it should be removed from the active response set.
x-mint:
href: /api-reference/questionnaire/delete-a-questionnaire-answer
metadata:
title: Delete questionnaire answer | Comp AI API
sidebarTitle: Delete questionnaire answer
description: Delete a stored questionnaire answer when it should be removed from the active response set.
og:title: Delete questionnaire answer | Comp AI API
og:description: Delete a stored questionnaire answer when it should be removed from the active response set.
x-speakeasy-mcp:
name: delete-answer
/v1/questionnaire/export:
post:
operationId: QuestionnaireController_exportById_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExportByIdDto'
responses:
'200':
description: Export questionnaire by ID to specified format
security:
- apikey: []
summary: Export a security questionnaire
tags:
- Questionnaire
description: Export a saved security questionnaire response package as PDF, CSV, or XLSX for customer and vendor security reviews.
x-mint:
href: /api-reference/questionnaire/export-a-questionnaire
metadata:
title: Export a security questionnaire | Comp AI API
sidebarTitle: Export a security questionnaire
description: Export a saved security questionnaire response package as PDF, CSV, or XLSX for customer and vendor security reviews.
og:title: Export a security questionnaire | Comp AI API
og:description: Export a saved security questionnaire response package as PDF, CSV, or XLSX for customer and vendor security reviews.
x-speakeasy-mcp:
name: export-by-id
/v1/questionnaire/upload-and-parse:
post:
operationId: QuestionnaireController_uploadAndParse_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadAndParseDto'
responses:
'200':
description: Upload file and trigger async parsing. Returns runId for realtime tracking.
content:
application/json:
schema:
type: object
properties:
runId:
type: string
publicAccessToken:
type: string
security:
- apikey: []
summary: Start questionnaire parsing
tags:
- Questionnaire
description: Upload a questionnaire payload and start asynchronous parsing, returning a run ID for real-time progress tracking.
x-mint:
href: /api-reference/questionnaire/upload-and-parse-a-questionnaire-file
metadata:
title: Start questionnaire parsing | Comp AI API
sidebarTitle: Start questionnaire parsing
description: Upload a questionnaire payload and start asynchronous parsing, returning a run ID for real-time progress tracking.
og:title: Start questionnaire parsing | Comp AI API
og:description: Upload a questionnaire payload and start asynchronous parsing, returning a run ID for real-time progress tracking.
x-speakeasy-mcp:
name: upload-and-parse
/v1/questionnaire/upload-and-parse/upload:
post:
operationId: QuestionnaireController_uploadAndParseUpload_v1
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Questionnaire file (PDF, image, XLSX, CSV, TXT)
organizationId:
type: string
description: Organization ID
source:
type: string
enum:
- internal
- external
default: internal
description: Source of the upload
required:
- file
- organizationId
responses:
'200':
description: Upload file, parse questions (no answers), save to DB, return questionnaireId
content:
application/json:
schema:
type: object
properties:
questionnaireId:
type: string
totalQuestions:
type: number
security:
- apikey: []
summary: Upload and parse questionnaire file
tags:
- Questionnaire
description: Upload a security questionnaire file, extract questions, save the parsed questionnaire, and return its identifier and question count.
x-mint:
href: /api-reference/questionnaire/upload-a-questionnaire-file-and-parse-its-questions
metadata:
title: Upload and parse questionnaire file | Comp AI API
sidebarTitle: Upload and parse questionnaire file
description: Upload a security questionnaire file, extract questions, save the parsed questionnaire, and return its identifier and question count.
og:title: Upload and parse questionnaire file | Comp AI API
og:description: Upload a security questionnaire file, extract questions, save the parsed questionnaire, and return its identifier and question count.
x-speakeasy-mcp:
name: upload-and-parse-upload
/v1/questionnaire/parse/upload:
post:
operationId: QuestionnaireController_parseQuestionnaireUpload_v1
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Questionnaire file (PDF, image, XLSX, CSV, TXT)
organizationId:
type: string
description: Organization to use for generating answers
format:
type: string
enum:
- pdf
- csv
- xlsx
default: xlsx
description: Output format (defaults to XLSX)
source:
type: string
enum:
- internal
- external
default: internal
description: Indicates if the request originated from our UI (internal) or trust portal (external).
required:
- file
- organizationId
responses:
'201':
description: ''
security:
- apikey: []
summary: Auto-answer uploaded questionnaire
tags:
- Questionnaire
description: Upload a questionnaire file and generate answer exports from approved organization evidence in PDF, CSV, or XLSX format.
x-mint:
href: /api-reference/questionnaire/upload-a-questionnaire-file-and-auto-answer-with-export
metadata:
title: Auto-answer uploaded questionnaire | Comp AI API
sidebarTitle: Auto-answer uploaded questionnaire
description: Upload a questionnaire file and generate answer exports from approved organization evidence in PDF, CSV, or XLSX format.
og:title: Auto-answer uploaded questionnaire | Comp AI API
og:description: Upload a questionnaire file and generate answer exports from approved organization evidence in PDF, CSV, or XLSX format.
x-speakeasy-mcp:
name: parse-questionnaire-upload
/v1/questionnaire/answers/export:
post:
operationId: QuestionnaireController_autoAnswerAndExport_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExportQuestionnaireDto'
responses:
'201':
description: ''
security:
- apikey: []
summary: Export generated questionnaire answers
tags:
- Questionnaire
description: Generate and export questionnaire answers from a submitted payload using approved organization evidence.
x-mint:
href: /api-reference/questionnaire/export-questionnaire-answers
metadata:
title: Export generated questionnaire answers | Comp AI API
sidebarTitle: Export generated questionnaire answers
description: Generate and export questionnaire answers from a submitted payload using approved organization evidence.
og:title: Export generated questionnaire answers | Comp AI API
og:description: Generate and export questionnaire answers from a submitted payload using approved organization evidence.
x-speakeasy-mcp:
name: auto-answer-and-export
/v1/questionnaire/answers/export/upload:
post:
operationId: QuestionnaireController_autoAnswerAndExportUpload_v1
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Questionnaire file (PDF, image, XLSX, CSV, TXT)
organizationId:
type: string
description: Organization to use for answer generation
format:
type: string
enum:
- pdf
- csv
- xlsx
default: xlsx
description: Output format (defaults to XLSX)
required:
- file
- organizationId
responses:
'201':
description: ''
security:
- apikey: []
summary: Upload and export generated answers
tags:
- Questionnaire
description: Upload a questionnaire file and return generated answer exports in PDF, CSV, or XLSX format.
x-mint:
href: /api-reference/questionnaire/upload-a-questionnaire-file-and-export-auto-generated-answers
metadata:
title: Upload and export generated answers | Comp AI API
sidebarTitle: Upload and export generated answers
description: Upload a questionnaire file and return generated answer exports in PDF, CSV, or XLSX format.
og:title: Upload and export generated answers | Comp AI API
og:description: Upload a questionnaire file and return generated answer exports in PDF, CSV, or XLSX format.
x-speakeasy-mcp:
name: auto-answer-and-export-upload
/v1/questionnaire/auto-answer:
post:
operationId: QuestionnaireController_autoAnswer_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutoAnswerDto'
responses:
'201':
description: ''
security:
- apikey: []
summary: Stream generated questionnaire answers
tags:
- Questionnaire
description: Stream generated questionnaire answers over server-sent events so clients can show progress while answers are produced.
x-mint:
href: /api-reference/questionnaire/auto-answer-a-questionnaire
metadata:
title: Stream generated questionnaire answers | Comp AI API
sidebarTitle: Stream generated questionnaire answers
description: Stream generated questionnaire answers over server-sent events so clients can show progress while answers are produced.
og:title: Stream generated questionnaire answers | Comp AI API
og:description: Stream generated questionnaire answers over server-sent events so clients can show progress while answers are produced.
x-speakeasy-mcp:
name: auto-answer
components:
schemas:
SaveAnswerDto:
type: object
properties: {}
UploadAndParseDto:
type: object
properties:
organizationId:
type: string
description: Organization ID (set automatically from auth context).
example: org_abc123
fileName:
type: string
description: Name of the questionnaire file.
example: vendor-security-questionnaire.xlsx
fileType:
type: string
description: MIME type of the file (PDF, image, XLSX, CSV, TXT).
example: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
fileData:
type: string
description: Base64-encoded file contents. For the web UI / direct callers. AI/MCP clients should instead upload via /v1/uploads/presign and pass `s3Key` — base64 through an LLM is impractically slow. Provide exactly one of fileData or s3Key.
s3Key:
type: string
description: Key of a file already uploaded via /v1/uploads/presign (purpose=questionnaire). The server fetches the bytes from storage — no base64 needed. Provide exactly one of fileData or s3Key.
example: org_abc/uploads/questionnaire/1735000000-questionnaire.xlsx
required:
- organizationId
- fileName
- fileType
DeleteAnswerDto:
type: object
properties: {}
TriggerAutoAnswerResponseDto:
type: object
properties:
questionnaireId:
type: string
description: The questionnaire whose answers are being generated.
example: qst_6a179d26c4ad2c1c816ee16d
runId:
type: string
description: Background run identifier for the generation job (Trigger.dev run id).
example: run_cmpotsz153eac0ultc1ya87f5
publicAccessToken:
type: string
description: Token for tracking the run via Trigger.dev realtime. Optional — MCP/agent clients should poll GET /v1/questionnaire/:id instead.
example: pat_...
status:
type: string
description: Always 'generating' on a successful trigger. Poll GET /v1/questionnaire/:id; answers are ready once answeredQuestions equals totalQuestions.
example: generating
totalQuestions:
type: number
description: Total number of questions in the questionnaire.
example: 23
answeredQuestions:
type: number
description: Questions already answered at the moment generation was triggered (answers without a value are (re)generated).
example: 0
message:
type: string
description: Human-readable summary of what to do next.
example: Generating answers for 23 questions. Poll GET /v1/questionnaire/qst_... until answeredQuestions reaches totalQuestions.
required:
- questionnaireId
- runId
- publicAccessToken
- status
- totalQuestions
- answeredQuestions
- message
ExportQuestionnaireDto:
type: object
properties: {}
AnswerSingleQuestionDto:
type: object
properties:
question:
type: string
description: Security questionnaire question to answer.
example: Do you encrypt customer data at rest?
questionIndex:
type: number
description: Zero-based index of this question in the questionnaire or page batch.
example: 0
minimum: 0
totalQuestions:
type: number
description: Total number of questions in the current questionnaire or page batch.
example: 12
minimum: 1
organizationId:
type: string
description: Organization ID for validation. The API uses the authenticated active organization and overwrites this value server-side.
example: org_abc123
questionnaireId:
type: string
description: Optional questionnaire record to save the generated answer into. Omit for webpage-only answer generation.
example: qst_abc123
required:
- question
- questionIndex
- totalQuestions
- organizationId
AutoAnswerDto:
type: object
properties: {}
ParseQuestionnaireDto:
type: object
properties: {}
ExportByIdDto:
type: object
properties: {}
securitySchemes:
apikey:
type: apiKey
in: header
name: X-API-Key
description: API key for authentication
x-speakeasy-timeout: 120000