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

Addresshttps://api.hanzo.ai/v1/guide/ventures/{slug}/lifecycle
MethodPOST
Operationpost_guide_ventures_by_slug_lifecycle
AuthAuthorization: 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).

FieldInTypeRequiredDescription
slugpathstringyesSlug is the venture handle from the URL path.
actionbodystring—Action is the lifecycle operation to perform: pause, resume, advance, form, export, sync, offboard, assign_member, or revoke_member.
failedRunsbodyinteger (int64)—FailedRuns optionally updates the count of failed runs requiring attention.
formationIdbodystring—FormationID optionally records the /v1/company formation identifier when action is "form".
latestEvidencebodystring—LatestEvidence optionally records a new evidence citation or URI on the venture.
memberbodystring—Member names the teammate subject to assign or revoke when action is "assign_member" or "revoke_member".
pendingDecisionsbodyinteger (int64)—PendingDecisions optionally updates the count of decisions waiting on human review.
slugbodystring—Slug is the venture handle from the URL path.
spendMicroUSDbodyinteger (int64)—SpendMicroUSD optionally adds or updates recorded venture spend in integer micro-USD.
stagebodystring—Stage optionally updates the venture's funnel stage (intake, discovery, validation, formation, scaling).
teamSeededbodyboolean—TeamSeeded optionally marks the venture's agent roster checkpoint complete.

Response

StatusBodyMeaning
200guide.ventureLifecycleOutok
defaultproblem-detailsrefused

200 body — 70 fields.

