Create runs

Executes one of the caller's workflows synchronously: the graph runs in the flow service and the response carries the run's session and outputs.

POST /v1/flow/runs

Addresshttps://api.hanzo.ai/v1/flow/runs
MethodPOST
Operationpost_flow_runs
AuthAuthorization: Bearer $HANZO_API_KEY

Executes one of the caller's workflows synchronously: the graph runs in the flow service and the response carries the run's session and outputs. A graph whose components fail reports the product's own error. Runs are bounded by the product's five-minute sync ceiling.

Request

4 fields, body application/json (required).

FieldInTypeRequiredDescription
inputbodystring—Input is the run's chat input value, handed to the graph's input node.
sessionbodystring—Session groups runs into one conversation; the product mints one when absent and returns it in the response.
tweaksbodyany—Tweaks override component fields for this run only (the product's tweaks document), verbatim.
workflowbodystring—Workflow is the UUID of the workflow to run.

Response

StatusBodyMeaning
200ok
defaultproblem-detailsrefused

200 body — 1 field.

FieldInTypeAlwaysDescription
(body)bodyanyyes

Failure carries the platform error shape — see Errors.

Examples

hanzo flow runs create
import { Configuration, FlowApi } from 'hanzoai';

const api = new FlowApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postFlowRuns({ input: "<input>", session: "<session>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import FlowApi

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

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

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

let result = flow_api::post_flow_runs(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.FlowApi;

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

var result = new FlowApi(client).postFlowRuns();
curl -X POST https://api.hanzo.ai/v1/flow/runs \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "input": "<input>",
       "session": "<session>"
     }'

MCP reaches flow through the flow tool, which names its 8 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_flow_runs"
         }
       }
     }'

Flow API · All Hanzo APIs · Interactive reference

Was this page useful?