Webflow CMS Items & Form Submissions
Keep a Webflow site's content fresh without opening the Designer: look up CMS items by name or slug, edit their fields as staged changes, publish them once approved, compare with what is live, and pull the latest submissions from the site's contact and lead forms.
Connect this API to an AI agent Browse all specs
What you can do with Webflow CMS Items & Form Submissions via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /sites |
listSites | List the sites this token can access |
| GET | /sites/{site_id} |
getSite | Get a site's details, domains and last publish time |
| GET | /sites/{site_id}/collections |
listCollections | List the CMS collections of a site (blog posts, products, team...) |
| GET | /collections/{collection_id} |
getCollection | Get a collection with its field slugs and types |
| GET | /collections/{collection_id}/items |
listItems | List or find staged items in a collection (by name, slug, date) |
| PATCH | /collections/{collection_id}/items |
updateItems | Update the fields of one or more staged items |
| GET | /collections/{collection_id}/items/live |
listLiveItems | List the items currently published on the live site |
| GET | /collections/{collection_id}/items/{item_id} |
getItem | Get one staged collection item with all its fields |
| POST | /collections/{collection_id}/items/publish |
publishItems | Publish staged items to the live site |
| GET | /sites/{site_id}/pages |
listPages | List a site's pages with titles, slugs and SEO settings |
| GET | /sites/{site_id}/forms |
listForms | List the forms on a site |
| GET | /sites/{site_id}/form_submissions |
listFormSubmissions | List form submissions for a site, optionally for one form |
| GET | /sites/{site_id}/form_submissions/{form_submission_id} |
getFormSubmission | Get one form submission |
Authentication
siteToken
Bearer token — sent as Authorization: Bearer <token>
Webflow site API token (or an OAuth access token), sent as Authorization: Bearer <token>.
How to get a credential
- In Webflow, open the site's Site settings > Apps & integrations.
- Under API access, click Generate API token and name it.
- Grant the scopes below (read-only for Sites and Pages; read and write for CMS; read for Forms), then copy the token. It is shown once.
- Site tokens work for one site only and expire after 365 days of inactivity.
Permissions used
| Scope | Operations |
|---|---|
sites:read |
listSites, getSite |
cms:read |
listCollections, getCollection, listItems, listLiveItems, getItem |
cms:write |
updateItems, publishItems |
pages:read |
listPages |
forms:read |
listForms, listFormSubmissions, getFormSubmission |
Common errors
- 401 Unauthorized: the token is invalid or was revoked. Generate a new one.
- 403 Forbidden: the token lacks the scope (e.g.
cms:write) or belongs to another site. - 400 Bad Request: a
fieldDatakey is not a field slug of the collection, or an itemidis missing. CheckgetCollection. - 409 Conflict: the slug is already used by another item.
- 429 Too Many Requests: the plan's per-minute rate limit was hit. Wait for
Retry-After.
Store the token as a bearer credential in VX Agents; never paste it into chat.
Usage guide
Setup
- Credential: a Webflow site API token (Site settings > Apps & integrations > API access) with
sites:read,cms:read,cms:write,pages:read,forms:read, stored as a bearer credential. - Pin
site_id(fromlistSites) and thecollection_idyou edit most (e.g. Blog Posts) as preset parameters.
Update and publish CMS content
listSites->listCollectionsto find the collection;getCollectionreturns its fields. Use each field's slug as the key infieldData.- Find the item:
listItemswithnameorslug, or sort withsortBy=lastUpdated&sortOrder=desc.getItemreturns all of its staged fields. - Show the user the proposed changes and confirm. Then
updateItemswithitems: [{ "id": "...", "fieldData": { "<field-slug>": "new value" } }](up to 100 items per call). Changes are staged, not live yet. - When the user approves going live,
publishItemswithitemIds: ["..."]. listLiveItemsshows what visitors currently see, useful to compare before and after publishing.
Read form leads
listFormsfor the site to get each form's id anddisplayName.listFormSubmissionswithsite_id(addelementIdto narrow to one form) returns submissions with theirformResponsefields anddateSubmitted;getFormSubmissionfetches one.
Good to know
- Only staged items can be edited here; creating new items moved to a newer endpoint in Webflow's docs that this spec does not include.
- Rich text fields take HTML; image fields take a URL (
{ "url": "https://..." }); reference fields take item ids. - Changing a
slugbreaks links to the old URL: warn the user first. - Publishing changes the public website: always confirm before
publishItems. - Lists use
offsetandlimit(max 100) and returnpagination.total. listPagesgives page titles, slugs and SEO/Open Graph settings for an SEO review.- Source: Webflow Data API v2 reference (https://developers.webflow.com/data/reference/rest-introduction), checked 2026-10-16.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Webflow CMS Items & Form Submissions” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.