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
ReferenceGuidesExamplesChangelog
ReferenceGuidesExamplesChangelog
  • Data API
    • Getting started
    • Working with the CMS
      • Manage collections and items
      • Publishing
      • Localization
      • Content Delivery
    • Working with Localization
    • Working with Custom Code
    • Working with Webhooks
    • Working with Assets
  • Resources
    • Examples
    • Webflow CLI
    • Webflow SDK
    • Developer Workspace
    • MCP server and AI tools
  • Company
    • Developer Terms of Service
    • Webflow Terms of Service
LogoLogo
Resources
Get started
On this page
  • Endpoints
  • Authentication
  • Responses
  • Caching policy
  • Initial requests
  • Cache duration
  • Content updates
  • Rate limits
Data APIWorking with the CMS

Multi-Channel Content Delivery

Was this page helpful?
Previous

Working with Localization APIs

Create and manage localized content across multiple languages and regions
Next
Built with

The Webflow Data API provides endpoints to create, write, update, and delete CMS content. This API always returns the most up-to-date data via the Webflow backend servers.

However, to serve CMS content quickly, you can use the Webflow Content Delivery API. This API mirrors certain Data API read-only endpoints and serves cached data for fast, reliable performance. The Content Delivery API is appropriate for high-volume requests and for serving content consistently across multiple channels like websites, apps, email campaigns, and digital touchpoints.

Endpoints

The Content Delivery API provides the following read-only endpoints for accessing published CMS content:

  • List live collection items: Retrieves all published items in the specified collection
  • Get a live collection item: Retrieves a published item from a collection

To use the Content Delivery API, replace the standard API host name (api.webflow.com) with the host name api-cdn.webflow.com in your requests. For example, this request calls the List live collection items endpoint on the Content Delivery API:

$curl -G https://api-cdn.webflow.com/v2/collections/580e63fc8c9a982ac9b8b745/items/live \
> -H "Authorization: Bearer <token>" \
> -d offset=0 \
> -d limit=100

To use the Content Delivery API with the JavaScript/Typescript SDK, set the host name with the baseUrl option as in this example:

1// Query Content Delivery API for cached content
2const webflowCDN = new WebflowClient({
3 accessToken: process.env.WEBFLOW_TOKEN,
4 baseUrl: 'https://api-cdn.webflow.com',
5});
6const items = await webflow.collections.items.listItems(collectionId);
7console.log(items);

To use the Content Delivery API with the Python SDK, set the host name with the baseUrl option as in this example:

1from webflow.client import Webflow
2from webflow import WebflowEnvironment
3
4cdn_environment = WebflowEnvironment(
5 base="https://api-cdn.webflow.com/v2",
6 data_api="https://api.webflow.com/v2",
7 content_delivery_api="https://api-cdn.webflow.com/v2",
8)
9client_cdn = Webflow(access_token=token, environment=cdn_environment)
10
11response = client_cdn.collections.items.list_items(collection_id)
12for item in response.items or []:
13 print(f"{item.id} {item.field_data.name}")

Authentication

The Content Delivery API uses the same authentication methods as the Webflow API, supporting both site tokens and OAuth access tokens.

For optimal security and management, create a dedicated API token with CMS read-only permissions for each delivery channel. Using a separate token allows you to manage access independently and revoke access quickly without affecting other integrations.

Responses

The responses from the Content Delivery API are the same as for the equivalent endpoints in the Data API except that responses from the Content Delivery API include the cf-cache-status header. If the value of this header is HIT, the response was served from the CDN cache. If the value is MISS or BYPASS, the request was served from the origin.

Caching policy

Caching improves content delivery performance by reducing server load, minimizing latency, and ensuring reliable performance during high traffic.

Here’s how Webflow’s CDN caching works:

Initial requests

The first request to the Content Delivery API for published CMS data goes to the Data API at api.webflow.com. The response is stored in the CDN cache. The API serves subsequent identical requests directly from the cache, providing faster response times.

Cache duration

Cached responses are stored for 120 seconds for enterprise plans and 300 seconds for other plans. After this period, the cache entry is automatically purged and future requests behave like initial requests.

Content updates

Due to the cache duration, when you update or delete published CMS items there may be a delay before changes are reflected in the API responses. During this period, users may still receive the previous version of the content until the cache refreshes.

Rate limits

Calls to the Content Delivery API that return a cached response do not count against your plan’s rate limits. Therefore, there are effectively no rate limits for cached calls to the Content Delivery API.

Calls to Content Delivery API that require data from the Data API origin server count against your plan’s rate limits. When you exceed the rate limit, the API responds with a 429 Too Many Requests status code. To learn more about the specific rate limits for your plan, see the Rate limits.

To minimize rate limit errors when working with requests for cached content:

  • Implement retry logic with exponential backoff for 429 responses
  • Stagger initial, uncached requests to avoid overwhelming the origin server