API ReferenceView as MarkdownOpenAPI

Pages

View as Markdown

Pages (about pages) are the pages built in the editor or by the AI builder: a landing page, an "About us", a contact page, a legal page. A page is a list of containers - full-width sections - each holding columns, and each column holds components: text, headings, buttons, images, galleries, sliders, forms, and embeds of the site's products, services, blog posts and more. Pages also serve as reusable parts: the banner above the header, the content shown on a product page, the landing page behind a popup.

Endpoints that need a token: the site owner creates it in their admin (Developers > API reference). AI assistants: how to ask the user for one.

44 endpoints in 5 parts: About Page, About Page Import, Custom Page, Publish, AI builder.

Page components

A page's containers hold columns, and each column a list of components, each with a type and a size from 1 to 12 on the column's grid. These are the types.

emptyText

Empty space, for spacing.

hrText

A horizontal line across the component's width.

headingText

A heading.

textText

Rich text, stored as HTML in innerHTML.

collapsible_containerText

An accordion: questions or titles that open to show their answer - FAQs, details. Its look is in collapsible_container_settings. Settings in collapsible_container.

tabs_containerText

Tabs: the same items as an accordion, shown one at a time behind tab buttons. Settings in tabs.

text_auto_sliderText

A strip of phrases scrolling across endlessly - a marquee. Settings in text_auto_slider.

buttonButton

A button linking to an address (href) or a page of the site (router_link); its label is innerHTML, its look buttonOptions.

icon-0 … icon-9Icon

An icon with optional heading, sub-heading and text, in ten layouts (centred, left, right).

imgMedia

One image or video, optionally linking somewhere.

galleryMedia

A grid of images that open larger when clicked.

big-galleryMedia

One large image with thumbnails below to switch it.

carouselMedia

Images shown one at a time, with arrows and dots.

carousel-multipleMedia

Images shown several at a time, sliding.

hoverableMedia

An image that changes to another when the pointer is over it. Settings in hoverable_media.

image_draggerMedia

Two images on top of each other with a handle to drag between them - before and after. Settings in image_dragger.

image_auto_sliderMedia

A strip of images scrolling across endlessly. Settings in image_auto_slider.

prodProduct

One of the site's products, with its price and a button to buy. Settings in products.

prod_galleryProduct

A grid or slider of the site's products - the ones listed in products. Settings in products.

servService

One of the site's services, with a button to book it. Settings in services.

serv_galleryService

A grid or slider of the site's services - the ones listed in services. Settings in services.

blogBlog post

One blog post, as a card linking to it. Settings in blogposts.

blog_galleryBlog post

A grid or slider of the site's blog posts - the ones listed in blogposts. Settings in blogposts.

videoVideo

One of the site's videos. Settings in videos.

videos_galleryVideo

A gallery of the site's videos. Settings in videos.

formContact & form

A contact form; what visitors send arrives as a lead. Its fields are in contactForm. Settings in contactForm.

newsletterContact & form

A newsletter sign-up: name, email and a button. Settings in contactForm.

mapOther

A map, from embed code (usually Google Maps). Settings in map.

quizOther

A quiz: questions with answers, an explanation for each and a result by score. Settings in quiz.

swiperOther

A slider whose slides are other pages' sections. Settings in swiper.

facebookOther

An embedded Facebook page or post. Settings in facebook.

customOther

A custom block with its own HTML (innerHTML), CSS (innerCSS) and JavaScript (innerJS).

countdownOther

A countdown to a date, in boxes of days, hours, minutes and seconds; then a text of your choice. Settings in countdown.

smart_searchOther

Search over the site's content, with filters by kind, price and date and an optional AI answer. Settings in smart_search.

serv_multi_bookingService

The booking flow on a page: choose a service, a day, a time and a staff member, then confirm.

price_plansOther

The site's price plans, side by side to compare and subscribe. Settings in price_plans.

scroll_sequenceMedia

An image sequence that plays as the visitor scrolls. Settings in scroll_sequence.

List all pages

Every page's title, url and settings (no content); ?no_cache skips the cache. Answers an array of every record.

