Overview returns the caller org's launch journey: the active curriculum's…
Overview returns the caller org's launch journey: the active curriculum's version and title, every step with its state, whether it is available, what…
GET /v1/guide
| Address | https://api.hanzo.ai/v1/guide |
| Method | GET |
| Operation | get_guide |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Overview returns the caller org's launch journey: the active curriculum's version and title, every step with its state, whether it is available, what blocks it and whether the Business AI can run it, the done/total/percent progress with the next step to take, and the org's analytics funnel folded in. Auto-detect runs first, so a step the org has already completed elsewhere reads done without anyone marking it.
Request
GET /v1/guide takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | overviewView | ok |
200 body — 34 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
custom | body | boolean | — | Custom is true when the org replaced the shared playbook with one of its own — the difference between "everyone's checklist" and "the one you authored". |
funnel | body | Funnel | — | |
funnel.available | body | boolean | — | Available separates "this org has no traffic" from "we could not ask". |
funnel.orders | body | integer | — | Orders counts completed orders in the window — purchases, not carts started. |
funnel.pageviews | body | integer | — | Pageviews counts page events in the window, one per view rather than per person, so a single visitor reading ten pages counts ten. |
funnel.revenue | body | number | — | Revenue is the sum of the amounts those orders reported, in whatever currency the beacon stamped on them (major units, e.g. |
funnel.signups | body | integer | — | Signups counts completed signups in the window, the step where an anonymous visitor becomes somebody with an account. |
funnel.visitors | body | integer | — | 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.windowDays | body | integer | — | WindowDays is the length of the trailing window every count covers, so a reader knows whether 40 signups is a month or a day. |
progress | body | progressView | — | |
progress.done | body | integer | — | Done counts steps that are FINISHED — done and skipped alike, since a step the org deliberately passed over is not still owed. |
progress.next | body | string | — | Next is the id of the step to do next: the first available, unfinished step in authoring order. |
progress.percent | body | integer | — | Percent is done/total as a whole number 0-100, rounded, so a caller renders a bar without recomputing it. |
progress.total | body | integer | — | Total is how many steps this org's journey holds — the ENABLED steps of the playbook, so it shrinks when an operator disables one and does not match the… |
steps | body | stepView[] | — | Steps are every enabled step with the org's own state folded in, in authoring order. |
steps[].args | body | object | — | Args are the tool's default arguments, merged under whatever the caller passes at run time. |
steps[].args.* | body | object | — | |
steps[].automatable | body | boolean | — | Automatable is true when the Business AI can run this step (it names a tool). |
steps[].available | body | boolean | — | Available is true when every dependency is done or skipped. |
steps[].blockedBy | body | string[] | — | BlockedBy lists the unfinished dependencies keeping the step unavailable. |
steps[].deps | body | string[] | — | Dependencies are step ids that must be done/skipped before this step is available. |
steps[].detail | body | string | — | Detail is the prose/juncture — what the Guide asks or explains here. |
steps[].draft | body | string | — | Draft, when set, is the prompt the embedded AI answers first; its output is folded into one of Args before the tool runs. |
steps[].draftInto | body | string | — | DraftInto names the argument the drafted text lands in. |
steps[].enabled | body | boolean | — | Enabled is the admin on/off lever; absent reads as enabled. |
steps[].id | body | string | — | ID is the step's id, as it appears in the journey (e.g. |
steps[].section | body | string | — | Section is the phase (section id) this step groups under. |
steps[].signal | body | string | — | Signal names the machine detector that auto-marks this step done. |
steps[].source | body | string | — | Source records what marked the state: manual, auto (detected) or agent. |
steps[].state | body | string | — | State is the step's per-org lifecycle state: todo|in_progress|done|skipped. |
steps[].title | body | string | — | Title is the one-line quest as a person reads it in the checklist. |
steps[].tool | body | string | — | Tool is the MCP tool the Business AI runs for "do it for me". |
title | body | string | — | Title is the playbook's name as it heads the checklist. |
version | body | string | — | Version identifies the playbook this journey came from, so a caller can tell that the checklist itself changed under them. |
Failure carries the platform error shape — see Errors.
Examples
hanzo guide getimport { Configuration, GuideApi } from 'hanzoai';
const api = new GuideApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getGuide();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).get_guide()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.GuideAPI.GetGuide(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::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::get_guide(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.GuideApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new GuideApi(client).getGuide();curl https://api.hanzo.ai/v1/guide \
-H "Authorization: Bearer $HANZO_API_KEY"Tool guide, op get_guide — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "guide",
"arguments": {
"op": "get_guide",
"input": {}
}
}
}'How is this guide?