Skip to content
Jetrepo
Esc
navigateopen⌘Jpreview
On this page

REST

Read resources, envelopes, parameters, and differences from GraphQL.

REST exposes generated read-only resources. Relations, Assets, and Taxonomy assignments remain IDs; Components stay inline.

Access

Use delivery.readPublished or delivery.readPreview with Backend scope only. Preview Bearers apply live human authorization.

Resources

Method and path Result
GET /rest/{typeKey} List a Content or Asset resource
GET /rest/{typeKey}/{id} Read one resource
GET /rest/taxonomy/{vocabularyKey} List Terms
GET /rest/taxonomy/{vocabularyKey}/{id} Read one Term
GET /openapi.json Generated OpenAPI 3.1
GET /docs REST API browser

A record uses camel-case lifecycle metadata:

{
  "_id": "018f-example",
  "status": "Published",
  "createdAt": "2026-07-01T09:00:00.000Z",
  "updatedAt": "2026-07-02T10:30:00.000Z",
  "publishedAt": "2026-07-02T10:30:00.000Z",
  "title": "Red chair",
  "category": "018f-term"
}

A list wraps records in snake-case connection metadata:

{
  "items": [{ "_id": "018f-example", "title": "Red chair" }],
  "total_count": 1,
  "page_info": {
    "has_next_page": false,
    "has_previous_page": false,
    "start_cursor": "CURSOR",
    "end_cursor": "CURSOR"
  }
}

Query lists

Content and Asset lists accept generated deep filter, comma-separated sort, nearest, search, and first/after or last/before. URL-encode values in production clients.

curl 'https://delivery.example.com/rest/product?filter[price][gt]=50&sort=price_desc,title_asc&first=25' \
  -H 'x-api-key: YOUR_DELIVERY_KEY'

Continue with after=END_CURSOR while leaving locale, filters, search, and sort unchanged. Requested page sizes above 100 are capped at 100, and Content accepts at most three sort plans.

Generated field filters, field or relation sorts, and nearest apply to Published delivery. Draft and Release Preview supports search, cursors, and ID or timestamp sorts only; field filters and nearest are unavailable.

Both list and single routes accept locale and render=html. HTML rendering applies recursively to Components and eligible Term custom fields.

Query Terms

Term lists accept search, pagination, status, eligible custom-field filters, zero or one sort, and parent:

  • omit parent to list all Terms;
  • set parent=TERM_ID for direct children;
  • set parent= for root Terms.

Errors

REST errors are plain JSON, not GraphQL errors:

{ "error": "Unknown type: missing" }

Unknown types, Vocabularies, and IDs return 404. Invalid filters, sorts, or cursors return 400. A malformed REST page size falls back to the default. Preview responses use Cache-Control: private, no-store.

REST has no populate or expand option.

Was this page helpful?