Public

Public - no token needed.

Returns

Returns a list of AboutPage objects.

Status codes

200 500

GET/about-pages
curl -X GET 'http://hristovtintdetailng.com/about-pages?ionic=true'
Response
[
  {
    "requiresLogin": false,
    "requiresSubscription": false,
    "price_plan_ids": [
      "example"
    ],
    "title": "Example",
    "url": "example-item",
    "redirectUrl": "example",
    "legal_kind": "example",
    "isPartial": false,
    "showTo": "0",
    "showHeader": true,
    "showFooter": true,
    "ai_context_v2": {},
    "ai_surfaces_v2": {},
    "ai_overview": "example",
    "ai_generation_metadata": {},
    "containers": [
      {
        "isFluid": false,
        "parallaxEnabled": false,
        "parallaxAmount": 49.9,
        "parallaxZoom": 1,
        "continuousEnabled": false,
        "continuousEffect": "none",
        "continuousDuration": 2400,
        "continuousIntensity": 4,
        "backgroundImage": "example",
        "backgroundSize": "example",
        "backgroundPosition": "example",
        "backgroundRepeat": "example",
        "backgroundVideo": "example",
        "backgroundColor": "#3557c4",
        "backgroundParallax": false,
        "minHeight": 1,
        "minHeightMobile": 1,
        "allowOffset": false,
        "offsetX": 0,
        "offsetY": 0,
        "offsetMobileX": 0,
        "offsetMobileY": 0,
        "zIndex": 0,
        "wrap_reverse": false,
        "backgroundGradient": {
          "enabled": false,
          "type": "example",
          "degrees": 0,
          "radialShape": "example",
          "radialPosition": "example",
          "colors": "#3557c4",
          "css": "example"
        },
        "padding_top": {
          "value": "example",
          "unit": "example",
          "mobile_value": "example",
          "mobile_unit": "example"
        },
        "padding_right": {
          "value": "example"
        }
      }
    ],
    "suitability_price_plans": [
      "6543210fedcba98765432101"
    ],
    "isSuitable": false,
    "archived": false,
    "archivedAt": "2026-11-04T12:00:00.000Z",
    "_id": "6543210fedcba98765432100",
    "updatedAt": "2026-11-04T12:00:00.000Z",
    "createdAt": "2026-11-04T12:00:00.000Z"
  }
]

Create a page

Creates a page, with its meta tags; a homepage replaces the home page's blocks. Answers 201 with { _id, url } only, not the whole page. addToIndex: true also shows the new page on the home page, as its last block (for a page that already exists, use POST /index-components/append). A homepage takes the home page's place: its blocks are replaced by this page.

Admin token

Needs a site admin token.

Parameters
titlestring

The page's title, shown in the browser tab and in the admin.

containersobject[]

The page's content: sections, each with columns of components.

createNavlinkstring

The page's create navlink.

addToIndexstring

The page's add to index.

apply_startup_promptstring

The page's apply startup prompt.

Returns

Returns the AboutPage object.

Status codes

201 400 401 500

