Create chat

Answers a founder's question about their launch journey as the Business AI coach: it grounds the reply in the org's REAL progress, its ranked available quests and its analytics funnel, and returns those candidate quests alongside so the caller can act on one.

POST /v1/guide/chat

Addresshttps://api.hanzo.ai/v1/guide/chat
MethodPOST
Operationpost_guide_chat
AuthAuthorization: Bearer $HANZO_API_KEY

Answers a founder's question about their launch journey as the Business AI coach: it grounds the reply in the org's REAL progress, its ranked available quests and its analytics funnel, and returns those candidate quests alongside so the caller can act on one. READ-ONLY — it advises and never runs a step, so it cannot be talked into performing an action; the only executing path is POST /v1/guide/steps/{id}/do. One AI completion per call, billed to the caller's own payer.

Request

1 field, body application/json (required).

FieldInTypeRequiredDescription
messagebodystring—Message is the founder's question for the Business AI.

Response

StatusBodyMeaning
200guide.chatResponseok
defaultproblem-detailsrefused

200 body — 16 fields.

FieldInTypeAlwaysDescription
funnelbodyguide.Funnel—
funnel.availablebodyboolean—Available separates "this org has no traffic" from "we could not ask".
funnel.ordersbodyinteger (int64)—Orders counts completed orders in the window — purchases, not carts started.
funnel.pageviewsbodyinteger (int64)—Pageviews counts page events in the window, one per view rather than per person, so a single visitor reading ten pages counts ten.
funnel.revenuebodynumber (double)—Revenue is the sum of the amounts those orders reported, in whatever currency the beacon stamped on them (major units, e.g. 49.5 for $49.50) — NOT cents, and not converted to a single currency.
funnel.signupsbodyinteger (int64)—Signups counts completed signups in the window, the step where an anonymous visitor becomes somebody with an account.
funnel.visitorsbodyinteger (int64)—Visitors is the number of DISTINCT people seen in the window, counted by the beacon's distinct id — so it is unique visitors, not sessions and not views.
funnel.windowDaysbodyinteger (int64)—WindowDays is the length of the trailing window every count covers, so a reader knows whether 40 signups is a month or a day.
replybodystring—Reply is the coach's answer, grounded only in the quests and funnel below.
suggestionsbodyguide.suggestion[]—Suggestions are the current candidate quests, ranked best-first.
suggestions[].automatablebodyboolean—Automatable is true when the step names a tool, so the Business AI can do it rather than only describe it.
suggestions[].detailbodystring—Detail is the step's own prose — what it asks for.
suggestions[].rationalebodystring—Rationale is why this step is being suggested NOW, written for the person reading it.
suggestions[].stepIdbodystring—StepID is the checklist step being recommended — the id every step route takes, so a caller can act on the suggestion directly.
suggestions[].titlebodystring—Title is the step's own one-line quest.
suggestions[].unlocksbodyinteger (int64)—Unlocks is how many downstream steps completing this one immediately makes available (its leverage) — the primary ranking key.

Failure carries the platform error shape — see Errors.

Examples

hanzo guide chat
import { Configuration, GuideApi } from 'hanzoai';

const api = new GuideApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGuideChat({ message: "<message>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import GuideApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = GuideApi(client).post_guide_chat(message="<message>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.GuideAPI.PostGuideChat(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, guide_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = guide_api::post_guide_chat(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.GuideApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new GuideApi(client).postGuideChat();
curl -X POST https://api.hanzo.ai/v1/guide/chat \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "message": "<message>"
     }'

MCP reaches guide through the guide tool, which names its 13 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_guides"
         }
       }
     }'

Guide API · All Hanzo APIs · Interactive reference

Was this page useful?