Overview
Submit security questionnaires and RFPs to Wolfia for AI-powered autofilling, then track their processing status and retrieve results programmatically.Upload a file
URL:POST https://api.wolfia.com/v1/questionnaire/upload/file
Authentication: API key required (see API overview for setup)
This endpoint accepts multipart form data.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file | Yes | The questionnaire file |
company_name | string | Yes | Company that sent the questionnaire |
deal_value | decimal | No | Associated deal value |
deadline | date (YYYY-MM-DD) | No | Completion deadline |
instructions | string | No | Instructions to guide AI processing |
tag_ids | array of strings | No | Tag IDs to categorize the questionnaire (see Content tags) |
assignee_ids | array of strings | No | User IDs to assign to |
assignee_types | array of strings | No | Type per assignee (USER or GROUP) |
Supported file types
| Extension | MIME type |
|---|---|
.xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xlsm | application/vnd.ms-excel.sheet.macroenabled.12 |
.xls | application/vnd.ms-excel |
.csv | text/csv |
.docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.pdf | application/pdf |
Response (200 OK)
Upload text content
URL:POST https://api.wolfia.com/v1/questionnaire/upload/text
Authentication: API key required (see API overview for setup)
Use this when you have questions as text rather than a file — for example, pasted from an email or extracted from a web form.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
text_content | string | Yes | Questions as text (50 to 200,000 characters) |
company_name | string | No | Company that sent the questionnaire |
source_type | string | No | Defaults to TEXT |
deal_value | decimal | No | Associated deal value |
deadline | date (YYYY-MM-DD) | No | Completion deadline |
instructions | string | No | Instructions to guide AI processing |
tag_ids | array of strings | No | Tag IDs to categorize the questionnaire (see Content tags) |
assignees | array of objects | No | Each with id (string) and type (USER or GROUP) |
Response (200 OK)
List questionnaires
URL:GET https://api.wolfia.com/v1/questionnaire/list
Authentication: API key required
Returns a paginated list of all questionnaires in your organization, ordered by creation date (newest first).
Request
Query parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer (1-1000) | No | 10 | Number of questionnaires to return |
offset | integer | No | 0 | Number of questionnaires to skip (for pagination) |
Response (200 OK)
The
should_poll field (at both the list level and individual questionnaire level) indicates whether any questionnaires are still being processed. If true, poll the endpoint periodically to get updated statuses.Processing status values
After uploading, a questionnaire moves through these statuses:| Status | Display name | Meaning |
|---|---|---|
UPLOADED | Uploaded | File received, processing not started |
QUEUED_PENDING_REVIEW | Pre-validation | Queued for initial validation before processing |
QUEUED_FOR_EXTRACTION | Queued | Validated and queued for question extraction |
ANALYSIS_IN_PROGRESS | Analyzing | AI is analyzing the document structure |
QUESTION_EXTRACTION_IN_PROGRESS | Extracting | AI is extracting individual questions |
ANSWERING_IN_PROGRESS | Answering | AI is generating answers |
ANSWERING_COMPLETED | Ready for review | All answers generated, ready for human review |
READY_FOR_APPROVAL | Ready for approval | Reviewed and pending final approval |
COMPLETED | Completed | Fully completed |
ANALYSIS_FAILED, QUESTION_EXTRACTION_FAILED, ANSWERING_FAILED) indicate a processing error. Contact support@wolfia.com if failures persist.
Search questionnaires
URL:GET https://api.wolfia.com/v1/questionnaire/search
Authentication: API key required
Search questionnaires by text or filter by specific fields using the @field:value syntax.
Request
Query parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | No | "" | Search query (see filter syntax below) |
limit | integer (1-1000) | No | 10 | Number of results to return |
offset | integer | No | 0 | Pagination offset |
Filter syntax
Use@field:value to filter by specific fields. Multiple filters can be combined in a single query.
| Filter | Example | Description |
|---|---|---|
@title: | @title:security review | Match questionnaire title |
@status: | @status:ANSWERING_COMPLETED | Match processing status (see status values) |
@account: | @account:Acme | Match company name |
@ prefix searches across all fields.
Response (200 OK)
The response format matches List questionnaires, with an additionalmatched_questions array on each item showing which questions matched the search query.
Get questionnaire details
URL:GET https://api.wolfia.com/v1/questionnaire/{questionnaire_id}/overview
Authentication: API key required
Returns detailed information about a specific questionnaire, including per-sheet statistics, processing logs, and completion metrics.
Request
Response (200 OK)
Use
should_poll to determine if the questionnaire is still being processed. If true, poll this endpoint at reasonable intervals (e.g., every 10-30 seconds) until processing completes.Key response fields
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Questionnaire identifier |
status | string | Current processing status (see status values) |
status_display_name | string | Human-readable status |
total_questions | integer | Total extracted questions |
answered_questions | integer | Questions with AI or manual answers |
statistics | object | Detailed completion and quality metrics |
sheets | array | Individual sheets/tabs with their processing status |
sheet_stats | array | Per-sheet question and completion statistics |
tags | array | Content tags applied to this questionnaire |
should_poll | boolean | true if processing is still in progress |
created_at | integer | Creation timestamp (microseconds) |
Integration example
Python: Upload and poll until complete
Python: Ingest questionnaires from JIRA
Error responses
| Status Code | What it means | How to fix |
|---|---|---|
| 400 | Unsupported file type | Use a supported format: .xlsx, .xlsm, .xls, .csv, .docx, .pdf |
| 401 | Invalid or expired API key | Verify your API key |
| 403 | Insufficient permissions | Check the API key owner’s role |
| 404 | Questionnaire not found | Verify the questionnaire ID exists |
| 422 | Missing required fields or invalid input | Check required fields. Text must be 50-200,000 characters. |
| 500 | Internal error | Retry with exponential backoff |
Best practices
File vs text upload
File vs text upload
Use file upload when you have the original document (XLSX, PDF, DOCX). Wolfia preserves the document structure.Use text upload for plain text questions from emails, web forms, or chat messages.
Use instructions to guide AI
Use instructions to guide AI
The
instructions field shapes how Wolfia fills in answers:Set metadata for better tracking
Set metadata for better tracking
Include
company_name, deal_value, and deadline when available. This metadata appears in the Wolfia dashboard for prioritization.Poll efficiently after upload
Poll efficiently after upload
After uploading, use the get questionnaire details endpoint to track progress. Check the
should_poll field — when it’s false, processing is complete. A polling interval of 15-30 seconds is recommended.Getting help
- Check file types:
.xlsx,.xlsm,.xls,.csv,.docx,.pdf - Check text length: 50 to 200,000 characters
- Contact support: Email support@wolfia.com

