> ## Documentation Index
> Fetch the complete documentation index at: https://docs.r28.ai/charter/llms.txt
> Use this file to discover all available pages before exploring further.

# forms_batch_update

> Change a form with a batch of updates. Each request sets exactly one kind of edit, one of update_form_info, update_settings, create_item, move_item, delete_item or update_item, and they apply in order, atomically. Items are addressed by index, and indices shift as the batch applies: inserting at index 2 moves every later item down, so order several insertions back-to-front or state each location against the form as it will be by then.

<div className="tool-route"><span className="tool-row-method" data-method="POST">POST</span><code>{"https://forms.googleapis.com/v1/forms/{formId}:batchUpdate"}</code></div>

```python gforms_forms_batch_update.py theme={null}
from charter.packs import gforms

result = await gforms.forms_batch_update.ainvoke({"formId": ..., "body": ...})
```

<Note>
  Requires `https://www.googleapis.com/auth/forms.body`. Costs 1 against the provider's own quota.
</Note>

<Warning>
  This tool's JSON schema is 27 KB, because it models the whole resource this endpoint writes.
  That is more context than most tasks. Narrow it at the call site
  with [`Tool.derived`](/charter/charter/reference/tool#tool-derived):

  ```python theme={null}
  narrowed = gforms.forms_batch_update.derived(
      name="forms_batch_update_narrowed",
      drop={"body.write_control"},
  )
  ```

  Those are its heaviest branches by schema size, not a recommendation: which ones you can spare is yours to decide. The tool underneath is unchanged.
  See [Projections](/charter/charter/tools/projections).
</Warning>

## Path parameters

<div className="reference-table">
  | Field                                                          | Type     | Description            |
  | -------------------------------------------------------------- | -------- | ---------------------- |
  | `formId` <span className="required" title="required">\*</span> | `string` | Required. The form ID. |
</div>

## Body

<div className="reference-table">
  | Field                                                        | Type                                                                           | Description           |
  | ------------------------------------------------------------ | ------------------------------------------------------------------------------ | --------------------- |
  | `body` <span className="required" title="required">\*</span> | [BatchUpdateFormBody](/charter/charter/packs/gforms/forms/objects#batchupdateformbody) | The updates to apply. |
</div>