FieldInTypeAlwaysDescription
exportbodyguide.ventureExportBundle—
export.actionsbodyguide.ActionRecord[]—Actions are the Business AI action ledger rows recorded inside the venture's isolated store.
export.actions[].argsbodystring—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[].createdAtbodyinteger (int64)—CreatedAt is when the run was recorded, as Unix seconds.
export.actions[].errbodystring—Err is why the run failed, when it did.
export.actions[].idbodystring—ID identifies this one execution.
export.actions[].okbodyboolean—OK is whether the tool ran to completion.
export.actions[].resultbodystring—Result is the tool's own answer, likewise recorded as JSON text.
export.actions[].stepIdbodystring—StepID is the checklist step the Business AI was acting on.
export.actions[].toolbodystring—Tool is the MCP tool that was dispatched, by name.
export.playbookVersionbodystring—PlaybookVersion is the enrolled curriculum version at export time.
export.stepsbodyguide.stepView[]—Steps are the venture's checklist steps with their recorded states at export time.
export.steps[].argsbodyobject—Args are the tool's default arguments, merged under whatever the caller passes at run time.
export.steps[].args.*bodyany—
export.steps[].automatablebodyboolean—Automatable is true when the Business AI can run this step (it names a tool).
export.steps[].availablebodyboolean—Available is true when every dependency is done or skipped.
export.steps[].blockedBybodystring[]—BlockedBy lists the unfinished dependencies keeping the step unavailable.
export.steps[].depsbodystring[]—Dependencies are step ids that must be done/skipped before this step is available.
export.steps[].detailbodystring—Detail is the prose/juncture — what the Guide asks or explains here.
export.steps[].draftbodystring—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[].draftIntobodystring—DraftInto names the argument the drafted text lands in.
export.steps[].enabledbodyboolean—Enabled is the admin on/off lever; absent reads as enabled.
export.steps[].idbodystring—ID is the step's id, as it appears in the journey (e.g. "gsuite").
export.steps[].sectionbodystring—Section is the phase (section id) this step groups under.
export.steps[].signalbodystring—Signal names the machine detector that auto-marks this step done.
export.steps[].sourcebodystring—Source records what marked the state: manual, auto (detected) or agent.
export.steps[].statebodystring—State is the step's per-org lifecycle state: todo|in_progress|done|skipped.
export.steps[].titlebodystring—Title is the one-line quest as a person reads it in the checklist.
export.steps[].toolbodystring—Tool is the MCP tool the Business AI runs for "do it for me".
export.ventureOrgbodystring—VentureOrg is the isolated venture organization identifier.
venturebodyguide.VentureRecord—
venture.createdAtbodyinteger (int64)—CreatedAt is when the venture was first registered in the portfolio, as Unix seconds.
venture.evidencebodystring[]—Evidence lists the source citations and evidence URIs attached to the venture.
venture.failedRunsbodyinteger (int64)—FailedRuns is how many specialist or automation runs have failed and await retry or review.
venture.formationIdbodystring—FormationID is the legal entity formation identifier from /v1/company once the venture advances to formation.
venture.importedbodyboolean—Imported is true when the venture was imported into the studio rather than started from scratch.
venture.initialBudgetMicroUSDbodyinteger (int64)—InitialBudgetMicroUSD is the initial venture budget in integer micro-USD, allocated at creation.
venture.latestEvidencebodystring—LatestEvidence is the most recently recorded evidence citation or URI for this venture.
venture.membersbodystring[]—Members lists the teammate subjects explicitly assigned access to this venture.
venture.ownerbodystring—Owner is the venture lead (person or lead agent handle) accountable for executing the playbook.
venture.pendingDecisionsbodyinteger (int64)—PendingDecisions is how many research decisions, role proposals, or external actions await human approval.
venture.playbookVersionbodystring—PlaybookVersion is the version string of the Guide curriculum enrolled for this venture.
venture.progressbodyguide.progressView—
venture.progress.donebodyinteger (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.nextbodystring—Next is the id of the step to do next: the first available, unfinished step in authoring order.
venture.progress.percentbodyinteger (int64)—Percent is done/total as a whole number 0-100, rounded, so a caller renders a bar without recomputing it.
venture.progress.totalbodyinteger (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.resumedbodyboolean—Resumed is true when a repeated or interrupted create call resumed an existing venture without duplicating budget or team.
venture.setupbodyguide.VentureSetupState—
venture.setup.budgetAllocatedbodyboolean—BudgetAllocated is true once the initial micro-USD budget has been committed, preventing duplicate allocation.
venture.setup.membersbodystring[]—Members lists the teammate subjects explicitly assigned access to this venture.
venture.setup.orgProvisionedbodyboolean—OrgProvisioned is true once the venture's isolated organization store has been opened.
venture.setup.playbookEnrolledbodyboolean—PlaybookEnrolled is true once the versioned curriculum has been persisted in the venture's store.
venture.setup.revokedMembersbodystring[]—RevokedMembers lists teammate subjects whose seat access to this venture has been revoked.
venture.setup.teamSeededbodyboolean—TeamSeeded is true once the venture's team roster has been enrolled.
venture.slugbodystring—Slug is the venture's unique handle inside the studio portfolio.
venture.spendMicroUSDbodyinteger (int64)—SpendMicroUSD is the cumulative spend recorded against this venture in integer micro-USD.
venture.sponsorbodystring—Sponsor is the studio partner or executive sponsoring the venture.
venture.stagebodystring—Stage is the venture's position in the studio funnel: intake, discovery, validation, formation, or scaling.
venture.statusbodystring—Status is the venture's operating state: active, paused, forming, formed, or offboarded.
venture.studioOrgbodystring—StudioOrg is the parent studio organization operating the portfolio.
venture.templatesbodyguide.Page[]—Templates are the shared studio templates from the playbook visible in this venture.
venture.templates[].bodybodystring—Body is the reusable prompt or snippet itself.
venture.templates[].enabledbodyboolean—Enabled is the admin lever.
venture.templates[].idbodystring—ID is the slug a step references to pull this template in.
venture.templates[].titlebodystring—Title names the template in the authoring plane and in a picker.
venture.thesisbodystring—Thesis is the falsifiable venture hypothesis being tested before entity formation.
venture.titlebodystring—Title is the human-readable name of the venture.
venture.updatedAtbodyinteger (int64)—UpdatedAt is when the venture record was last updated, as Unix seconds.
venture.ventureOrgbodystring—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"
         }
       }
     }'

Guide API · All Hanzo APIs · Interactive reference

Was this page useful?
Broken link or missing step? Drop it in #docs on Discord or open a PR.