To give form creators more control over who can respond, we're introducing granular controls for responders. Forms created with the API after January 31, 2026 will have an unpublished state by default. To learn more, see API changes to Google Forms.
Stay organized with collections
Save and categorize content based on your preferences.
The Google Forms API is a RESTful interface that lets you create and modify forms
and quizzes, retrieve form responses and quiz grades, set up quiz answer keys
with automatic feedback, and receive push notifications. The most common uses
of this API include the following tasks:
Create a form or quiz
Publish and manage responders
Update a form or quiz
Retrieve responses from a form or quiz
Read form content and metadata
Set up and receive push notifications
The following is a list of common terms used in the Forms API:
Form
A Google Forms document, created and stored in Drive. Each
form is represented by a
Form resource
and has a unique formId value, containing letters, numbers, hyphens, or
underscores. You can find the form ID in a Google Forms URL:
https://docs.google.com/forms/d/FORM_ID/edit
Quiz
A specific type of Google Forms document that allows for grading of the
form responses against an answer key. A quiz can only be created by using
the batchUpdate()
method to update the isQuiz setting on an existing form to true.
Grading
A point value, answer key, and feedback for a question, applied when
isQuiz is true. Represented by the
Grading resource.
Feedback
A response given to the end user when responding to a question on a quiz,
represented by the Feedback
resource.
Item
A single element in a form, represented by the
Item resource. Item is a
repeating element which can contain a section, question group, question,
text, image, or video.
Question
A single question on the form, represented by the
Question resource.
Question group
A group of questions that all share the same set of possible answers (for
example, a grid of ratings from 1 to 5). Represented by the
QuestionGroupItem
resource.
Section
A section is a way to break up a form into multiple pages and add
conditional logic (such as only showing certain questions based on how the
user answers). Sections correspond to the
PageBreakItem
resource.
Answer
The end user's answer to a question, represented by the
Answer
resource. Includes both grade information (if present), metadata, and the
content of the answer.
Response
The end user's submission of a form, represented by the
FormResponse
resource.
Watch
A trigger that tracks changes to either form schema changes (such as edits
to questions) or form response submissions and sends a push notification when
a change occurs. Represented by the
Watch resource.
Form structure
When managing forms and quizzes, understanding how to specify different fields
can be complicated, given that many of the form objects can be nested inside
each other in multiple ways. To see how the visual representation of a form
maps to the fields, we recommend using the UI to create a few examples of
forms your application might generate. Then retrieve the corresponding JSON
using the
forms.get() method
so you can compare. For example,
this example quiz
corresponds to the following JSON:
{"formId":"FORM_ID","info":{"title":"Famous Black Women","description":"Please complete this quiz based off of this week's readings for class.","documentTitle":"API Example Quiz"},"settings":{"quizSettings":{"isQuiz":true}},"revisionId":"00000021","responderUri":"https://docs.google.com/forms/d/e/1FAIpQLSd0iBLPh4suZoGW938EU1WIxzObQv_jXto0nT2U8HH2KsI5dg/viewform","items":[{"itemId":"5d9f9786","imageItem":{"image":{"contentUri":"DIRECT_URL","properties":{"alignment":"LEFT"}}}},{"itemId":"72b30353","title":"Which African American woman authored \"I Know Why the Caged Bird Sings\"?","questionItem":{"question":{"questionId":"25405d4e","required":true,"grading":{"pointValue":2,"correctAnswers":{"answers":[{"value":"Maya Angelou"}]}},"choiceQuestion":{"type":"RADIO","options":[{"value":"Maya Angelou"},{"value":"bell hooks"},{"value":"Alice Walker"},{"value":"Roxane Gay"}]}}}},{"itemId":"0a4859c8","title":"Who was the first Dominican-American woman elected to state office?","questionItem":{"question":{"questionId":"37fff47a","grading":{"pointValue":2,"correctAnswers":{"answers":[{"value":"Grace Diaz"}]}},"choiceQuestion":{"type":"RADIO","options":[{"value":"Rosa Clemente"},{"value":"Grace Diaz"},{"value":"Juana Matias"},{"value":"Sabrina Matos"}]}}}}],"publishSettings":{"isPublished":true,"isAcceptingResponses":true}}
Next steps
To learn about developing with Google Workspace APIs, including handling
authentication and authorization, refer to
Get started as a Workspace developer.
To learn how to configure and run a basic Forms API app, read the
Quickstarts overview.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-04 UTC."],[],["The Google Forms API facilitates creating, modifying, and retrieving data from forms and quizzes. Key actions include creating and updating forms/quizzes, retrieving responses, reading form content/metadata, and setting up push notifications. Quizzes can include grading, answer keys, and feedback. Forms consist of *Items*, like *Questions*, *Question Groups*, and *Sections*. User input is stored as *Answers* in *Responses*. *Watches* track form changes and trigger push notifications.\n"],null,["The Google Forms API is a RESTful interface that lets you create and modify forms\nand quizzes, retrieve form responses and quiz grades, set up quiz answer keys\nwith automatic feedback, and receive push notifications. The most common uses\nof this API include the following tasks:\n\n- Create a form or quiz\n- Publish and manage responders\n- Update a form or quiz\n- Retrieve responses from a form or quiz\n- Read form content and metadata\n- Set up and receive push notifications\n\nThe following is a list of common terms used in the Forms API:\n*Form*\n\n: A Google Forms document, created and stored in Drive. Each\n form is represented by a\n [`Form`](/workspace/forms/api/reference/rest/v1/forms) resource\n and has a unique `formId` value, containing letters, numbers, hyphens, or\n underscores. You can find the form ID in a Google Forms URL:\n\n: `https://docs.google.com/forms/d/FORM_ID/edit`\n\n*Quiz*\n\n: A specific type of Google Forms document that allows for grading of the\n form responses against an answer key. A quiz can only be created by using\n the [`batchUpdate()`](/workspace/forms/api/reference/rest/v1/forms/batchUpdate)\n method to update the `isQuiz` setting on an existing form to `true`.\n\n *Grading*\n : A point value, answer key, and feedback for a question, applied when\n `isQuiz` is `true`. Represented by the\n [`Grading`](/workspace/forms/api/reference/rest/v1/forms#grading) resource.\n\n *Feedback*\n : A response given to the end user when responding to a question on a quiz,\n represented by the [`Feedback`](/workspace/forms/api/reference/rest/v1/Feedback)\n resource.\n\n*Item*\n\n: A single element in a form, represented by the\n [Item](/workspace/forms/api/reference/rest/v1/forms#item) resource. `Item` is a\n repeating element which can contain a section, question group, question,\n text, image, or video.\n\n*Question*\n\n: A single question on the form, represented by the\n [`Question`](/workspace/forms/api/reference/rest/v1/forms#question) resource.\n\n*Question group*\n\n: A group of questions that all share the same set of possible answers (for\n example, a grid of ratings from 1 to 5). Represented by the\n [`QuestionGroupItem`](/workspace/forms/api/reference/rest/v1/forms#questiongroupitem)\n resource.\n\n*Section*\n\n: A section is a way to break up a form into multiple pages and add\n conditional logic (such as only showing certain questions based on how the\n user answers). Sections correspond to the\n [`PageBreakItem`](/workspace/forms/api/reference/rest/v1/forms#PageBreakItem)\n resource.\n\n*Answer*\n\n: The end user's answer to a question, represented by the\n [`Answer`](/workspace/forms/api/reference/rest/v1/forms.responses#Answer)\n resource. Includes both grade information (if present), metadata, and the\n content of the answer.\n\n*Response*\n\n: The end user's submission of a form, represented by the\n [`FormResponse`](/workspace/forms/api/reference/rest/v1/forms.responses)\n resource.\n\n*Watch*\n\n: A trigger that tracks changes to either form schema changes (such as edits\n to questions) or form response submissions and sends a push notification when\n a change occurs. Represented by the\n [`Watch`](/workspace/forms/api/reference/rest/v1/forms.watches) resource.\n\nForm structure\n\nWhen managing forms and quizzes, understanding how to specify different fields\ncan be complicated, given that many of the form objects can be nested inside\neach other in multiple ways. To see how the visual representation of a form\nmaps to the fields, we recommend using the UI to create a few examples of\nforms your application might generate. Then retrieve the corresponding JSON\nusing the\n[`forms.get()`](/workspace/forms/api/reference/rest/v1/forms/get) method\nso you can compare. For example,\n[this example quiz](https://docs.google.com/forms/d/e/1FAIpQLSd0iBLPh4suZoGW938EU1WIxzObQv_jXto0nT2U8HH2KsI5dg/viewform)\ncorresponds to the following JSON: \n\n {\n \"formId\": \"FORM_ID\",\n \"info\": {\n \"title\": \"Famous Black Women\",\n \"description\": \"Please complete this quiz based off of this week's readings for class.\",\n \"documentTitle\": \"API Example Quiz\"\n },\n \"settings\": {\n \"quizSettings\": {\n \"isQuiz\": true\n }\n },\n \"revisionId\": \"00000021\",\n \"responderUri\": \"https://docs.google.com/forms/d/e/1FAIpQLSd0iBLPh4suZoGW938EU1WIxzObQv_jXto0nT2U8HH2KsI5dg/viewform\",\n \"items\": [\n {\n \"itemId\": \"5d9f9786\",\n \"imageItem\": {\n \"image\": {\n \"contentUri\": \"DIRECT_URL\",\n \"properties\": {\n \"alignment\": \"LEFT\"\n }\n }\n }\n },\n {\n \"itemId\": \"72b30353\",\n \"title\": \"Which African American woman authored \\\"I Know Why the Caged Bird Sings\\\"?\",\n \"questionItem\": {\n \"question\": {\n \"questionId\": \"25405d4e\",\n \"required\": true,\n \"grading\": {\n \"pointValue\": 2,\n \"correctAnswers\": {\n \"answers\": [\n {\n \"value\": \"Maya Angelou\"\n }\n ]\n }\n },\n \"choiceQuestion\": {\n \"type\": \"RADIO\",\n \"options\": [\n {\n \"value\": \"Maya Angelou\"\n },\n {\n \"value\": \"bell hooks\"\n },\n {\n \"value\": \"Alice Walker\"\n },\n {\n \"value\": \"Roxane Gay\"\n }\n ]\n }\n }\n }\n },\n {\n \"itemId\": \"0a4859c8\",\n \"title\": \"Who was the first Dominican-American woman elected to state office?\",\n \"questionItem\": {\n \"question\": {\n \"questionId\": \"37fff47a\",\n \"grading\": {\n \"pointValue\": 2,\n \"correctAnswers\": {\n \"answers\": [\n {\n \"value\": \"Grace Diaz\"\n }\n ]\n }\n },\n \"choiceQuestion\": {\n \"type\": \"RADIO\",\n \"options\": [\n {\n \"value\": \"Rosa Clemente\"\n },\n {\n \"value\": \"Grace Diaz\"\n },\n {\n \"value\": \"Juana Matias\"\n },\n {\n \"value\": \"Sabrina Matos\"\n }\n ]\n }\n }\n }\n }\n ],\n \"publishSettings\" : {\n \"isPublished\": true,\n \"isAcceptingResponses\": true\n }\n }\n\nNext steps\n\n- To learn about developing with Google Workspace APIs, including handling authentication and authorization, refer to [Get started as a Workspace developer](/workspace/guides/getstarted-overview).\n- To learn how to configure and run a basic Forms API app, read the [Quickstarts overview](/workspace/forms/api/guides/quickstarts-overview)."]]