canonical: https://jentic.com/apis/googleapis.com/forms

# Google Forms API

The Google Forms API lets developers create, retrieve, and modify Google Forms and read their responses programmatically. It supports batch updates that change form structure, items, and settings in a single transaction, plus a watch system that notifies an external endpoint when responses arrive. This API turns Forms into a building block for survey workflows, intake systems, and data collection automations.

## For AI agents

Create Google Forms, modify their structure with batch updates, read submitted responses, and subscribe to response notifications. Suited for agents that automate intake, surveys, or feedback collection.

## Scope

Does not handle response editing, payment collection, or signature workflows - use Forms for survey and intake creation only.

## Capabilities

- Create a new Google Form with a title and items
- Mutate form structure and items atomically with forms:batchUpdate
- Retrieve a form's full definition and metadata
- List all responses to a form with pagination
- Get a single response by id for processing
- Subscribe to response and schema-change events with watches
- Renew an existing watch before it expires

## Use cases

### Programmatic Form Creation for Intake Workflows

Operations and HR teams often need to spin up a structured intake form per project, candidate, or vendor. The Forms API supports creating a form and then using batchUpdate to add sections, questions, and validation in a single atomic call. This lets a backend service generate consistent, branded forms on demand instead of asking staff to copy templates by hand.

Example prompt: Call POST /v1/forms with the title 'Vendor Onboarding', then POST /v1/forms/{formId}:batchUpdate with createItem requests for vendor name, contact email, and tax id questions.

### Real-Time Response Processing

Survey processing pipelines need to react to each new submission. The watches resource lets an application register a Cloud Pub/Sub topic to receive a push notification when responses arrive or the form schema changes. Combined with responses.get on the response id, this enables real-time enrichment, ticket creation, or downstream notification.

Example prompt: Call POST /v1/forms/{formId}/watches with eventType RESPONSES and a Pub/Sub topic, then on each notification call GET /v1/forms/{formId}/responses/{responseId}.

### Bulk Response Export for Analysis

Research and analytics teams want to export all responses from a form into a data warehouse. The list responses endpoint paginates through every submission and returns answers keyed by question id, which can be joined with the form definition from forms.get to produce a flat table for analysis.

Example prompt: Call GET /v1/forms/{formId}/responses, paginate with pageToken, and write each response to a data warehouse keyed by responseId.

### Agent-Built Surveys

An AI assistant can generate a survey for a user's described intent, then provision the matching Google Form via Jentic. The agent searches for the create form and batch update operations, loads their schemas, and executes them so the user receives a shareable form URL within seconds. The agent never sees the user's underlying OAuth credentials.

Example prompt: Use Jentic to search 'create a google form', load the create and batchUpdate schemas, and execute them to provision a survey from an agent-generated question list.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v1/forms | Create a new Google Form |
| GET | /v1/forms/{formId} | Get a form's definition |
| POST | /v1/forms/{formId}:batchUpdate | Apply a batch of structural updates |
| GET | /v1/forms/{formId}/responses | List responses for a form |
| POST | /v1/forms/{formId}/watches | Subscribe to response notifications |
| POST | /v1/forms/{formId}:setPublishSettings | Update publish settings for a form |

## Key resources

- **forms** — Create, retrieve, and batch-update Google Forms and their items.
- **responses** — List and read individual responses submitted to a form.
- **watches** — Push notifications for responses and schema changes via Cloud Pub/Sub.

## Why Jentic

- **Setup:** Wiring the Google Forms API by hand means setting up Google OAuth 2.0 with the right forms scopes, refreshing short-lived tokens, and building the batchUpdate request structure from Google's spec. Through Jentic you install once, import the Google Forms API from the API Directory, store the OAuth credential once, and your agent calls it.
- **Permission scoping:** The Forms API puts the form resource in the URL path (/v1/forms/{formId}, /v1/forms/{formId}:batchUpdate), so a rule can pin your agent to one form: it can read that form and its responses and nothing else. You choose the operations it may call, so structural edits via batchUpdate are not included unless you add them.
- **Credential handling:** Your Google OAuth credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a Google Form' or 'list form responses', and Jentic returns the matching operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Google Sheets API** — Spreadsheet API often used as a destination for Forms responses.
- **Google Drive API** — Manages the Drive container that holds the form file.
- **Google Calendar API** — Schedule events triggered from form responses, such as interview slots.

## FAQ

### What authentication does the Google Forms API use?

It uses Google OAuth 2.0 with forms.body and forms.responses.readonly scopes. Through Jentic, refresh tokens are stored encrypted in the vault and agents only see scoped, short-lived bearer tokens.

### Can I add multiple-choice questions to a form with this API?

Yes. Use POST /v1/forms/{formId}:batchUpdate with a createItem request whose questionItem.question.choiceQuestion.type is RADIO or CHECKBOX and supply the option list.

### What are the rate limits for the Google Forms API?

Google enforces standard per-user and per-project quotas, typically around 60 read requests per minute per user with similar write limits. Quota errors return HTTP 429 and should be retried with backoff.

### How do I get notified when a new response arrives through Jentic?

Search Jentic for 'subscribe to google forms responses', load the schema for POST /v1/forms/{formId}/watches, and execute it with eventType RESPONSES and your Cloud Pub/Sub topic to receive push notifications on each submission.

### Is the Google Forms API free?

Yes, the Forms API itself has no cost. Standard Google OAuth verification rules apply for apps requesting restricted scopes.

### Can I edit responses through this API?

No. Responses are read-only via the API. You can list and get responses, but updating answers must be done by the respondent through the form itself.

### Can I limit what my agent is allowed to do with the Google Forms API?

Yes. Because you run Jentic One yourself, your own rules decide which Google Forms operations and which OAuth credential the agent may use. The form ID sits in the URL path (/v1/forms/{formId}, /v1/forms/{formId}/responses), so you can pin the agent to a single form and let it only read that form and its responses. Since you pick the allowed operations, structural edits through /v1/forms/{formId}:batchUpdate stay off unless you explicitly grant them.