POST/about-pages
curl -X POST 'http://hristovtintdetailng.com/about-pages?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "title": "...", "containers": "...", "createNavlink": "...", "addToIndex": "...", "apply_startup_prompt": "..." }'
Response
{
  "requiresLogin": false,
  "requiresSubscription": false,
  "price_plan_ids": [
    "example"
  ],
  "title": "Example",
  "url": "example-item",
  "redirectUrl": "example",
  "legal_kind": "example",
  "isPartial": false,
  "showTo": "0",
  "showHeader": true,
  "showFooter": true,
  "ai_context_v2": {},
  "ai_surfaces_v2": {},
  "ai_overview": "example",
  "ai_generation_metadata": {},
  "containers": [
    {
      "isFluid": false,
      "parallaxEnabled": false,
      "parallaxAmount": 49.9,
      "parallaxZoom": 1,
      "continuousEnabled": false,
      "continuousEffect": "none",
      "continuousDuration": 2400,
      "continuousIntensity": 4,
      "backgroundImage": "example",
      "backgroundSize": "example",
      "backgroundPosition": "example",
      "backgroundRepeat": "example",
      "backgroundVideo": "example",
      "backgroundColor": "#3557c4",
      "backgroundParallax": false,
      "minHeight": 1,
      "minHeightMobile": 1,
      "allowOffset": false,
      "offsetX": 0,
      "offsetY": 0,
      "offsetMobileX": 0,
      "offsetMobileY": 0,
      "zIndex": 0,
      "wrap_reverse": false,
      "backgroundGradient": {
        "enabled": false,
        "type": "example",
        "degrees": 0,
        "radialShape": "example",
        "radialPosition": "example",
        "colors": "#3557c4",
        "css": "example"
      },
      "padding_top": {
        "value": "example",
        "unit": "example",
        "mobile_value": "example",
        "mobile_unit": "example"
      },
      "padding_right": {
        "value": "example"
      }
    }
  ],
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "archived": false,
  "archivedAt": "2026-11-04T12:00:00.000Z",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a page

A page by its id: the rendered page, or JSON with ?ionic. 404 when there is no such page; a page with redirectUrl answers 301 to it.

User with accessOptional user

Needs a signed-in user whose plan grants access.

Path parameters
idstringRequired

The ID of the page.

Returns

Returns the AboutPage object.

Status codes

200 301 401 402 404 500

GET/about-pages-by-id/:id
curl -X GET 'http://hristovtintdetailng.com/about-pages-by-id/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "requiresLogin": false,
  "requiresSubscription": false,
  "price_plan_ids": [
    "example"
  ],
  "title": "Example",
  "url": "example-item",
  "redirectUrl": "example",
  "legal_kind": "example",
  "isPartial": false,
  "showTo": "0",
  "showHeader": true,
  "showFooter": true,
  "ai_context_v2": {},
  "ai_surfaces_v2": {},
  "ai_overview": "example",
  "ai_generation_metadata": {},
  "containers": [
    {
      "isFluid": false,
      "parallaxEnabled": false,
      "parallaxAmount": 49.9,
      "parallaxZoom": 1,
      "continuousEnabled": false,
      "continuousEffect": "none",
      "continuousDuration": 2400,
      "continuousIntensity": 4,
      "backgroundImage": "example",
      "backgroundSize": "example",
      "backgroundPosition": "example",
      "backgroundRepeat": "example",
      "backgroundVideo": "example",
      "backgroundColor": "#3557c4",
      "backgroundParallax": false,
      "minHeight": 1,
      "minHeightMobile": 1,
      "allowOffset": false,
      "offsetX": 0,
      "offsetY": 0,
      "offsetMobileX": 0,
      "offsetMobileY": 0,
      "zIndex": 0,
      "wrap_reverse": false,
      "backgroundGradient": {
        "enabled": false,
        "type": "example",
        "degrees": 0,
        "radialShape": "example",
        "radialPosition": "example",
        "colors": "#3557c4",
        "css": "example"
      },
      "padding_top": {
        "value": "example",
        "unit": "example",
        "mobile_value": "example",
        "mobile_unit": "example"
      },
      "padding_right": {
        "value": "example"
      }
    }
  ],
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "archived": false,
  "archivedAt": "2026-11-04T12:00:00.000Z",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a page

Updates a page. Fields outside the allowed list are ignored. Writes the live page directly; the editor saves through POST /about-pages/:id/draft instead. Answers the page, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Parameters
containersobject[]

The page's content: sections, each with columns of components.

Returns

Returns the AboutPage object.

Status codes

200 400 401 404 500

PATCH/about-pages/:id
curl -X PATCH 'http://hristovtintdetailng.com/about-pages/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "containers": "..." }'
Response
{
  "requiresLogin": false,
  "requiresSubscription": false,
  "price_plan_ids": [
    "example"
  ],
  "title": "Example",
  "url": "example-item",
  "redirectUrl": "example",
  "legal_kind": "example",
  "isPartial": false,
  "showTo": "0",
  "showHeader": true,
  "showFooter": true,
  "ai_context_v2": {},
  "ai_surfaces_v2": {},
  "ai_overview": "example",
  "ai_generation_metadata": {},
  "containers": [
    {
      "isFluid": false,
      "parallaxEnabled": false,
      "parallaxAmount": 49.9,
      "parallaxZoom": 1,
      "continuousEnabled": false,
      "continuousEffect": "none",
      "continuousDuration": 2400,
      "continuousIntensity": 4,
      "backgroundImage": "example",
      "backgroundSize": "example",
      "backgroundPosition": "example",
      "backgroundRepeat": "example",
      "backgroundVideo": "example",
      "backgroundColor": "#3557c4",
      "backgroundParallax": false,
      "minHeight": 1,
      "minHeightMobile": 1,
      "allowOffset": false,
      "offsetX": 0,
      "offsetY": 0,
      "offsetMobileX": 0,
      "offsetMobileY": 0,
      "zIndex": 0,
      "wrap_reverse": false,
      "backgroundGradient": {
        "enabled": false,
        "type": "example",
        "degrees": 0,
        "radialShape": "example",
        "radialPosition": "example",
        "colors": "#3557c4",
        "css": "example"
      },
      "padding_top": {
        "value": "example",
        "unit": "example",
        "mobile_value": "example",
        "mobile_unit": "example"
      },
      "padding_right": {
        "value": "example"
      }
    }
  ],
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "archived": false,
  "archivedAt": "2026-11-04T12:00:00.000Z",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a page

Deletes a page. Clears every cached copy of the site's pages, since menus and links may have pointed to it. Answers the deleted page.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/about-pages/:id
curl -X DELETE 'http://hristovtintdetailng.com/about-pages/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Create a page

The editor's save: content goes to the draft, access settings to the live page. Answers the page's versioning state (draft, live and rollout).

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Status codes

200 401 500

POST/about-pages/:id/draft
curl -X POST 'http://hristovtintdetailng.com/about-pages/{id}/draft?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a page

Throw the draft away. Answers the page's versioning state.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/about-pages/:id/draft
curl -X DELETE 'http://hristovtintdetailng.com/about-pages/{id}/draft?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Create a page

A short-lived link query that shows one version on the public page. Answers { token, query }: add query to the page's address to see that version. 404 when there is no such version.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Parameters
version_idstring

The page's version id.

Status codes

200 401 404 500

POST/about-pages/:id/preview-token
curl -X POST 'http://hristovtintdetailng.com/about-pages/{id}/preview-token?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "version_id": "..." }'

Publish the page

Make the draft the live page. Answers { version_id, versioning }. The old live version is kept as archived.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Status codes

200 401 500

POST/about-pages/:id/publish
curl -X POST 'http://hristovtintdetailng.com/about-pages/{id}/publish?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Revert the page

Publish a copy of an earlier version. The copy becomes a new version; the history is not rewritten. Answers { version_id, versioning }.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Parameters
version_idstring

The page's version id.

Status codes

200 401 500

POST/about-pages/:id/revert
curl -X POST 'http://hristovtintdetailng.com/about-pages/{id}/revert?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "version_id": "..." }'

Create a page

Show a version (the draft or an older one) to a share of the visitors, or. change the share. Ends a rollout of any other version of the page.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Parameters
version_idstring

The page's version id.

percentstring

The page's percent.

Status codes

200 401 500

POST/about-pages/:id/rollout
curl -X POST 'http://hristovtintdetailng.com/about-pages/{id}/rollout?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "version_id": "...", "percent": "..." }'

Delete a page

Stop the rollout: everyone sees the live page again; the version stays. Answers the page's versioning state.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/about-pages/:id/rollout
curl -X DELETE 'http://hristovtintdetailng.com/about-pages/{id}/rollout?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a page

The page's versions, newest first, without their content. For the version history panel.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

Status codes

200 401 500

GET/about-pages/:id/versions
curl -X GET 'http://hristovtintdetailng.com/about-pages/{id}/versions?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update a page

Name a version; named versions are never pruned. Answers { _id, label }.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the page.

versionIdstringRequired

The page's version id.

Parameters
labelstring

The page's label.

Status codes

200 401 500

PATCH/about-pages/:id/versions/:versionId
curl -X PATCH 'http://hristovtintdetailng.com/about-pages/{id}/versions/{versionId}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "label": "..." }'

Retrieve a page

A page by its url: the rendered page, or JSON with ?ionic; serves a rollout version to its share of visitors and a version preview to the admin. Sends a page that asks for sign-in or a plan to visitors who lack it. Cached for an hour, apart from version previews.

Page accessOptional user

Pages limited to some users check the token when one is sent.

Path parameters
urlstringRequired

The page's URL slug, as in its address on the site.

Returns

Returns the AboutPage object.

Status codes

200 301 401 402 404 500

GET/about-pages/:url
curl -X GET 'http://hristovtintdetailng.com/about-pages/{url}?ionic=true'
Response
{
  "requiresLogin": false,
  "requiresSubscription": false,
  "price_plan_ids": [
    "example"
  ],
  "title": "Example",
  "url": "example-item",
  "redirectUrl": "example",
  "legal_kind": "example",
  "isPartial": false,
  "showTo": "0",
  "showHeader": true,
  "showFooter": true,
  "ai_context_v2": {},
  "ai_surfaces_v2": {},
  "ai_overview": "example",
  "ai_generation_metadata": {},
  "containers": [
    {
      "isFluid": false,
      "parallaxEnabled": false,
      "parallaxAmount": 49.9,
      "parallaxZoom": 1,
      "continuousEnabled": false,
      "continuousEffect": "none",
      "continuousDuration": 2400,
      "continuousIntensity": 4,
      "backgroundImage": "example",
      "backgroundSize": "example",
      "backgroundPosition": "example",
      "backgroundRepeat": "example",
      "backgroundVideo": "example",
      "backgroundColor": "#3557c4",
      "backgroundParallax": false,
      "minHeight": 1,
      "minHeightMobile": 1,
      "allowOffset": false,
      "offsetX": 0,
      "offsetY": 0,
      "offsetMobileX": 0,
      "offsetMobileY": 0,
      "zIndex": 0,
      "wrap_reverse": false,
      "backgroundGradient": {
        "enabled": false,
        "type": "example",
        "degrees": 0,
        "radialShape": "example",
        "radialPosition": "example",
        "colors": "#3557c4",
        "css": "example"
      },
      "padding_top": {
        "value": "example",
        "unit": "example",
        "mobile_value": "example",
        "mobile_unit": "example"
      },
      "padding_right": {
        "value": "example"
      }
    }
  ],
  "suitability_price_plans": [
    "6543210fedcba98765432101"
  ],
  "isSuitable": false,
  "archived": false,
  "archivedAt": "2026-11-04T12:00:00.000Z",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

List all section imports

Imported page files. Answers an array of every record.

Public

Public - no token needed.

Status codes

200 500

GET/about-section-imports
curl -X GET 'http://hristovtintdetailng.com/about-section-imports?ionic=true'

Create a section import

Uploads an imported page file with up to 5 pictures (medias). Multipart upload. Answers 201 with no body.

Admin token

Needs a site admin token.

Parameters
bodystring

The section import's body.

Status codes

201 400 401 500

POST/about-section-imports
curl -X POST 'http://hristovtintdetailng.com/about-section-imports?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "body": "..." }'

Retrieve a section import

One imported page file. 404 when there is no such record.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the section import.

Status codes

200 404 500

GET/about-section-imports/:id
curl -X GET 'http://hristovtintdetailng.com/about-section-imports/{id}?ionic=true'

List all custom pages

The custom code pages. Answers an array of every record.

Public

Public - no token needed.

Returns

Returns a list of CustomPage objects.

Status codes

200 500

GET/custom_pages
curl -X GET 'http://hristovtintdetailng.com/custom_pages?ionic=true'
Response
[
  {
    "title": "Example",
    "url": "example-item",
    "html_content": "Text shown on the site.",
    "css_content": "Text shown on the site.",
    "js_content": "Text shown on the site.",
    "_id": "6543210fedcba98765432100"
  }
]

Retrieve a custom page

One custom code page. 404 when there is no such record.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the custom page.

Returns

Returns the CustomPage object.

Status codes

200 404 500

GET/custom_pages/:id
curl -X GET 'http://hristovtintdetailng.com/custom_pages/{id}?ionic=true'
Response
{
  "title": "Example",
  "url": "example-item",
  "html_content": "Text shown on the site.",
  "css_content": "Text shown on the site.",
  "js_content": "Text shown on the site.",
  "_id": "6543210fedcba98765432100"
}

Update a custom page

Updates a custom code page. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the custom page.

Returns

Returns the CustomPage object.

Status codes

200 400 401 404 500

PATCH/custom_pages/:id
curl -X PATCH 'http://hristovtintdetailng.com/custom_pages/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "title": "Example",
  "url": "example-item",
  "html_content": "Text shown on the site.",
  "css_content": "Text shown on the site.",
  "js_content": "Text shown on the site.",
  "_id": "6543210fedcba98765432100"
}

Delete a custom page

Deletes a custom code page. Answers the deleted record, or 404. Records that point to it are not changed.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the custom page.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/custom_pages/:id
curl -X DELETE 'http://hristovtintdetailng.com/custom_pages/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the publish

Get publish settings. Reads no token: the app reads it at start.

Public

Public - no token needed.

Returns

Returns the Publish object.

Status codes

200 500

GET/publish
curl -X GET 'http://hristovtintdetailng.com/publish?ionic=true'
Response
{
  "web": false,
  "ios": false,
  "android": false,
  "pwaSwitch": "example",
  "android_app_id": "example",
  "ios_app_id": "example",
  "_id": "6543210fedcba98765432100"
}

Create a publish

Set new publish settings. A site has one; update it with PATCH instead. Answers 201.

Admin token

Needs a site admin token.

Returns

Returns the Publish object.

Status codes

201 400 401 500

POST/publish
curl -X POST 'http://hristovtintdetailng.com/publish?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "web": false,
  "ios": false,
  "android": false,
  "pwaSwitch": "example",
  "android_app_id": "example",
  "ios_app_id": "example",
  "_id": "6543210fedcba98765432100"
}

Retrieve a publish

The publishing settings (web, iOS, Android, install prompt). 404 when there is no such record.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the publish.

Returns

Returns the Publish object.

Status codes

200 404 500

GET/publish/:id
curl -X GET 'http://hristovtintdetailng.com/publish/{id}?ionic=true'
Response
{
  "web": false,
  "ios": false,
  "android": false,
  "pwaSwitch": "example",
  "android_app_id": "example",
  "ios_app_id": "example",
  "_id": "6543210fedcba98765432100"
}

Update a publish

Updates a publishing settings record. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the publish.

Returns

Returns the Publish object.

Status codes

200 400 401 404 500

PATCH/publish/:id
curl -X PATCH 'http://hristovtintdetailng.com/publish/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "web": false,
  "ios": false,
  "android": false,
  "pwaSwitch": "example",
  "android_app_id": "example",
  "ios_app_id": "example",
  "_id": "6543210fedcba98765432100"
}

