JJourney AI

Delivery API

The public, unauthenticated API that sites use to read content and submit forms.

Updated 7 October 20264 min read

This page covers the delivery API's response envelope, its endpoints, and example requests.

The delivery API is the public API that sites read content from. It needs no authentication, and every path starts with /api/v1. The panel uses a separate management API that requires a session and is out of scope here.

In the examples below, replace the https://api.example.com placeholder with your CMS address.

Response envelope

Every response uses the same envelope. The payload lives in data.

Response envelope
{
  "data": { },
  "errorCode": 0,
  "errorMessage": "",
  "errorId": null,
  "requestId": "…",
  "hasError": false
}
FieldMeaning
dataThe payload. May be empty on error.
hasErrortrue means the request failed. Check this first.
errorCode0 means success. Other values are domain codes, not HTTP status codes.
errorMessageAn error message you can show to the user.
errorIdThe record ID in error tracking. Share it when asking for support.
requestIdThe request ID.

Each endpoint group has its own rate limit. A rate-limited request gets HTTP 429 with a Retry-After header. Respect the header and retry later.

Endpoints

MethodPathReturns
GET/page/detail/{language}?path=Page, SEO, schemas, entities, and component tree
GET/page/menu/{language}Menu tree
GET/page/sitemap-pages/{language}?path=Page tree for the sitemap
GET/page/get-page-language-variants/{uniqueName}The page's counterparts in other languages (for hreflang and language switchers)
GET/page/search?searchKey=&languageId=&path=On-site search results
GET/page/public-revisionFingerprint of the published content
GET/redirect/all/{language}Redirect list
GET/template/detail/{id}A template and its components
GET/template/listTemplate list
GET/language/listLanguages: code, locale, URL prefix, default
GET/parameter/listPublic parameters only
GET/page-list/component-data/{definitionId}Published entries of a list
GET/form/captcha-configCaptcha provider and site key
POST/form/submit/{componentId}Form submission
POST/form/upload/{componentId}Form file upload
GET/healthHealth check (outside the /api/v1 prefix)

{language} is a language code such as tr or en.

Page detail

Terminal
curl "https://api.example.com/api/v1/page/detail/tr?path=kurumsal/hakkimizda"

For the home page, pass the site's home page slug as path. In the site template this is the HOME_SLUG constant. The response shape is described in Page JSON.

If the page does not exist, the envelope comes back with hasError: true, and the site renders a 404.

Terminal
curl "https://api.example.com/api/v1/page/menu/tr"
curl "https://api.example.com/api/v1/page/sitemap-pages/tr?path="

Both return a tree, not a flat list. Subpages arrive under children. Use the href the API returns for links. Don't build URLs from path by hand.

Language variants and languages

Terminal
curl "https://api.example.com/api/v1/language/list"
curl "https://api.example.com/api/v1/page/get-page-language-variants/{uniqueName}"

Take html lang, og:locale, and the URL prefix from the language record's locale and basePath. Don't derive a locale from the language code.

Terminal
curl "https://api.example.com/api/v1/page/search?searchKey=contact&languageId=en"

searchKey must be 3 to 100 characters long. Otherwise the envelope returns an error.

Publication fingerprint

Terminal
curl "https://api.example.com/api/v1/page/public-revision"

data is a string that represents the published content. When it changes, the published content has changed. A site can watch this value and drop its own cache.

Templates and parameters

Terminal
curl "https://api.example.com/api/v1/template/detail/0"
curl "https://api.example.com/api/v1/parameter/list"

ID 0 returns the default template for the requested language. The parameter list contains public values only, such as organization details, site texts, robots settings, and verification codes.

Forms

Terminal
curl "https://api.example.com/api/v1/form/captcha-config"

curl -X POST "https://api.example.com/api/v1/form/submit/42" \
  -H "Content-Type: application/json" \
  -d '{
    "formData": { "Full name": "Ada Smith", "Email": "[email protected]" },
    "languageId": "en",
    "pagePath": "contact",
    "pageId": 123
  }'

42 is the ID of the form component on the page. The full flow is described in Forms.

Health check

Terminal
curl "https://api.example.com/health"

Related pages

On this page