Create lifecycle
Executes a portfolio lifecycle operation on a venture (pause, resume, advance, form, export, sync, offboard, assign_member, or revoke_member) and updates its operational telemetry (spend, pending decisions, failed runs, latest evidence, or company formation ID).
POST /v1/guide/ventures/{slug}/lifecycle
| Address | https://api.hanzo.ai/v1/guide/ventures/{slug}/lifecycle |
| Method | POST |
| Operation | post_guide_ventures_by_slug_lifecycle |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Executes a portfolio lifecycle operation on a venture (pause, resume, advance, form, export, sync, offboard, assign_member, or revoke_member) and updates its operational telemetry (spend, pending decisions, failed runs, latest evidence, or company formation ID).
Request
11 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | yes | Slug is the venture handle from the URL path. |
action | body | string | — | Action is the lifecycle operation to perform: pause, resume, advance, form, export, sync, offboard, assign_member, or revoke_member. |
failedRuns | body | integer (int64) | — | FailedRuns optionally updates the count of failed runs requiring attention. |
formationId | body | string | — | FormationID optionally records the /v1/company formation identifier when action is "form". |
latestEvidence | body | string | — | LatestEvidence optionally records a new evidence citation or URI on the venture. |
member | body | string | — | Member names the teammate subject to assign or revoke when action is "assign_member" or "revoke_member". |
pendingDecisions | body | integer (int64) | — | PendingDecisions optionally updates the count of decisions waiting on human review. |
slug | body | string | — | Slug is the venture handle from the URL path. |
spendMicroUSD | body | integer (int64) | — | SpendMicroUSD optionally adds or updates recorded venture spend in integer micro-USD. |
stage | body | string | — | Stage optionally updates the venture's funnel stage (intake, discovery, validation, formation, scaling). |
teamSeeded | body | boolean | — | TeamSeeded optionally marks the venture's agent roster checkpoint complete. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | guide.ventureLifecycleOut | ok |
default | problem-details | refused |
200 body — 70 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
export | body | guide.ventureExportBundle | — | |
export.actions | body | guide.ActionRecord[] | — | Actions are the Business AI action ledger rows recorded inside the venture's isolated store. |
export.actions[].args | body | string | — | Args is the JSON the tool was called with, recorded as TEXT exactly as sent — including whatever the AI drafted into it — so a run can be read back and reproduced. |
export.actions[].createdAt | body | integer (int64) | — | CreatedAt is when the run was recorded, as Unix seconds. |
export.actions[].err | body | string | — | Err is why the run failed, when it did. |
export.actions[].id | body | string | — | ID identifies this one execution. |
export.actions[].ok | body | boolean | — | OK is whether the tool ran to completion. |
export.actions[].result | body | string | — | Result is the tool's own answer, likewise recorded as JSON text. |
export.actions[].stepId | body | string | — | StepID is the checklist step the Business AI was acting on. |
export.actions[].tool | body | string | — | Tool is the MCP tool that was dispatched, by name. |
export.playbookVersion | body | string | — | PlaybookVersion is the enrolled curriculum version at export time. |
export.steps | body | guide.stepView[] | — | Steps are the venture's checklist steps with their recorded states at export time. |
export.steps[].args | body | object | — | Args are the tool's default arguments, merged under whatever the caller passes at run time. |
export.steps[].args.* | body | any | — | |
export.steps[].automatable | body | boolean | — | Automatable is true when the Business AI can run this step (it names a tool). |
export.steps[].available | body | boolean | — | Available is true when every dependency is done or skipped. |
export.steps[].blockedBy | body | string[] | — | BlockedBy lists the unfinished dependencies keeping the step unavailable. |
export.steps[].deps | body | string[] | — | Dependencies are step ids that must be done/skipped before this step is available. |
export.steps[].detail | body | string | — | Detail is the prose/juncture — what the Guide asks or explains here. |
export.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. |
export.steps[].draftInto | body | string | — | DraftInto names the argument the drafted text lands in. |
export.steps[].enabled | body | boolean | — | Enabled is the admin on/off lever; absent reads as enabled. |
export.steps[].id | body | string | — | ID is the step's id, as it appears in the journey (e.g. "gsuite"). |
export.steps[].section | body | string | — | Section is the phase (section id) this step groups under. |
export.steps[].signal | body | string | — | Signal names the machine detector that auto-marks this step done. |
export.steps[].source | body | string | — | Source records what marked the state: manual, auto (detected) or agent. |
export.steps[].state | body | string | — | State is the step's per-org lifecycle state: todo|in_progress|done|skipped. |
export.steps[].title | body | string | — | Title is the one-line quest as a person reads it in the checklist. |
export.steps[].tool | body | string | — | Tool is the MCP tool the Business AI runs for "do it for me". |
export.ventureOrg | body | string | — | VentureOrg is the isolated venture organization identifier. |
venture | body | guide.VentureRecord | — | |
venture.createdAt | body | integer (int64) | — | CreatedAt is when the venture was first registered in the portfolio, as Unix seconds. |
venture.evidence | body | string[] | — | Evidence lists the source citations and evidence URIs attached to the venture. |
venture.failedRuns | body | integer (int64) | — | FailedRuns is how many specialist or automation runs have failed and await retry or review. |
venture.formationId | body | string | — | FormationID is the legal entity formation identifier from /v1/company once the venture advances to formation. |
venture.imported | body | boolean | — | Imported is true when the venture was imported into the studio rather than started from scratch. |
venture.initialBudgetMicroUSD | body | integer (int64) | — | InitialBudgetMicroUSD is the initial venture budget in integer micro-USD, allocated at creation. |
venture.latestEvidence | body | string | — | LatestEvidence is the most recently recorded evidence citation or URI for this venture. |
venture.members | body | string[] | — | Members lists the teammate subjects explicitly assigned access to this venture. |
venture.owner | body | string | — | Owner is the venture lead (person or lead agent handle) accountable for executing the playbook. |
venture.pendingDecisions | body | integer (int64) | — | PendingDecisions is how many research decisions, role proposals, or external actions await human approval. |
venture.playbookVersion | body | string | — | PlaybookVersion is the version string of the Guide curriculum enrolled for this venture. |
venture.progress | body | guide.progressView | — | |
venture.progress.done | body | integer (int64) | — | Done counts steps that are FINISHED — done and skipped alike, since a step the org deliberately passed over is not still owed. |
venture.progress.next | body | string | — | Next is the id of the step to do next: the first available, unfinished step in authoring order. |
venture.progress.percent | body | integer (int64) | — | Percent is done/total as a whole number 0-100, rounded, so a caller renders a bar without recomputing it. |
venture.progress.total | body | integer (int64) | — | 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 authored step count. |
venture.resumed | body | boolean | — | Resumed is true when a repeated or interrupted create call resumed an existing venture without duplicating budget or team. |
venture.setup | body | guide.VentureSetupState | — | |
venture.setup.budgetAllocated | body | boolean | — | BudgetAllocated is true once the initial micro-USD budget has been committed, preventing duplicate allocation. |
venture.setup.members | body | string[] | — | Members lists the teammate subjects explicitly assigned access to this venture. |
venture.setup.orgProvisioned | body | boolean | — | OrgProvisioned is true once the venture's isolated organization store has been opened. |
venture.setup.playbookEnrolled | body | boolean | — | PlaybookEnrolled is true once the versioned curriculum has been persisted in the venture's store. |
venture.setup.revokedMembers | body | string[] | — | RevokedMembers lists teammate subjects whose seat access to this venture has been revoked. |
venture.setup.teamSeeded | body | boolean | — | TeamSeeded is true once the venture's team roster has been enrolled. |
venture.slug | body | string | — | Slug is the venture's unique handle inside the studio portfolio. |
venture.spendMicroUSD | body | integer (int64) | — | SpendMicroUSD is the cumulative spend recorded against this venture in integer micro-USD. |
venture.sponsor | body | string | — | Sponsor is the studio partner or executive sponsoring the venture. |
venture.stage | body | string | — | Stage is the venture's position in the studio funnel: intake, discovery, validation, formation, or scaling. |
venture.status | body | string | — | Status is the venture's operating state: active, paused, forming, formed, or offboarded. |
venture.studioOrg | body | string | — | StudioOrg is the parent studio organization operating the portfolio. |
venture.templates | body | guide.Page[] | — | Templates are the shared studio templates from the playbook visible in this venture. |
venture.templates[].body | body | string | — | Body is the reusable prompt or snippet itself. |
venture.templates[].enabled | body | boolean | — | Enabled is the admin lever. |
venture.templates[].id | body | string | — | ID is the slug a step references to pull this template in. |
venture.templates[].title | body | string | — | Title names the template in the authoring plane and in a picker. |
venture.thesis | body | string | — | Thesis is the falsifiable venture hypothesis being tested before entity formation. |
venture.title | body | string | — | Title is the human-readable name of the venture. |
venture.updatedAt | body | integer (int64) | — | UpdatedAt is when the venture record was last updated, as Unix seconds. |
venture.ventureOrg | body | string | — | VentureOrg is the isolated organization namespace holding this venture's private progress, documents, runs, and secrets. |
Failure carries the platform error shape — see Errors.
Examples
hanzo guide ventures lifecycle <slug>import { Configuration, GuideApi } from 'hanzoai';
const api = new GuideApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGuideVenturesBySlugLifecycle({ slug: 'slug', action: "<action>", failedRuns: 0 });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_ventures_by_slug_lifecycle(slug='slug', action="<action>", failed_runs=0)cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.GuideAPI.PostGuideVenturesBySlugLifecycle(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_ventures_by_slug_lifecycle(&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).postGuideVenturesBySlugLifecycle();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl -X POST https://api.hanzo.ai/v1/guide/ventures/<slug>/lifecycle \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "<action>",
"failedRuns": 0
}'MCP reaches guide through the guide tool, which names its 18 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"
}
}
}'