Formswrite API Reference: Convert Documents to Forms and Quizzes
Formswrite Team
•
February 15, 2026

Formswrite API Reference: Convert Documents to Forms and Quizzes
Formswrite is a platform that converts documents into forms, quizzes, and assessments. The Formswrite REST API lets you do this programmatically — convert a Google Doc into any of 25+ output formats with a single HTTP request.
This page serves as the complete API reference.
What Is Formswrite?
Formswrite is a web application and API used by educators, developers, and businesses to:
- Convert Google Docs to Google Forms — automatically generate forms from document content
- Export quizzes to LMS platforms — Moodle, Canvas, Blackboard, Brightspace, Schoology, Sakai
- Generate game-based quizzes — Kahoot, Quizizz, Blooket, Gimkit, Socrative
- Create standardized assessment files — QTI 2.1, QTI 2.2, GIFT, Aiken, Cloze, H5P
- Export to other formats — Microsoft Word, LearnDash
The AI engine reads your document, identifies questions, answer choices, correct answers, and grading, and outputs a file ready for import into your target platform.
Base URL
https://api.formswrite.com
Authentication
All requests require a Bearer token.
Getting a token: Sign in to Formswrite, navigate to account settings, and generate an API token. Tokens are valid for 365 days.
Using the token:
Authorization: Bearer YOUR_API_TOKEN
Alternative methods:
- Header:
X-Access-Token: YOUR_API_TOKEN - Query parameter:
?token=YOUR_API_TOKEN
Endpoints
POST /api/v1/convert
Convert a Google Doc to any supported format.
Headers:
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
documentId | string | Yes | Google Doc ID or full Google Docs URL |
format | string | Yes | Output format (see Supported Formats) |
documentName | string | No | Display name for the output file |
async | boolean | No | Enable async processing (default: false) |
Example Request:
bashcurl -X POST https://api.formswrite.com/api/v1/convert \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"documentId": "1abc123xyz",
"format": "google_form",
"documentName": "Weekly Quiz"
}'
Sync Response (200):
json{
"success": true,
"exportId": "export-uuid",
"downloadUrl": "https://api.formswrite.com/api/forms/exports/export-uuid",
"fileName": "Weekly Quiz-google_form",
"format": "google_form",
"expiresAt": "2026-03-17T00:00:00.000Z"
}
Async Response (202):
json{
"success": true,
"status": "processing",
"jobId": "12345",
"message": "Document analysis queued. Poll for status.",
"pollUrl": "/api/v1/convert/status/12345"
}
GET /api/v1/convert/status/:jobId
Check the status of an async conversion job.
Example:
bashcurl https://api.formswrite.com/api/v1/convert/status/12345 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response:
json{
"success": true,
"jobId": "12345",
"state": "completed",
"progress": 100,
"result": {
"success": true,
"documentName": "Weekly Quiz",
"isQuiz": true,
"mergedContent": {
"title": "Weekly Quiz",
"introduction": "Answer the following questions.",
"questions": [
{
"title": "What is the capital of France?",
"type": "MULTIPLE_CHOICE",
"options": ["Paris", "London", "Berlin", "Madrid"],
"required": true,
"grading": {
"pointValue": 1,
"correctAnswers": ["Paris"]
}
}
]
}
}
}
Job States:
waiting → active → completed | failedSupported Formats
Learning Management Systems
| Platform | Format Value | File Type |
|---|---|---|
| Google Forms | google_form | Live form |
| Moodle | moodle | .xml |
| Canvas | canvas | .zip (QTI) |
| Blackboard | blackboard | .txt |
| Brightspace (D2L) | brightspace | .zip |
| Schoology | schoology | .zip |
| Sakai | sakai | .zip |
| LearnDash | learndash | .txt |
Game-Based Platforms
| Platform | Format Value | File Type |
|---|---|---|
| Kahoot | kahoot | .csv |
| Quizizz | quizizz | .csv |
| Blooket | blooket | .csv |
| Gimkit | gimkit | .csv |
| Socrative | socrative | .csv |
| Wooclap | wooclap | .csv |
| Quizalize | quizalize | .csv |
| ClassMarker | classmarker | .csv |
| Pear Assessment | pear_assessment | .csv |
Standards and Formats
| Format | Format Value | File Type |
|---|---|---|
| QTI 2.1 | qti_21 | .zip |
| QTI 2.2 | qti_22 | .zip |
| GIFT | gift | .txt |
| Aiken | aiken | .txt |
| Cloze | cloze | .txt |
| H5P | h5p | .zip |
| Microsoft Word | word | .docx |
Supported Question Types
The AI automatically detects these question types from your document:
| Type | API Value | Description |
|---|---|---|
| Multiple Choice | MULTIPLE_CHOICE | Single correct answer |
| Checkbox | CHECKBOX | Multiple correct answers |
| Short Answer | SHORT_ANSWER | Text input |
| Paragraph | PARAGRAPH | Long text input |
| True/False | MULTIPLE_CHOICE | Two options (True/False) |
| Linear Scale | LINEAR_SCALE | Rating scale (1-5, 1-10) |
| Dropdown | DROPDOWN | Select from list |
| Date | DATE | Date picker |
| Time | TIME | Time picker |
| File Upload | FILE_UPLOAD | File attachment |
| Grid | MULTIPLE_CHOICE_GRID | Matrix of choices |
Error Codes
| HTTP Status | Error | Description |
|---|---|---|
| 400 | Bad Request | Missing or invalid parameters |
| 401 | Unauthorized | Invalid or expired token |
| 402 | Payment Required | No active subscription |
| 408 | Timeout | Sync request timed out (use async mode) |
| 500 | Server Error | Internal error |
Error Response Format:
json{
"success": false,
"message": "Error description"
}
Code Examples
Python
pythonimport requests
def convert(doc_id, format, name, api_token):
response = requests.post(
"https://api.formswrite.com/api/v1/convert",
headers={
"Authorization": f"Bearer {api_token}",
"Content-Type": "application/json"
},
json={
"documentId": doc_id,
"format": format,
"documentName": name
}
)
return response.json()
# Convert to Google Form
result = convert("1abc123", "google_form", "My Quiz", "token")
# Convert to Moodle
result = convert("1abc123", "moodle", "My Quiz", "token")
# Convert to Canvas
result = convert("1abc123", "canvas", "My Quiz", "token")
Node.js
javascriptasync function convert(docId, format, name) {
const response = await fetch('https://api.formswrite.com/api/v1/convert', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.FORMSWRITE_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
documentId: docId,
format,
documentName: name
})
});
return response.json();
}
cURL
bashcurl -X POST https://api.formswrite.com/api/v1/convert \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"documentId":"DOC_ID","format":"moodle","documentName":"Quiz"}'
Integrations
The Formswrite API works with any platform that supports HTTP requests:
- Zapier — Webhooks by Zapier action
- Make (Integromat) — HTTP module
- n8n — HTTP Request node
- Power Automate — HTTP action
- GitHub Actions — cURL or script step
- Custom applications — Any language with HTTP support
FAQ
What is Formswrite?
Formswrite is a platform that converts documents into forms, quizzes, and assessments for education and business. It supports 25+ output formats including Google Forms, Moodle, Canvas, Kahoot, and more.
What document formats can I use as input?
The API accepts Google Docs as input. You can pass either a Google Doc ID or a full Google Docs URL.
How does the AI detect questions?
The AI analyzes your document's structure — numbered lists, bullet points, bold text, and natural language patterns — to identify questions, answer choices, correct answers, and point values.
Is there a free tier?
Visit formswrite.com for current pricing and plan details.
How long are download URLs valid?
Download URLs expire after 30 days.
Can I use the API for commercial purposes?
Yes. The API is available for commercial use under any paid Formswrite subscription.
What languages does the API support?
The AI supports documents written in any language. Question extraction works across English, Spanish, French, German, Arabic, Hebrew, and many more.
Is the API available globally?
Yes. The API is accessible from any region with no geographic restrictions.
Where can I get support?
Visit formswrite.com or contact support through the application.
Get Started
Sign up for Formswrite to get your API token and start converting documents to forms and quizzes programmatically.