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.
46 endpoints in 5 parts: About Page, About Page Import, Custom Page, Publish, AI builder.
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.
Empty space, for spacing.
A horizontal line across the component's width.
A heading.
Rich text, stored as HTML in innerHTML.
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: the same items as an accordion, shown one at a time behind tab buttons. Settings in tabs.
A strip of phrases scrolling across endlessly - a marquee. Settings in text_auto_slider.
A button linking to an address (href) or a page of the site (router_link); its label is innerHTML, its look buttonOptions.
An icon with optional heading, sub-heading and text, in ten layouts (centred, left, right).
One image or video, optionally linking somewhere.
A grid of images that open larger when clicked.
One large image with thumbnails below to switch it.
Images shown one at a time, with arrows and dots.
Images shown several at a time, sliding.
An image that changes to another when the pointer is over it. Settings in hoverable_media.
Two images on top of each other with a handle to drag between them - before and after. Settings in image_dragger.
A strip of images scrolling across endlessly. Settings in image_auto_slider.
One of the site's products, with its price and a button to buy. Settings in products.
A grid or slider of the site's products - the ones listed in products. Settings in products.
One of the site's services, with a button to book it. Settings in services.
A grid or slider of the site's services - the ones listed in services. Settings in services.
One blog post, as a card linking to it. Settings in blogposts.
A grid or slider of the site's blog posts - the ones listed in blogposts. Settings in blogposts.
One of the site's videos. Settings in videos.
A gallery of the site's videos. Settings in videos.
A contact form; what visitors send arrives as a lead. Its fields are in contactForm. Settings in contactForm.
A newsletter sign-up: name, email and a button. Settings in contactForm.
A map, from embed code (usually Google Maps). Settings in map.
A quiz: questions with answers, an explanation for each and a result by score. Settings in quiz.
A slider whose slides are other pages' sections. Settings in swiper.
An embedded Facebook page or post. Settings in facebook.
A custom block with its own HTML (innerHTML), CSS (innerCSS) and JavaScript (innerJS).
A countdown to a date, in boxes of days, hours, minutes and seconds; then a text of your choice. Settings in countdown.
Search over the site's content, with filters by kind, price and date and an optional AI answer. Settings in smart_search.
The booking flow on a page: choose a service, a day, a time and a staff member, then confirm.
The site's price plans, side by side to compare and subscribe. Settings in price_plans.
An image sequence that plays as the visitor scrolls. Settings in scroll_sequence.
Returns the site's pages, newest first unless a sort is given.
Public - no token needed.
Returns a list of AboutPage objects.
curl -X GET 'http://allsport.max-media.io/about-pages?ionic=true'
[
{
"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,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}
]Returns one page, found by its ID.
Needs a signed-in user whose plan grants access.
The ID of the page.
Returns the AboutPage object.
curl -X GET 'http://allsport.max-media.io/about-pages-by-id/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Update AboutPage by id.
Needs a site admin token.
The ID of the page.
The page's content: sections, each with columns of components.
Returns the AboutPage object.
curl -X PATCH 'http://allsport.max-media.io/about-pages/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "containers": "..." }'{
"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,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Delete AboutPage record by id.
Needs a site admin token.
The ID of the page.
Returns an empty answer on success.
curl -X DELETE 'http://allsport.max-media.io/about-pages/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'The editor's save: content goes to the draft, access settings to the live page.
Needs a site admin token.
The ID of the page.
curl -X POST 'http://allsport.max-media.io/about-pages/{id}/draft?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Throw the draft away.
Needs a site admin token.
The ID of the page.
Returns an empty answer on success.
curl -X DELETE 'http://allsport.max-media.io/about-pages/{id}/draft?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'A short-lived link query that shows one version on the public page.
Needs a site admin token.
The ID of the page.
The page's version id.
curl -X POST 'http://allsport.max-media.io/about-pages/{id}/preview-token?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "version_id": "..." }'Make the draft the live page.
Needs a site admin token.
The ID of the page.
curl -X POST 'http://allsport.max-media.io/about-pages/{id}/publish?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Publish a copy of an earlier version.
Needs a site admin token.
The ID of the page.
The page's version id.
curl -X POST 'http://allsport.max-media.io/about-pages/{id}/revert?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "version_id": "..." }'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.
Needs a site admin token.
The ID of the page.
The page's version id.
The page's percent.
curl -X POST 'http://allsport.max-media.io/about-pages/{id}/rollout?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "version_id": "...", "percent": "..." }'Stop the rollout: everyone sees the live page again; the version stays.
Needs a site admin token.
The ID of the page.
Returns an empty answer on success.
curl -X DELETE 'http://allsport.max-media.io/about-pages/{id}/rollout?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'The page's versions, newest first, without their content.
Needs a site admin token.
The ID of the page.
curl -X GET 'http://allsport.max-media.io/about-pages/{id}/versions?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Name a version; named versions are never pruned.
Needs a site admin token.
The ID of the page.
The page's version id.
The page's label.
curl -X PATCH 'http://allsport.max-media.io/about-pages/{id}/versions/{versionId}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "label": "..." }'Returns one page, found by its URL slug.
Pages limited to some users check the token when one is sent.
The page's URL slug, as in its address on the site.
Returns the AboutPage object.
curl -X GET 'http://allsport.max-media.io/about-pages/{url}?ionic=true'{
"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,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Returns the site's section imports, newest first unless a sort is given.
Public - no token needed.
curl -X GET 'http://allsport.max-media.io/about-section-imports?ionic=true'
Creates a section import from the fields sent.
Needs a site admin token.
The section import's body.
curl -X POST 'http://allsport.max-media.io/about-section-imports?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "body": "..." }'Returns one section import, found by its ID.
Public - no token needed.
The ID of the section import.
curl -X GET 'http://allsport.max-media.io/about-section-imports/{id}?ionic=true'Returns the site's custom pages, newest first unless a sort is given.
Public - no token needed.
Returns a list of CustomPage objects.
curl -X GET 'http://allsport.max-media.io/custom_pages?ionic=true'
[
{
"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"
}
]Returns one custom page, found by its ID.
Public - no token needed.
The ID of the custom page.
Returns the CustomPage object.
curl -X GET 'http://allsport.max-media.io/custom_pages/{id}?ionic=true'{
"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 CustomPage by id.
Needs a site admin token.
The ID of the custom page.
Returns the CustomPage object.
curl -X PATCH 'http://allsport.max-media.io/custom_pages/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"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 CustomPage record by id.
Needs a site admin token.
The ID of the custom page.
Returns an empty answer on success.
curl -X DELETE 'http://allsport.max-media.io/custom_pages/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Get publish settings.
Public - no token needed.
Returns the Publish object.
curl -X GET 'http://allsport.max-media.io/publish?ionic=true'
{
"web": false,
"ios": false,
"android": false,
"pwaSwitch": "example",
"android_app_id": "example",
"ios_app_id": "example",
"_id": "6543210fedcba98765432100"
}Set new publish settings.
Needs a site admin token.
Returns the Publish object.
curl -X POST 'http://allsport.max-media.io/publish?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"web": false,
"ios": false,
"android": false,
"pwaSwitch": "example",
"android_app_id": "example",
"ios_app_id": "example",
"_id": "6543210fedcba98765432100"
}Returns one publish, found by its ID.
Public - no token needed.
The ID of the publish.
Returns the Publish object.
curl -X GET 'http://allsport.max-media.io/publish/{id}?ionic=true'{
"web": false,
"ios": false,
"android": false,
"pwaSwitch": "example",
"android_app_id": "example",
"ios_app_id": "example",
"_id": "6543210fedcba98765432100"
}Update publish settings by id.
Needs a site admin token.
The ID of the publish.
Returns the Publish object.
curl -X PATCH 'http://allsport.max-media.io/publish/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"web": false,
"ios": false,
"android": false,
"pwaSwitch": "example",
"android_app_id": "example",
"ios_app_id": "example",
"_id": "6543210fedcba98765432100"
}Use it to add, insert, append, or place a new section on an existing page.
Needs the token of a signed-in user.
What the AI should do with the add section, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The current add section, as JSON - the AI changes it and returns the result.
The add section's current page url.
The add section's section blueprint.
The add section's section style blueprint.
The add section's explicit target.
The add section's parsed intent.
curl -X POST 'http://allsport.max-media.io/add-section?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'{
"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"
}
}Creates a commit page from the fields sent.
Needs the token of a signed-in user.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
The commit page's message id.
curl -X POST 'http://allsport.max-media.io/commit-about-page-preview?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "chatId": "...", "messageId": "..." }'{
"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.
Needs the token of a signed-in user.
The AI action's message id.
The AI action's confirmed.
The AI action's skip steps.
The AI action's choice.
The current AI action, as JSON - the AI changes it and returns the result.
curl -X POST 'http://allsport.max-media.io/confirm-ai-action?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "messageId": "...", "confirmed": "...", "skip_steps": "...", "choice": "...", "item_data": "..." }'{
"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.
Needs the token of a signed-in user.
The page plan's message id.
curl -X POST 'http://allsport.max-media.io/confirm-page-plan?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "messageId": "..." }'{
"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 from a prompt, written by the AI builder.
Needs the token of a signed-in user.
What the AI should do with the page, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The page's socket id.
curl -X POST 'http://allsport.max-media.io/create-new-page?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "socketId": "..." }'Use it for a new standalone page, from a prompt or modelled on one the site has.
Needs the token of a signed-in user.
What the AI should do with the page, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The page's socket id.
curl -X POST 'http://allsport.max-media.io/generate-page?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "socketId": "..." }'Use it to change link font size and weight, links positioning and justification, action button text color and background, banner style of the header of the site.
Needs the token of a signed-in user.
What the AI should do with the header, in plain words - any language.
The current header, as JSON - the AI changes it and returns the result.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://allsport.max-media.io/modify-header?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "item_data": "...", "chatId": "..." }'Use it to edit or update existing page content or structure, including page colors.
Needs the token of a signed-in user.
What the AI should do with the page, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
The ID of the page to change.
The page's item ids.
curl -X POST 'http://allsport.max-media.io/modify-page?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "item_id": "...", "item_ids": "..." }'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.
Needs the token of a signed-in user.
What the AI should do with the page permission, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The ID of the page permission to change.
curl -X POST 'http://allsport.max-media.io/modify-page-permissions?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'{
"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"
}
}Use it to change the look, colors, fonts, or layout theme of the site, including the header background and link colors.
Needs the token of a signed-in user.
What the AI should do with the theme, in plain words - any language.
The current theme, as JSON - the AI changes it and returns the result.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
curl -X POST 'http://allsport.max-media.io/modify-theme?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "item_data": "...", "chatId": "..." }'Used only for the very first user prompt (or first session) when you describe a business/intent. The first message, normalized into something the planner can build from. WHAT THIS IS FOR. 67% of real first prompts name a business and stop — `Автокъща`, `майстор плочкаджия`, `детски учител`, with no verb and no object (see USER_LOGS_ANALYSIS.md §2). This rewrites that into one implementation-ready sentence and, usefully, encodes which platform area it needs in plain language, so `apply_domain_recipe` downstream picks store vs bookings vs informational. IT USED TO ASK FOR A PAGE. The rewrite began "Създай страница за …" and the redirect went to `create-new-page`, which layout-plans ONE page and parks at "Awaiting confirmation". So the single most common thing anyone types produced a page and a template site: no services, no products, no collections, no legal pages, no locale pass — all of which the recipes build. Routing was never the problem; the router sent 16 of 20 real first prompts to a whole-site destination, and 12–13 of those were THIS route, which then threw the site away. Now it asks for a site and redirects to `create-plan`. That is safe because `/create-plan` orchestrates with `planOnly: true` (planners.js) — it gets propose_plan, apply_domain_recipe and ask_clarification but no routes, so it cannot route back here or sideways into a single item. The redirect carries the rewrite in `response`, which is what the client turns into the next request's `prompt` — this is a SECOND-hop redirect, handled at ai-components-chat.component.ts:2437 (`handleRes(res2.target_url, res2.response, …)`). First-hop redirects out of the orchestrator use `user_prompt` instead; do not confuse the two.
Needs the token of a signed-in user.
What the AI should do with the onboarding intent planner, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
curl -X POST 'http://allsport.max-media.io/onboarding-intent-planner?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "..." }'{
"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"
}
}Creates a regenerate component from the fields sent.
Needs the token of a signed-in user.
What the AI should do with the regenerate component, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The current regenerate component, as JSON - the AI changes it and returns the result.
The regenerate component's current page url.
The regenerate component's explicit target.
The regenerate component's save user message.
The regenerate component's preview only.
curl -X POST 'http://allsport.max-media.io/regenerate-component?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'From the editor: regenerates the currently selected section of the open about-page.
Needs the token of a signed-in user.
What the AI should do with the regenerate section, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The current regenerate section, as JSON - the AI changes it and returns the result.
The regenerate section's current page url.
The regenerate section's explicit target.
The regenerate section's save user message.
The regenerate section's section blueprint.
The regenerate section's section style blueprint.
The regenerate section's preview only.
The regenerate section's regeneration mode.
The regenerate section's replacement strategy.
The regenerate section's source small target.
curl -X POST 'http://allsport.max-media.io/regenerate-section?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'{
"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"
}
}Creates a reopen page from the fields sent.
Needs the token of a signed-in user.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
The reopen page's message id.
curl -X POST 'http://allsport.max-media.io/reopen-about-page-preview?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "chatId": "...", "messageId": "..." }'{
"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"
}
}Creates a section option from the fields sent.
Needs the token of a signed-in user.
curl -X POST 'http://allsport.max-media.io/section-options?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Creates a section style option from the fields sent.
Needs the token of a signed-in user.
curl -X POST 'http://allsport.max-media.io/section-style-options?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Update a header from a prompt, written by the AI builder.
Needs the token of a signed-in user.
What the AI should do with the header, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
curl -X POST 'http://allsport.max-media.io/update-header?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "..." }'From the editor: applies a targeted edit to the about-page currently open in the editor.
Needs the token of a signed-in user.
What the AI should do with the page, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
The current page, as JSON - the AI changes it and returns the result.
The page's current page url.
The page's explicit target.
The ID of the page to change.
The page's pending selection intent.
The page's save user message.
The page's preview only.
The page's regeneration mode.
The page's force targeted modifier.
The page's redesign another.
curl -X POST 'http://allsport.max-media.io/update-page?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_data": "...", "current_page_url": "..." }'{
"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 from a prompt, written by the AI builder.
Needs the token of a signed-in user.
What the AI should do with the theme, in plain words - any language.
The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.
Which version of the AI builder to use; leave it out for the current one.
curl -X POST 'http://allsport.max-media.io/update-theme?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "..." }'