Google Docs to Forms - Formswrite.com logo
BlogPricing

Convert Google Docs to Canvas LMS Quizzes with the Formswrite API

Formswrite Team

February 15, 2026

Convert Google Docs to Canvas LMS Quizzes with the Formswrite API

Convert Google Docs to Canvas LMS Quizzes with the Formswrite API

Manually entering quiz questions into Canvas LMS is one of the most time-consuming tasks for educators and LMS administrators. If you already have your assessments written in Google Docs, the Formswrite API can convert them into Canvas-ready QTI packages automatically.

The Problem with Manual Canvas Quiz Entry

Canvas LMS has a built-in quiz editor, but it requires entering each question individually — typing the question text, adding answer options, marking the correct answer, and setting point values. For a 50-question exam, this can take over an hour.
Canvas does support QTI (Question and Test Interoperability) imports, but creating valid QTI XML packages by hand is even more painful.
The Formswrite API solves both problems: write your quiz in a Google Doc and get a valid QTI package in seconds.

Quick Start

bashcurl -X POST https://api.formswrite.com/api/v1/convert \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "documentId": "YOUR_GOOGLE_DOC_ID",
    "format": "canvas",
    "documentName": "Midterm Exam - History 101"
  }'
Response:
json{
  "success": true,
  "exportId": "export-uuid",
  "downloadUrl": "https://api.formswrite.com/api/forms/exports/export-uuid",
  "fileName": "Midterm Exam - History 101-canvas.zip",
  "format": "canvas",
  "expiresAt": "2026-03-17T00:00:00.000Z"
}
Download the .zip file and import it into Canvas via Settings → Import Course Content → QTI .zip file.

Python Example

pythonimport requests

API_TOKEN = "your_api_token"

response = requests.post(
    "https://api.formswrite.com/api/v1/convert",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "documentId": "1abc123xyz",
        "format": "canvas",
        "documentName": "History 101 Midterm"
    }
)

result = response.json()

if result["success"]:
    # Download the QTI zip
    qti = requests.get(result["downloadUrl"])
    with open(result["fileName"], "wb") as f:
        f.write(qti.content)
    print(f"Canvas QTI package saved: {result['fileName']}")

Node.js Example

javascriptasync function convertToCanvas(docId, 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: 'canvas',
      documentName: name
    })
  });

  const result = await response.json();

  if (result.success) {
    console.log(`Download QTI: ${result.downloadUrl}`);
    console.log(`Expires: ${result.expiresAt}`);
  }
  return result;
}

How to Import QTI into Canvas

  1. In Canvas, go to your course
  2. Click SettingsImport Course Content
  3. Select QTI .zip file as the content type
  4. Upload the generated .zip file
  5. Click Import
  6. Your questions appear in the Question Bank
From there, you can create quizzes using the imported questions.

Supported Question Types

The AI automatically converts these question types from your Google Doc:
  • Multiple Choice — standard single-answer questions
  • Multiple Answer — select all that apply
  • True/False — binary choice
  • Short Answer — text response
  • Essay — long-form response
  • Fill in the Blank — text completion
  • Matching — pair items together
All question types are mapped to their Canvas equivalents in the QTI package.

Batch Conversion for Multiple Courses

pythoncourses = [
    {"doc": "doc_id_1", "name": "History 101 - Quiz 1"},
    {"doc": "doc_id_2", "name": "History 101 - Quiz 2"},
    {"doc": "doc_id_3", "name": "History 101 - Midterm"},
    {"doc": "doc_id_4", "name": "History 101 - Final"},
]

for course in courses:
    response = requests.post(
        "https://api.formswrite.com/api/v1/convert",
        headers={
            "Authorization": f"Bearer {API_TOKEN}",
            "Content-Type": "application/json"
        },
        json={
            "documentId": course["doc"],
            "format": "canvas",
            "documentName": course["name"]
        }
    )
    result = response.json()
    if result["success"]:
        qti = requests.get(result["downloadUrl"])
        with open(result["fileName"], "wb") as f:
            f.write(qti.content)
        print(f"Ready for Canvas: {course['name']}")

Other LMS Formats

The same API supports all major learning management systems:
LMSFormat ValueFile Type
Canvascanvas.zip (QTI)
Moodlemoodle.xml
Blackboardblackboard.txt
Brightspace (D2L)brightspace.zip
Schoologyschoology.zip
Sakaisakai.zip
Convert the same Google Doc to any LMS format by changing the format parameter.

Use Cases

  • University IT departments automating quiz imports across hundreds of Canvas courses
  • Instructional designers batch-converting assessment documents
  • EdTech companies integrating Canvas quiz generation into their platforms
  • K-12 districts standardizing assessment delivery through Canvas

FAQ

Does the QTI package include images?

Yes. Images from your Google Doc are included in the QTI zip package.

Which QTI version does Canvas use?

Canvas uses QTI 1.2. The Formswrite API generates Canvas-compatible QTI packages. If you need QTI 2.1 or 2.2 for other platforms, use qti_21 or qti_22 as the format.

Can I convert to both Canvas and Moodle from the same document?

Yes. Make two API calls with different format values (canvas and moodle).

Does it work with Canvas New Quizzes?

The generated QTI imports into Canvas Classic Quizzes. Canvas New Quizzes has a separate import system that also supports QTI.

Get Started

Automate your Canvas quiz workflow. Sign up for Formswrite and convert Google Docs to Canvas QTI packages with a single API call.

Share this post with your network


Formswrite - Google Docs to Forms Converter

Create forms in seconds, not hours

Convert Google Docs to Forms with one click

Save hours on quiz creation every month.

No more manual form creation. No more formatting hassles.

We care about your data in our privacy policy

© 2026 Formswrite. All Rights Reserved.