canonical: https://jentic.com/apis/contentstack.com/contentstack-content-delivery-api

# Contentstack Content Delivery API

Jentic publishes the only available OpenAPI specification for Contentstack Content Delivery API, keeping it validated and agent-ready. The Contentstack Content Delivery API is a read-only CDN-fronted API used to fetch published content into web and mobile properties, exposing content types, entries, global fields, taxonomies, assets, and a stack sync endpoint. Authentication uses a stack api_key and a delivery access_token in headers, with the environment supplied as a query parameter, and the API is available across North America, Europe, Azure North America, and Azure Europe regions.

## For AI agents

Read published Contentstack content from a CDN: fetch content types, entries, global fields, taxonomies, and assets for the chosen environment.

## Scope

Does not handle content authoring, entry creation, or asset upload - use for read-only delivery of published Contentstack content only.

## Capabilities

- Fetch content type definitions including field schemas and references
- Retrieve entries for a content type filtered by query, locale, and reference depth
- Read global field definitions shared across content types
- Pull asset metadata and CDN URLs for images, video, and files
- Run a delta sync against a stack to retrieve only changed content since the last call
- Retrieve taxonomy term entries for taxonomy-driven content categorisation

## Use cases

### Headless CMS-Powered Website

Front-end teams build a Next.js, Nuxt, or SvelteKit site that renders pages from Contentstack entries. The Content Delivery API returns published content from the regional CDN with low latency, and queries can include references and pick locale and environment for staging vs production. Integration is hours rather than days because the read API is small and stable.

Example prompt: GET `/v3/content_types/blog_post/entries`?environment=production&locale=en-us&include[]=author with the stack api_key and access_token to render a blog index page

### Mobile App Content Sync

Mobile apps use the GET `/v3/stacks/sync` endpoint to download all published entries on first launch, persist a sync_token, and on subsequent launches retrieve only what has changed. This minimises bandwidth and battery use and lets the app function offline against the most recent published snapshot. Sync tokens expire if a stack is paused, so apps must handle a full re-init if a 422 is returned.

Example prompt: Call GET `/v3/stacks/sync`?init=true&environment=production with the stack credentials, persist the returned sync_token, and on the next call pass sync_token=<saved> to fetch only changes

### Taxonomy-Driven Discovery Pages

Content sites use Contentstack taxonomies to power category and tag pages without hard-coding lists. GET `/v3/taxonomies/entries` returns the entries linked to a given taxonomy term, so navigation and filter UI can be generated from CMS data. This avoids building parallel tag systems in the front end.

Example prompt: GET `/v3/taxonomies/entries`?taxonomy_uid=topics&term_uid=ai&environment=production to render an AI-topic landing page

### AI Agent Content Lookup via Jentic

An AI agent helping a content editor or chat support tool uses Jentic to fetch the latest published entry for a given uid or query a content type. The agent reads the schema, executes a GET, and returns structured fields without scraping the rendered site. Through Jentic the api_key and access_token live in your Jentic One instance so they never enter the agent's context.

Example prompt: Search Jentic for 'fetch a contentstack entry', execute with content_type_uid='product' and entry_uid='abc123' for environment=production, and return the entry JSON

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/v3/content_types` | List content type definitions in the stack |
| GET | `/v3/content_types/{content_type_uid}` | Read a single content type schema |
| GET | `/v3/content_types/{content_type_uid}/entries` | List published entries for a content type |
| GET | `/v3/content_types/{content_type_uid}/entries/{entry_uid}` | Read a single entry by uid |
| GET | `/v3/global_fields` | List global field definitions |
| GET | `/v3/assets` | List published assets in the environment |
| GET | `/v3/taxonomies/entries` | List entries linked to taxonomy terms |
| GET | `/v3/stacks/sync` | Run an initial or delta content sync |

## Key resources

- **Content Type** — Schema definition for an entry, including fields, references, and taxonomies
- **Entry** — Published content record for a given content type, locale, and environment
- **Global Field** — Reusable field group referenced across multiple content types
- **Asset** — Image, video, or file uploaded to the stack and served from the CDN
- **Taxonomy** — Hierarchical or flat term system used to classify entries
- **Stack Sync** — Delta sync endpoint that returns only entries changed since a sync token

## Why Jentic

- **Setup:** Wiring the Contentstack Content Delivery API by hand means sending the api_key and access_token headers, choosing the right regional host among North America, Europe, and the Azure variants, and passing the environment on every request yourself. Through Jentic you install once, import the Contentstack Content Delivery API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Contentstack puts the content type in the URL path (`/v3/content_types/{content_type_uid}/entries`), so a rule can pin your agent to one content type and its published entries. Since this is a read-only delivery surface, the agent can only fetch published content and has nothing to author or delete.
- **Credential handling:** Your Contentstack api_key and delivery access_token are stored once, encrypted, by your own Jentic One instance and injected into the request headers at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'fetch published entries for a content type' or 'sync a stack', and Jentic returns the matching Contentstack operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Sanity API** — Sanity is a headless CMS with a query language (GROQ) instead of REST-style entry endpoints.
- **Storyblok API** — Storyblok pairs a visual editor with a content delivery API similar in shape to Contentstack's CDA.
- **Prismic API** — Prismic offers a similar headless CMS read API with slice-based content modelling.
- **Contentful Images API** — If a project also stores assets in Contentful, the Images API can transform them while Contentstack delivers entries.

## FAQ

### Why is there no official OpenAPI spec for Contentstack Content Delivery API?

Contentstack publishes a Postman collection and a Swagger viewer but does not host a stable OpenAPI 3 file at a permanent URL. Jentic generates and maintains this spec so that AI agents and developers can call Contentstack Content Delivery API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Contentstack Content Delivery API use?

Each request must include the stack api_key header, the delivery access_token header, and an environment query parameter. Through Jentic the api_key and access_token are stored in your Jentic One instance and supplied at call time, so the agent never holds the raw delivery token.

### Can I read published entries with the Contentstack Content Delivery API?

Yes. GET `/v3/content_types/{content_type_uid}/entries` returns the published entries for a content type and GET `/v3/content_types/{content_type_uid}/entries/{entry_uid}` returns a single entry. Reference depth, locale, and field selection are controlled by query parameters.

### What are the rate limits for the Contentstack Content Delivery API?

Contentstack applies per-stack and per-organisation rate limits to the Content Delivery API; current limits depend on the plan and are documented in the Contentstack rate-limit guide. Through Jentic, retries with exponential backoff are handled at the SDK level so transient 429 responses do not surface to agent code.

### How do I run a content sync with the Contentstack Content Delivery API through Jentic?

Run `jentic.search('sync contentstack content')`, load the operation, and execute with init=true and environment=production. Jentic resolves this to GET `/v3/stacks/sync` and returns the sync_token to persist for the next delta call.

### Does the Contentstack Content Delivery API support multiple regions?

Yes. The same spec is served from cdn.contentstack.io (NA), eu-cdn.contentstack.com (EU), azure-na-api.contentstack.com (Azure NA), and azure-eu-cda.contentstack.com (Azure EU). Pick the regional base URL that matches the stack's hosted region.

### Can I limit what my agent is allowed to do with the Contentstack Content Delivery API?

Yes. Because you self-host Jentic One, your own rules decide which Contentstack operations and credentials the agent may use. Since the content type sits in the URL path (GET `/v3/content_types/{content_type_uid}/entries`), you can pin the agent to a single content type and only its published entries, or restrict it to specific reads such as assets or a stack sync. This is a read-only delivery surface, so the agent can fetch published content but has nothing it can author, update, or delete.
