For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Resources
Get started
ReferenceGuidesChangelog
ReferenceGuidesChangelog
  • Token
    • GETGet Authorization User Info
    • GETGet Authorization Info
    • POSTResolve ID Token
  • Sites
    • GETList Sites
    • GETGet Site
    • GETGet Custom Domains
    • POSTPublish Site
  • Pages and Components
      • GETList Pages
      • GETGet Page Metadata
      • PUTUpdate Page Metadata
      • PATCHBulk update page metadata
      • GETGet Page Content
      • POSTUpdate Page Content
        • GETGet page schema markup
        • PUTUpdate page schema markup
        • POSTBulk get page schema markup
        • PATCHBulk update page schema markup
  • CMS
  • Forms
  • Custom Code
  • Assets
  • Comments
    • GETSearch Users by Email
    • GETList Comment Threads
    • GETGet Comment Thread
    • GETList Comment Replies
    • POSTCreate Comment Reply
  • Ecommerce
  • Webhooks
  • Site Configuration
  • Enterprise
  • App Subscriptions
    • GETGet app subscriptions
LogoLogo
Resources
Get started
Pages and ComponentsPagesSchema markup

Bulk update page schema markup

PATCH
https://api.webflow.com/beta/sites/:site_id/pages/schema-markup
PATCH
/beta/sites/:site_id/pages/schema-markup
$curl -X PATCH https://api.webflow.com/beta/sites/580e63e98c9a982ac9b8b741/pages/schema-markup \
> -H "Authorization: Bearer <token>" \
> -H "Content-Type: application/json" \
> -d '{
> "pages": [
> {
> "id": "6596da6045e56dee495bcbba",
> "jsonLdSchema": {
> "@context": "https://schema.org",
> "@type": "FAQPage",
> "mainEntity": [
> {
> "@type": "Question",
> "name": "What is the answer to life, the universe, and everything?",
> "acceptedAnswer": {
> "@type": "Answer",
> "text": "42"
> }
> }
> ]
> }
> },
> {
> "id": "6596da6045e56dee495bcbba",
> "jsonLdSchema": {
> "@context": "https://schema.org",
> "@type": "FAQPage",
> "mainEntity": [
> {
> "@type": "Question",
> "name": "Quelle est la reponse a la vie, l'\''univers et tout le reste?",
> "acceptedAnswer": {
> "@type": "Answer",
> "text": "42"
> }
> }
> ]
> },
> "localeId": "653fd9af6a07fc9cfd7a5e57"
> },
> {
> "id": "6596da6045e56dee495bcbad",
> "jsonLdSchema": null
> }
> ]
>}'
1{
2 "pages": [
3 {
4 "id": "6596da6045e56dee495bcbba",
5 "siteId": "6258612d1ee792848f805dcf",
6 "localeId": null,
7 "effectiveLocaleId": "6258612d1ee792848f805dd0",
8 "publishedPath": "/guide-to-the-galaxy",
9 "lastUpdated": "2024-03-11T10:42:42.000Z",
10 "jsonLdSchema": {
11 "@context": "https://schema.org",
12 "@type": "FAQPage",
13 "mainEntity": [
14 {
15 "@type": "Question",
16 "name": "What is the answer to life, the universe, and everything?",
17 "acceptedAnswer": {
18 "@type": "Answer",
19 "text": "42"
20 }
21 }
22 ]
23 },
24 "rawJsonLdSchema": null,
25 "isInherited": false
26 },
27 {
28 "id": "6596da6045e56dee495bcbba",
29 "siteId": "6258612d1ee792848f805dcf",
30 "localeId": "653fd9af6a07fc9cfd7a5e57",
31 "effectiveLocaleId": "653fd9af6a07fc9cfd7a5e57",
32 "publishedPath": "/fr/guide-de-la-galaxie",
33 "lastUpdated": "2024-03-11T10:55:00.000Z",
34 "jsonLdSchema": {
35 "@context": "https://schema.org",
36 "@type": "FAQPage",
37 "mainEntity": [
38 {
39 "@type": "Question",
40 "name": "Quelle est la reponse a la vie, l'univers et tout le reste?",
41 "acceptedAnswer": {
42 "@type": "Answer",
43 "text": "42"
44 }
45 }
46 ]
47 },
48 "rawJsonLdSchema": null,
49 "isInherited": false
50 },
51 {
52 "id": "6596da6045e56dee495bcbad",
53 "siteId": "6258612d1ee792848f805dcf",
54 "localeId": null,
55 "effectiveLocaleId": null,
56 "publishedPath": "/towel-day",
57 "lastUpdated": "2024-05-25T09:30:00.000Z",
58 "jsonLdSchema": null,
59 "rawJsonLdSchema": null,
60 "isInherited": false
61 }
62 ]
63}
Replace JSON-LD schema markup for up to 25 pages in a single request. All pages must belong to the site identified by `site_id`. Each entry can target a different secondary locale via `localeId`. The same `id` may appear multiple times when each entry uses a different `localeId`. Duplicate `(id, localeId)` tuples return 400. Pass `null` for `jsonLdSchema` to clear schema markup for an entry. When the input for an entry is a string that contains an opening `<script type="application/ld+json">` tag, the string must also contain a matching closing `</script>` tag or the request returns 400. The keys `__proto__`, `constructor`, and `prototype` are silently stripped before storage. Validation limits | 60KB raw input, 32 nesting depth, 5000 nodes — applied to each entry. Required scope | `pages:write`
Was this page helpful?
Previous

List Components

Next
Built with

Replace JSON-LD schema markup for up to 25 pages in a single request.

All pages must belong to the site identified by site_id. Each entry can target a different secondary locale via localeId. The same id may appear multiple times when each entry uses a different localeId. Duplicate (id, localeId) tuples return 400. Pass null for jsonLdSchema to clear schema markup for an entry.

When the input for an entry is a string that contains an opening <script type="application/ld+json"> tag, the string must also contain a matching closing </script> tag or the request returns 400.

The keys __proto__, constructor, and prototype are silently stripped before storage.

Validation limits | 60KB raw input, 32 nesting depth, 5000 nodes — applied to each entry.

Required scope | pages:write

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

site_idstringRequiredformat: "objectid"
Unique identifier for a Site

Request

The schema markup updates to apply.
pageslist of objectsRequired

List of schema markup updates to apply. Include between 1 and 25 entries per request. The same id may appear multiple times when each entry uses a different localeId.

Response

Request was successful
pageslist of objects

Schema markup results in the same order as the input pages array.

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error