Add an add section

AI: adds a section to a page where the owner asked, from the section catalogue or a prompt. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the add section, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_datastring

The current add section, as JSON - the AI changes it and returns the result.

current_page_urlstring

The add section's current page url.

section_blueprintstring

The add section's section blueprint.

section_style_blueprintstring

The add section's section style blueprint.

explicit_targetstring

The add section's explicit target.

parsed_intentstring

The add section's parsed intent.

Status codes

200 401 500

POST/add-section
curl -X POST 'http://hristovtintdetailng.com/add-section?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Create a commit page

AI: keeps a previewed page change, charges its credits and marks the preview applied. Charges the preview's pending credit cost and clears it; other pending previews of the same redesign are marked superseded. 404 when the preview message is gone.

Admin token

Needs a site admin token.

Parameters
chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

messageIdstring

The commit page's message id.

Status codes

200 401 404 500

POST/commit-about-page-preview
curl -X POST 'http://hristovtintdetailng.com/commit-about-page-preview?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "chatId": "...", "messageId": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Confirm an AI action

AI: the owner accepted or declined a proposed action in the chat (a plan, a replacement); runs or drops it. Send messageId and confirmed; skip_steps lists the plan steps the owner unticked. confirmed false answers { cancelled: true } and drops the pending plan. Otherwise 400 when every step is unticked, 403 "Insufficient credits", 409 when the plan is gone. Pressing twice runs it once.

