The site's settings: its name and contact details, the menu, the home page, publishing and app settings, payments, delivery and taxes.
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.
55 endpoints in 11 parts: Companion App Settings, Consent, Gdpr, Home Page Settings, Mycontact, Pwa Settings, Rating Settings, Site Menu, Social Mode Settings, Social Moderation Settings, AI builder.
The companion app settings. Answers an array of every record.
Needs a site admin token.
curl -X GET 'http://smartman.max-media.io/companion-app-settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
Creates a companion app settings record. Answers 201 with no body.
Needs a site admin token.
curl -X POST 'http://smartman.max-media.io/companion-app-settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
The companion app settings by id. 404 when there is no such record.
Needs a site admin token.
The ID of the companion app setting.
curl -X GET 'http://smartman.max-media.io/companion-app-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Updates a companion app settings record. Answers the settings, or 404.
Needs a site admin token.
The ID of the companion app setting.
curl -X PATCH 'http://smartman.max-media.io/companion-app-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Deletes a companion app settings record. Answers the deleted settings, or 404.
Needs a site admin token.
The ID of the companion app setting.
Returns an empty answer on success.
curl -X DELETE 'http://smartman.max-media.io/companion-app-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Log agreement. Logs the click (the consent type and the visitor's IP) for the consent report. Reads no token. Answers 201.
Public - no token needed.
The accept consent's type.
curl -X POST 'http://smartman.max-media.io/accept-consent?ionic=true' \
-H 'Content-Type: application/json' \
-d '{ "type": "..." }'{
"url": "example-item",
"ip": "example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}The cookie consent settings. Reads no token.
Public - no token needed.
Returns the Consent object.
curl -X GET 'http://smartman.max-media.io/consent?ionic=true'
{
"title": "Example",
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}Creates a terms of use record. Answers 201 with no body.
Needs a site admin token.
Returns the Consent object.
curl -X POST 'http://smartman.max-media.io/consent?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"title": "Example",
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}Get the terms of use text. Answers the text only.
Public - no token needed.
curl -X GET 'http://smartman.max-media.io/consent-text?ionic=true'
{
"title": "Example",
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}The cookie consent settings by id; visitors read /consent-text. 404 when there is no such record.
Public - no token needed.
The ID of the consent.
Returns the Consent object.
curl -X GET 'http://smartman.max-media.io/consent/{id}?ionic=true'{
"title": "Example",
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}Updates a terms of use record. Answers the settings, or 404.
Needs a site admin token.
The ID of the consent.
Returns the Consent object.
curl -X PATCH 'http://smartman.max-media.io/consent/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"title": "Example",
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}Get the terms of use text. Answers the text only. Reads no token.
Public - no token needed.
curl -X GET 'http://smartman.max-media.io/gdpr-text?ionic=true'
{
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}The privacy (GDPR) settings. The site's one record.
Needs a site admin token.
Returns a list of Gdpr objects.
curl -X GET 'http://smartman.max-media.io/gdprs?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}
]Creates a terms of use record. Answers 201 with no body.
Needs a site admin token.
Returns the Gdpr object.
curl -X POST 'http://smartman.max-media.io/gdprs?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}The privacy settings by id; visitors read /gdpr-text. 404 when there is no such record.
Public - no token needed.
The ID of the gdpr.
Returns the Gdpr object.
curl -X GET 'http://smartman.max-media.io/gdprs/{id}?ionic=true'{
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}Updates a terms of use record. Fields outside the allowed list are silently ignored. Answers the updated record, or 404.
Needs a site admin token.
The ID of the gdpr.
Returns the Gdpr object.
curl -X PATCH 'http://smartman.max-media.io/gdprs/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"text": "Text shown on the site.",
"_id": "6543210fedcba98765432100"
}The home page settings. The site's one record.
Needs a site admin token.
Returns a list of HomePageSettings objects.
curl -X GET 'http://smartman.max-media.io/home-page-settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
[
{
"useDifferentLayoutForApp": false,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}
]Updates the home page settings (useDifferentLayoutForApp). The home page is rendered again on its next visit. Answers the settings.
Needs a site admin token.
The ID of the home page setting.
The mobile app shows its own home layout instead of the website's.
Returns the HomePageSettings object.
curl -X PATCH 'http://smartman.max-media.io/home-page-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "useDifferentLayoutForApp": "..." }'{
"useDifferentLayoutForApp": false,
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}The site's contact details. Reads no token. The SendGrid key is never included.
Public - no token needed.
curl -X GET 'http://smartman.max-media.io/mycontacts?ionic=true'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Creates a contact details record. A site has one; the AI and admin update it with PATCH instead.
Needs a site admin token.
curl -X POST 'http://smartman.max-media.io/mycontacts?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}The site's contact details by id. 404 when there is no such record.
Public - no token needed.
The ID of the site contact.
curl -X GET 'http://smartman.max-media.io/mycontacts/{id}?ionic=true'{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Updates a contact details record. Fields outside the allowed list are ignored; the linked Google accounts can only change through their own routes. Saving a SendGrid key switches the site's email to SendGrid, and the key is never sent back. Answers the contact details. The app re-reads its startup data afterwards.
Needs a site admin token.
The ID of the site contact.
The site contact's Google Business Profile location.
The site contact's Google Analytics property.
The site contact's google app.
curl -X PATCH 'http://smartman.max-media.io/mycontacts/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "gmb_location": "...", "ga_property": "...", "google_app": "..." }'{
"zip_code": "example",
"city": "example",
"address": "example",
"contact": "example",
"email": "jane@example.com",
"google_app": "example",
"workhours": "example",
"logo": "6543210fedcba98765432100",
"site_name": "Example",
"domain": "example",
"stock_domain": "example",
"isMarket": false,
"forbidden_collections": [
{
"collection_id": "6543210fedcba98765432100",
"_id": "6543210fedcba98765432100"
}
],
"isInit": false,
"template": "0000",
"lang": "en",
"favicon": "6543210fedcba98765432100",
"cacheEnabled": false,
"has_completed_startup_prompt": true,
"gmb_location": "example",
"ga_property": "example",
"site_generated_at": "2026-11-04T12:00:00.000Z",
"admin_first_opened_at": "2026-11-04T12:00:00.000Z",
"admin_last_opened_at": "2026-11-04T12:00:00.000Z",
"allowedComponents": {
"services": false,
"products": false,
"blogposts": false,
"programs": false
}
}Deletes a contact details record. The site needs this record: deleting it breaks pages until a new one is made.
Needs a site admin token.
The ID of the site contact.
Returns an empty answer on success.
curl -X DELETE 'http://smartman.max-media.io/mycontacts/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'The installable app (PWA) settings. Answers an array of every record.
Needs a site admin token.
curl -X GET 'http://smartman.max-media.io/pwa-settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"name": "Example",
"short_name": "Example",
"logo": "6543210fedcba98765432100",
"background_color": "#3557c4",
"description": "Text shown on the site.",
"screenshots": [
{
"media": "6543210fedcba98765432100",
"is_mobile_preview": false,
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Creates an installable app settings record. A site has one; update it with PATCH instead. Answers 201.
Needs a site admin token.
curl -X POST 'http://smartman.max-media.io/pwa-settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"name": "Example",
"short_name": "Example",
"logo": "6543210fedcba98765432100",
"background_color": "#3557c4",
"description": "Text shown on the site.",
"screenshots": [
{
"media": "6543210fedcba98765432100",
"is_mobile_preview": false,
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}The installable app settings by id. 404 when there is no such record.
Needs a site admin token.
The ID of the app setting.
curl -X GET 'http://smartman.max-media.io/pwa-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"name": "Example",
"short_name": "Example",
"logo": "6543210fedcba98765432100",
"background_color": "#3557c4",
"description": "Text shown on the site.",
"screenshots": [
{
"media": "6543210fedcba98765432100",
"is_mobile_preview": false,
"_id": "6543210fedcba98765432100"
}
],
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Every rating email setting. Reads no token.
Public - no token needed.
Returns a list of RatingSettings objects.
curl -X GET 'http://smartman.max-media.io/rating-settings?ionic=true'
[
{
"type": "example",
"send": false,
"days": 1,
"title": "Example",
"text1": "Text shown on the site.",
"text2": "Text shown on the site.",
"useCustomLink": false,
"customLinkUrl": "example-item",
"linkText": "example-item",
"startDate": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}
]Creates the rating email settings of a kind of item. One per kind of item (type). Answers 201 with it.
Needs the token of a signed-in user.
Returns the RatingSettings object.
curl -X POST 'http://smartman.max-media.io/rating-settings/?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"type": "example",
"send": false,
"days": 1,
"title": "Example",
"text1": "Text shown on the site.",
"text2": "Text shown on the site.",
"useCustomLink": false,
"customLinkUrl": "example-item",
"linkText": "example-item",
"startDate": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}Updates rating email settings. Answers 200 with no body.
Needs the token of a signed-in user.
The ID of the rating setting.
Rating emails are sent after orders and bookings.
Returns the RatingSettings object.
curl -X PATCH 'http://smartman.max-media.io/rating-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "send": "..." }'{
"type": "example",
"send": false,
"days": 1,
"title": "Example",
"text1": "Text shown on the site.",
"text2": "Text shown on the site.",
"useCustomLink": false,
"customLinkUrl": "example-item",
"linkText": "example-item",
"startDate": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}The rating email settings of a kind of item (product, service...). Null when the kind has none.
Needs the token of a signed-in user.
Product,service, program, priceplan.
Returns a list of RatingSettings objects.
curl -X GET 'http://smartman.max-media.io/rating-settings/{type}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'[
{
"type": "example",
"send": false,
"days": 1,
"title": "Example",
"text1": "Text shown on the site.",
"text2": "Text shown on the site.",
"useCustomLink": false,
"customLinkUrl": "example-item",
"linkText": "example-item",
"startDate": "2026-11-04T12:00:00.000Z",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z"
}
]The social mode settings. Reads no token: the app reads it at start. With the paywall's price plans.
Public - no token needed.
Returns a list of SocialModeSettings objects.
curl -X GET 'http://smartman.max-media.io/social-mode-settings?ionic=true'
[
{
"social_mode": false,
"allow_products": false,
"allow_services": false,
"allow_services_stp": false,
"allow_blogposts": false,
"allow_programs": false,
"allow_programs_stp": false,
"allow_posts": false,
"allow_ai": false,
"allow_bites": false,
"allow_long_videos": false,
"allow_explore": false,
"allow_online_payments": false,
"allow_price_plans": false,
"allow_boosting_posts": false,
"allow_single_ai": false,
"merchant_agreement": "6543210fedcba98765432100",
"verification_popup": "6543210fedcba98765432100",
"commission": 1,
"home_page": "home",
"allow_google_login": true,
"use_cdn_for_medias": false,
"cdn_for_medias": "example",
"use_cdn_for_microservices": false,
"navigation_pages": {
"bites": false,
"long_videos": false,
"vouchers": false,
"store": false,
"programs": false,
"services": false,
"blogposts": false,
"subscription": false,
"playlists": false,
"partners": false,
"contacts": false,
"tracker": false
}
}
]Creates a social mode settings record. A site has one; update it with PATCH instead. Answers 201.
Needs a site admin token.
Returns the SocialModeSettings object.
curl -X POST 'http://smartman.max-media.io/social-mode-settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"social_mode": false,
"allow_products": false,
"allow_services": false,
"allow_services_stp": false,
"allow_blogposts": false,
"allow_programs": false,
"allow_programs_stp": false,
"allow_posts": false,
"allow_ai": false,
"allow_bites": false,
"allow_long_videos": false,
"allow_explore": false,
"allow_online_payments": false,
"allow_price_plans": false,
"allow_boosting_posts": false,
"allow_single_ai": false,
"merchant_agreement": "6543210fedcba98765432100",
"verification_popup": "6543210fedcba98765432100",
"commission": 1,
"home_page": "home",
"allow_google_login": true,
"use_cdn_for_medias": false,
"cdn_for_medias": "example",
"use_cdn_for_microservices": false,
"navigation_pages": {
"bites": false,
"long_videos": false,
"vouchers": false,
"store": false,
"programs": false,
"services": false,
"blogposts": false,
"subscription": false,
"playlists": false,
"partners": false,
"contacts": false,
"tracker": false
}
}Updates a social mode settings record. Fields outside the allowed list are ignored. Answers the settings, or 404.
Needs a site admin token.
The ID of the social mode setting.
Returns the SocialModeSettings object.
curl -X PATCH 'http://smartman.max-media.io/social-mode-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"social_mode": false,
"allow_products": false,
"allow_services": false,
"allow_services_stp": false,
"allow_blogposts": false,
"allow_programs": false,
"allow_programs_stp": false,
"allow_posts": false,
"allow_ai": false,
"allow_bites": false,
"allow_long_videos": false,
"allow_explore": false,
"allow_online_payments": false,
"allow_price_plans": false,
"allow_boosting_posts": false,
"allow_single_ai": false,
"merchant_agreement": "6543210fedcba98765432100",
"verification_popup": "6543210fedcba98765432100",
"commission": 1,
"home_page": "home",
"allow_google_login": true,
"use_cdn_for_medias": false,
"cdn_for_medias": "example",
"use_cdn_for_microservices": false,
"navigation_pages": {
"bites": false,
"long_videos": false,
"vouchers": false,
"store": false,
"programs": false,
"services": false,
"blogposts": false,
"subscription": false,
"playlists": false,
"partners": false,
"contacts": false,
"tracker": false
}
}Deletes a social mode settings record. Answers the deleted record, or 404. Records that point to it are not changed.
Needs a site admin token.
The ID of the social mode setting.
Returns an empty answer on success.
curl -X DELETE 'http://smartman.max-media.io/social-mode-settings/{id}?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'Which sections the signed-in user may use, by their professional account. Answers which sections are open, by section.
Works without a token; with a user token the answer is personal.
curl -X GET 'http://smartman.max-media.io/unlocked-content?ionic=true'
{
"social_mode": false,
"allow_products": false,
"allow_services": false,
"allow_services_stp": false,
"allow_blogposts": false,
"allow_programs": false,
"allow_programs_stp": false,
"allow_posts": false,
"allow_ai": false,
"allow_bites": false,
"allow_long_videos": false,
"allow_explore": false,
"allow_online_payments": false,
"allow_price_plans": false,
"allow_boosting_posts": false,
"allow_single_ai": false,
"merchant_agreement": "6543210fedcba98765432100",
"verification_popup": "6543210fedcba98765432100",
"commission": 1,
"home_page": "home",
"allow_google_login": true,
"use_cdn_for_medias": false,
"cdn_for_medias": "example",
"use_cdn_for_microservices": false,
"navigation_pages": {
"bites": false,
"long_videos": false,
"vouchers": false,
"store": false,
"programs": false,
"services": false,
"blogposts": false,
"subscription": false,
"playlists": false,
"partners": false,
"contacts": false,
"tracker": false
}
}Connects a Facebook page or Instagram account for comment moderation (accessToken, pageId). 400 when the token has no Facebook pages, or not that page. Connecting a different page clears the old page's queue. Answers the settings without the page token.
Needs the token of a signed-in user.
The social's page id.
The social's granted scopes.
The social's delete comments.
curl -X POST 'http://smartman.max-media.io/social/connect?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "pageId": "...", "grantedScopes": "...", "deleteComments": "..." }'{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Disconnects moderation; deleteComments also removes the stored queue. Answers { connected: false }.
Needs the token of a signed-in user.
The social's delete comments.
curl -X POST 'http://smartman.max-media.io/social/disconnect?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "deleteComments": "..." }'{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Returns the social. TEMPORARY. Delete once Instagram messages are settled. Asks Graph the conversations question directly, with the stored Page token and none of our own filtering, across both platforms and both folders. The sync reports zero Instagram conversations while Messenger returns thirteen from the same call and the same token; this shows what Meta actually answers, including the raw error when it refuses rather than returning empty.
Needs the token of a signed-in user.
curl -X GET 'http://smartman.max-media.io/social/messages-probe?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}The moderation queue: every tab's comments and messages in one answer. Answers { byStatus, counts }. ?limit caps each tab.
Needs the token of a signed-in user.
How many results to return.
curl -X GET 'http://smartman.max-media.io/social/queue?ionic=true&limit=...' \ -H 'Authorization: Bearer <TOKEN>'
{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Applies the action on a queued comment (reply, hide, delete), with an edited reply_message. Acts on Facebook or Instagram at once. 404 when the comment is gone; 400 when it is not waiting for a decision.
Needs the token of a signed-in user.
The ID of the social.
The social's reply message.
The social's action.
curl -X POST 'http://smartman.max-media.io/social/queue/{id}/approve?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "reply_message": "...", "action": "..." }'{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Writes a new suggested reply for a queued comment. Answers { reply_message }.
Needs the token of a signed-in user.
The ID of the social.
curl -X POST 'http://smartman.max-media.io/social/queue/{id}/regenerate-reply?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Dismisses a queued comment's suggested action. Answers the comment.
Needs the token of a signed-in user.
The ID of the social.
curl -X POST 'http://smartman.max-media.io/social/queue/{id}/reject?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"platform": "facebook",
"kind": "comment",
"conversation_id": "example",
"window_expires_at": "2026-11-04T12:00:00.000Z",
"page_id": "example",
"comment_id": "example",
"post_id": "example",
"post_url": "example-item",
"post_message": "example",
"post_links": [
{
"url": "example-item",
"title": "Example"
}
],
"parent_id": "example",
"page_replied": false,
"post_type": "organic",
"message": "example",
"author_id": "example",
"author_name": "Example",
"comment_created_at": "2026-11-04T12:00:00.000Z",
"suggested_action": "example",
"reply_message": "example",
"status": "new",
"action_taken": "example",
"actioned_by": "example",
"actioned_at": "2026-11-04T12:00:00.000Z",
"reply_comment_id": "example",
"classification": {
"category": "example",
"score": 0,
"should_reply": false,
"answer_available": false,
"reasoning": "example",
"language": "en"
},
"credits": {
"classify": 0,
"reply": 0
}
}Reverses an action taken on a comment, by the AI or a person. 400 "Already undone"; a deleted comment cannot be brought back.
Needs the token of a signed-in user.
The ID of the social.
curl -X POST 'http://smartman.max-media.io/social/queue/{id}/undo?ionic=true' \
-H 'Authorization: Bearer <TOKEN>'{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}The moderation settings. 404 "No Facebook page connected". Never includes the page token.
Needs the token of a signed-in user.
curl -X GET 'http://smartman.max-media.io/social/settings?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Updates the moderation settings; clear_replies_disabled re-arms replying. 404 "No Facebook page connected". Answers the settings.
Needs the token of a signed-in user.
The social's clear replies disabled.
curl -X PATCH 'http://smartman.max-media.io/social/settings?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "clear_replies_disabled": "..." }'{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Whether moderation is connected, its plan and how many comments wait. Answers { connected: false, plan } when nothing is connected; never includes the page token.
Needs the token of a signed-in user.
curl -X GET 'http://smartman.max-media.io/social/status?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}Pull the page's recent comments now, instead of waiting for the. scheduled run. Same function the cron calls, so a manual sync and an automatic one cannot drift apart.
Needs the token of a signed-in user.
curl -X POST 'http://smartman.max-media.io/social/sync?ionic=true' \ -H 'Authorization: Bearer <TOKEN>'
{
"platform": "facebook",
"page_id": "example",
"page_name": "Example",
"connected_by": "6543210fedcba98765432100",
"last_polled_at": "2026-11-04T12:00:00.000Z",
"replies_disabled_at": "2026-11-04T12:00:00.000Z",
"enabled": false,
"auto_threshold": 0.9,
"custom_instructions": "example",
"auto_action": false,
"allow_auto_delete": false,
"auto_reply": false,
"auto_post_replies": false,
"reply_instructions": "example",
"notify_new_comments": false,
"start_date": "2026-11-04T12:00:00.000Z",
"message_instructions": "example",
"granted_scopes": [
"example"
],
"instagram_user_id": "example",
"instagram_username": "Example",
"_id": "6543210fedcba98765432100",
"updatedAt": "2026-11-04T12:00:00.000Z",
"createdAt": "2026-11-04T12:00:00.000Z",
"sources": {
"facebook_posts": false,
"facebook_reviews": false,
"instagram_comments": false,
"facebook_messages": false,
"instagram_messages": false
}
}AI: writes the site's privacy policy page. Answers { action: 'JOB', async_job }; the page is written from the site's contact details and what it sells.
Needs a site admin token.
What the AI should do with the privacy policy, 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 privacy policy's socket id.
Whether to also create the cookie consent banner and link it to this privacy policy.
curl -X POST 'http://smartman.max-media.io/generate-privacy-policy?ionic=true' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "socketId": "...", "include_consent": "..." }'