Admin token

Needs a site admin token.

Parameters
messageIdstring

The AI action's message id.

confirmedstring

The AI action's confirmed.

skip_stepsstring

The AI action's skip steps.

choicestring

The AI action's choice.

item_datastring

The current AI action, as JSON - the AI changes it and returns the result.

Status codes

200 400 401 403 409 500

POST/confirm-ai-action
curl -X POST 'http://hristovtintdetailng.com/confirm-ai-action?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "messageId": "...", "confirmed": "...", "skip_steps": "...", "choice": "...", "item_data": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Confirm a page plan

AI: the owner accepted a proposed page layout; starts building it, once, if the account has credits. Send messageId (the proposal's chat message). 403 "Insufficient credits". Pressing twice starts it once: the second call answers { started: true, duplicate: true }.

Admin token

Needs a site admin token.

Parameters
messageIdstring

The page plan's message id.

Status codes

200 400 401 403 500

POST/confirm-page-plan
curl -X POST 'http://hristovtintdetailng.com/confirm-page-plan?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "messageId": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Create a page with AI

AI: builds a new page from a planned layout as a recoverable background job. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the page, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

socketIdstring

The page's socket id.

Status codes

200 401 500

POST/create-new-page
curl -X POST 'http://hristovtintdetailng.com/create-new-page?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "socketId": "..." }'

Generate a page with AI

AI: builds a new page from the owner's prompt as a background job; answers the job to poll. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the page, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

socketIdstring

The page's socket id.

Status codes

200 401 500

POST/generate-page
curl -X POST 'http://hristovtintdetailng.com/generate-page?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "socketId": "..." }'

Modify a footer with AI

AI: routes a footer request to update-footer. Does no AI work itself: answers { action: 'REDIRECT', target_url, response } and the chat client calls target_url next with response as the prompt.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the footer, in plain words - any language.

item_datastring

The current footer, as JSON - the AI changes it and returns the result.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

Status codes

200 401 500

POST/modify-footer
curl -X POST 'http://hristovtintdetailng.com/modify-footer?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "item_data": "...", "chatId": "..." }'

Modify a header with AI

AI: routes a header request to update-header. Does no AI work itself: answers { action: 'REDIRECT', target_url, response } and the chat client calls target_url next with response as the prompt.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the header, in plain words - any language.

item_datastring

The current header, as JSON - the AI changes it and returns the result.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

Status codes

200 401 500

POST/modify-header
curl -X POST 'http://hristovtintdetailng.com/modify-header?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "item_data": "...", "chatId": "..." }'

Modify a page with AI

AI: routes a request to change a page to update-page, carrying the page it is about. Does no AI work itself: answers { action: 'REDIRECT', target_url, response } and the chat client calls target_url next with response as the prompt.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the page, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

item_idstring

The ID of the page to change.

item_idsstring

The page's item ids.

Status codes

200 401

POST/modify-page
curl -X POST 'http://hristovtintdetailng.com/modify-page?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "item_id": "...", "item_ids": "..." }'

Modify a page permission with AI

Use it to require login to access content sections, or set up a paywall when social mode is off. Makes products, services, blogposts, videos, programs, or custom pages require login or subscription.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the page permission, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_idstring

The ID of the page permission to change.

Status codes

200 401 500

POST/modify-page-permissions
curl -X POST 'http://hristovtintdetailng.com/modify-page-permissions?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Modify a theme with AI

AI: routes a theme request to update-theme with the current theme values. Does no AI work itself: answers { action: 'REDIRECT', target_url, response } and the chat client calls target_url next with response as the prompt.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the theme, in plain words - any language.

item_datastring

The current theme, as JSON - the AI changes it and returns the result.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

Status codes

200 401 500

POST/modify-theme
curl -X POST 'http://hristovtintdetailng.com/modify-theme?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "item_data": "...", "chatId": "..." }'

Create a regenerate component

AI: rewrites one component of a page, or its picture. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the regenerate component, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_datastring

The current regenerate component, as JSON - the AI changes it and returns the result.

current_page_urlstring

The regenerate component's current page url.

explicit_targetstring

The regenerate component's explicit target.

save_user_messagestring

The regenerate component's save user message.

preview_onlystring

The regenerate component's preview only.

Status codes

200 401 500

POST/regenerate-component
curl -X POST 'http://hristovtintdetailng.com/regenerate-component?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'

Create a regenerate section

AI: rewrites one section of a page. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends. The AI work is charged to the account's credits.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the regenerate section, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_datastring

The current regenerate section, as JSON - the AI changes it and returns the result.

current_page_urlstring

The regenerate section's current page url.

explicit_targetstring

The regenerate section's explicit target.

save_user_messagestring

The regenerate section's save user message.

section_blueprintstring

The regenerate section's section blueprint.

section_style_blueprintstring

The regenerate section's section style blueprint.

preview_onlystring

The regenerate section's preview only.

regeneration_modestring

The regenerate section's regeneration mode.

replacement_strategystring

The regenerate section's replacement strategy.

source_small_targetstring

The regenerate section's source small target.

Status codes

200 401 500

POST/regenerate-section
curl -X POST 'http://hristovtintdetailng.com/regenerate-section?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Create a reopen page

AI: reopens an applied page preview so it can be applied again. 404 when that version is no longer in the chat; 409 when it is already applied.

Admin token

Needs a site admin token.

Parameters
chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

messageIdstring

The reopen page's message id.

Status codes

200 401 404 409 500

POST/reopen-about-page-preview
curl -X POST 'http://hristovtintdetailng.com/reopen-about-page-preview?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "chatId": "...", "messageId": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Update a footer with AI

AI: changes the site's footer as the owner asked, as a background job. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends. The AI work is charged to the account's credits.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the footer, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

Status codes

200 401 500

POST/update-footer
curl -X POST 'http://hristovtintdetailng.com/update-footer?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "..." }'

Update a header with AI

AI: changes the site's header as the owner asked, as a background job. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends. The AI work is charged to the account's credits.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the header, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

Status codes

200 401 500

POST/update-header
curl -X POST 'http://hristovtintdetailng.com/update-header?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "..." }'

Update a page with AI

AI: changes a page as the owner asked (copy, layout or a redesign) and answers the preview. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends. The AI work is charged to the account's credits.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the page, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_datastring

The current page, as JSON - the AI changes it and returns the result.

current_page_urlstring

The page's current page url.

explicit_targetstring

The page's explicit target.

item_idstring

The ID of the page to change.

pending_selection_intentstring

The page's pending selection intent.

save_user_messagestring

The page's save user message.

preview_onlystring

The page's preview only.

regeneration_modestring

The page's regeneration mode.

force_targeted_modifierstring

The page's force targeted modifier.

redesign_anotherstring

The page's redesign another.

Status codes

200 401 500

POST/update-page
curl -X POST 'http://hristovtintdetailng.com/update-page?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Update a theme with AI

AI: changes the site's or app's theme as the owner asked, as a background job. Answers { action: 'JOB', async_job } at once; the admin polls GET /async-jobs/:id, and the result arrives in the chat as a message when the job ends. The AI work is charged to the account's credits.

Admin token

Needs a site admin token.

Parameters
promptstring

What the AI should do with the theme, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

Status codes

200 401 500

POST/update-theme
curl -X POST 'http://hristovtintdetailng.com/update-theme?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "..." }'
↑↓ Navigate↵ GoEsc Close