Hanzo AI

AI

Hanzo AI — the model API on /v1 (/v1/chat/completions, /v1/messages, /v1/models and the rest of hanzoai/ai's surface) — mounted into a cloud binary with the money, ingest and telemetry callbacks…

Also for this capability: API · CLI · MCP · SDKs

Hanzo AI — the model API on /v1 (/v1/chat/completions, /v1/messages, /v1/models and the rest of hanzoai/ai's surface) — mounted into a cloud binary with the money, ingest and telemetry callbacks cloud BUILDS but cannot INSTALL.

Base URLhttps://api.hanzo.ai
Operations294
AuthAuthorization: Bearer $HANZO_API_KEY

Specification

HIP-1211 · AI — The Model API — Draft · read the specification →

ai is the model API: the OpenAI- and Anthropic-compatible wire and the routing, memory, retrieval and fine-tuning surfaces behind it. The implementation is the hanzoai/ai module, mounted into a cloud binary by hanzoai/cloud apps/ai with the money, ingest and telemetry callbacks cloud builds but cannot install (apps/ai/ai.go:1-17). This HIP states the target address surface: the wire family at the root, everything else under /v1/ai.

Motivation

The module registers one greedy /v1/* door and the manifest hands it the /v1 remainder (manifest/apps.go:444), which is how a dozen satellite roots — router, memory, rag and their compatibility twins — came to answer beside the wire under names nobody would call a product. The document now comes from the module's own router (apps/ai/ai.go:75-90), so the surface is honest about what it is; this HIP settles which of those roots are the capability's and which are gone.

Specification

The key words MUST, MUST NOT, SHOULD, SHOULD NOT and MAY are to be interpreted as in RFC 2119.

The wire family stays at the root

The vendor-compatible wire — /v1/chat/completions, /v1/completions, /v1/embeddings, /v1/messages, /v1/models, /v1/images/*, /v1/audio/*, /v1/videos/*, /v1/responses, /v1/rerank — is fixed by the protocol every vendor SDK hard-codes, is exempt by HIP-0139 §3.2, and belongs to ai and to no other capability. It MUST NOT move.

Everything else answers under /v1/ai

Six satellite roots fold under the capability's own name, each an HTTP binding of the module's handlers with no store of its own in cloud: the routing policy/stats/rewards surface (/v1/ai/router), the org's routing settings (/v1/ai/org/settings), fine-tuning jobs — the module's TrainJob broker — (/v1/ai/finetune), per-user memories (/v1/ai/memory), the RAG surface (/v1/ai/rag: embed, query, delete, context, and ingest — /v1/docs/ingest writes the same index the query reads, so it folds to /v1/ai/rag/ingest rather than minting a second root), the per-request routing reward (/v1/ai/feedback), and the public geo aggregate of request traffic (/v1/ai/traffic).

Six roots are deleted, not moved: /v1/documents and /v1/query and /v1/query_multiple are compatibility spellings of routes that already exist under rag; /v1/dev-bridge is desktop tooling that spawns a local child process; /v1/install-patch is a device-management remnant; /v1/wecom-bot is a bot channel that belongs to bots if it is ever productized. There is no alias for any of them. Today's router still serves each satellite at its old root out of the /v1 remainder; every such pair is a line in hanzoai/cloud openapi/misfiled.txt until the fold lands. The route moves land in the hanzoai/ai module, where the router lives (routers/wired_gen.go).

The document is the module's own, read out of the pinned module at describe time (apps/ai/ai.go:39-71); operations answer the module's envelope, whose data stays untyped here because per-operation bodies are typing work in the module that owns the handlers.

Tenancy, money and the count

The capability owns no store in cloud; all state lives behind the hanzoai/ai module. A request's tenant is the validated principal's org, and every debit and count is keyed by that namespace and never by a body field. Metering is per served call, self-reported by the module's one usage hook: a priced call debits its dollar cost over the internal plane to the commerce ledger, with the idempotency ref minted server-side per debit so a caller-supplied id can never dedupe a second answer into a first (apps/ai/ai.go:195-215); a free call counts once against its subject's plan allowance, and both halves always run (apps/ai/ai.go:229-256). The plugin declares Price: cloud.Metered (plugin/ai/main.go:43).

Events and observability

It publishes no events on the tenant bus, so a customer's webhooks receive nothing from this capability. It emits the gen_ai span family for every completion, through the host's one tracer provider — adopted at mount so the module cannot fork a second, dark provider (apps/ai/ai.go:271-287).

Stage

ga, and the row is marked Vital (manifest/apps.go:444).

Upstreams

The capability embeds github.com/hanzoai/ai v1.833.106 (Apache-2.0), which is the whole implementation — router, wire, memory, rag, finetune. The OpenAI and Anthropic wire shapes are implemented formats, not embedded code. Nothing else here derives from an OSS upstream.

Rationale

The alternative for the satellites was to keep them where SDK compatibility put them and describe the exceptions. But the exemption in HIP-0139 §3.2 is exactly as wide as the protocol: the wire paths are hard-coded in vendor SDKs and the satellites are not — LangChain-era twins and device-management remnants have no SDK pinning them, so they take the ordinary rule. Folding rather than splitting follows from the store: there is none in cloud, so §7.1's default applies to every pair.

Security Considerations

The wrong implementation here is free inference and mis-billed inference. The debit path is the guard on both: the charge is keyed to the validated namespace, the ref is server-minted (a client-controlled ref let one pinned owner/name pair dedupe every later completion into the first one's entry — apps/ai/ai.go:184-193), and the free-call count runs even when the debit fails, so neither leg's failure opens the other. Deleting the compatibility roots is also a security act: each was an unowned door into the same index the canonical routes guard.

Four surfaces

SurfaceReaches this capability asCoverage
RESTai at its own prefix294 operations
CLIhanzo ai …294 of 294
SDKAiApi in every published client258 of 294 — the clients are generated at their own release
MCPtool ai on https://api.hanzo.ai/v1/mcp294 operations, 8 under the document's own id — ask describe for the rest

Quickstart

export HANZO_API_KEY=sk-...   # console.hanzo.ai → API keys

Then the first call — a read that needs nothing but the key. GET /v1/models, operation get_models:

hanzo models list

Endpoints

EndpointWhat it does
GET /v1/ai/accountAccount
GET /v1/ai/activitiesList activities
GET /v1/ai/answerAnswer
GET /v1/ai/articles/{owner}/{name}Retrieve a article
PUT /v1/ai/articles/{owner}/{name}Replace a article
PATCH /v1/ai/articles/{owner}/{name}Update a article
DELETE /v1/ai/articles/{owner}/{name}Delete a article
GET /v1/ai/articles/globalList articles across tenants
GET /v1/ai/articlesList articles
POST /v1/ai/articlesCreate a article
POST /v1/ai/assets/{owner}/{name}/scanScan (asset)
GET /v1/ai/assets/{owner}/{name}Retrieve a asset
PUT /v1/ai/assets/{owner}/{name}Replace a asset
PATCH /v1/ai/assets/{owner}/{name}Update a asset
DELETE /v1/ai/assets/{owner}/{name}Delete a asset
POST /v1/ai/assets/scanScan (asset)
GET /v1/ai/assetsList assets
POST /v1/ai/assetsCreate a asset
GET /v1/ai/chats/{owner}/{name}Retrieve a chat
PUT /v1/ai/chats/{owner}/{name}Replace a chat
PATCH /v1/ai/chats/{owner}/{name}Update a chat
DELETE /v1/ai/chats/{owner}/{name}Delete a chat
GET /v1/ai/chats/globalList chats across tenants
GET /v1/ai/chatsList chats
POST /v1/ai/chatsCreate a chat
GET /v1/ai/connections/{provider}/authorizeBegins an OAuth connection for the caller's org: it binds the org into a signed state and sends the caller to the provider's authorize URL.
GET /v1/ai/connections/{provider}/callbackCompletes OAuth: the org is recovered from the SIGNED state (not a header), the code is exchanged for a token, the token is SEALED into KMS (never…
GET /v1/ai/connections/{provider}/usageImports the caller org's usage for a connected third-party account.
POST /v1/ai/connections/{provider}Disconnects a third-party AI account: it deactivates the org's row so completion resolution falls back to the global Hanzo account (no BYO), and…
DELETE /v1/ai/connections/{provider}Disconnects a third-party AI account: it deactivates the org's row so completion resolution falls back to the global Hanzo account (no BYO), and…
GET /v1/ai/connectionsLists the org's connectable AI accounts and whether each is currently connected.
POST /v1/ai/connectionsConnects (or reconnects) a third-party AI account for the org by sealing the supplied key into KMS and upserting the org's provider row.
GET /v1/ai/dashboards/agentsDashboards Agents
GET /v1/ai/dashboards/vmDashboards Vm
POST /v1/ai/deployments/{owner}/{name}/deployDeploy (application)
POST /v1/ai/deployments/{owner}/{name}/undeployUndeploy (application)
GET /v1/ai/deployments/{owner}/{name}Retrieve a application
PUT /v1/ai/deployments/{owner}/{name}Replace a application
PATCH /v1/ai/deployments/{owner}/{name}Update a application
DELETE /v1/ai/deployments/{owner}/{name}Delete a application
GET /v1/ai/deploymentsList deployments
POST /v1/ai/deploymentsCreate a application
POST /v1/ai/feedbackAttaches a per-request outcome reward to the routing decision that served request_id — the enso training loop's quality signal.
POST /v1/ai/files/{owner}/{name}/vectorsVectors (file)
GET /v1/ai/files/{owner}/{name}Retrieve a file
PUT /v1/ai/files/{owner}/{name}Replace a file
PATCH /v1/ai/files/{owner}/{name}Update a file
DELETE /v1/ai/files/{owner}/{name}Delete a file
POST /v1/ai/files/activateActivate (file)
GET /v1/ai/files/activeActive (file)
GET /v1/ai/files/globalList files across tenants
POST /v1/ai/files/uploadUpload (file)
GET /v1/ai/filesList files
POST /v1/ai/filesCreate a file
POST /v1/ai/finetune/cancelDeletes the TrainJob CR, meters the GPU-hours used so far, and marks the job cancelled.
POST /v1/ai/finetune/deployServes a completed job's checkpoints and registers the result as a routable model on api.hanzo.ai.
GET /v1/ai/finetune/hf/datasetsProxies a HuggingFace dataset search (dataset picker).
GET /v1/ai/finetune/hf/modelsProxies a HuggingFace model search (base-model picker).
GET /v1/ai/finetune/hf/repoReturns a repo's detail (files, gated/private state).
GET /v1/ai/finetune/jobReturns one job with refreshed live status.
GET /v1/ai/finetune/jobsReturns the org's jobs, refreshing live status for active ones.
POST /v1/ai/finetune/jobsValidates the request, resolves efficient defaults, persists the job, and submits a real TrainJob CR.
GET /v1/ai/finetune/presetsReturns the new-job catalog plus, when a selection is passed (?baseModel&method&task&preset[&datasetExamples]), the recommended config so the console…
GET /v1/ai/forms/{owner}/{name}Retrieve a form
PUT /v1/ai/forms/{owner}/{name}Replace a form
PATCH /v1/ai/forms/{owner}/{name}Update a form
DELETE /v1/ai/forms/{owner}/{name}Delete a form
GET /v1/ai/forms/dataData (form)
GET /v1/ai/forms/globalList forms across tenants
GET /v1/ai/formsList forms
POST /v1/ai/formsCreate a form
GET /v1/ai/graphs/{owner}/{name}Retrieve a graph
PUT /v1/ai/graphs/{owner}/{name}Replace a graph
PATCH /v1/ai/graphs/{owner}/{name}Update a graph
DELETE /v1/ai/graphs/{owner}/{name}Delete a graph
GET /v1/ai/graphs/globalList graphs across tenants
GET /v1/ai/graphsList graphs
POST /v1/ai/graphsCreate a graph
GET /v1/ai/k8s-statusK8s Status
GET /v1/ai/mcp/toolsTools reports what THIS PROCESS's MCP server carries: how many tools its own registry projects, optionally their names, and which subsystems this…
POST /v1/ai/memory/deleteDelete one of the authenticated user's memories
GET /v1/ai/memory/factsList the authenticated user's stored facts
GET /v1/ai/memory/listList the authenticated user's memories, newest first
GET /v1/ai/memory/recallRecall recent/relevant memories for context injection; with q it
POST /v1/ai/memory/rememberStore a memory for the authenticated user
GET /v1/ai/memory/searchSearch the authenticated user's memories (semantic, text fallback)
POST /v1/ai/memory/updateUpdate one of the authenticated user's memories
GET /v1/ai/messages/{owner}/{name}/answerAnswer (message)
GET /v1/ai/messages/{owner}/{name}Retrieve a message
PUT /v1/ai/messages/{owner}/{name}Replace a message
PATCH /v1/ai/messages/{owner}/{name}Update a message
DELETE /v1/ai/messages/{owner}/{name}Delete a message
GET /v1/ai/messages/globalList messages across tenants
DELETE /v1/ai/messages/welcomeWelcome (message)
GET /v1/ai/messagesList messages
POST /v1/ai/messagesCreate a message
GET /v1/ai/nodes/{owner}/{name}/tunnelTunnel (node)
POST /v1/ai/nodes/{owner}/{name}/tunnelTunnel (node)
GET /v1/ai/nodes/{owner}/{name}Retrieve a node
PUT /v1/ai/nodes/{owner}/{name}Replace a node
PATCH /v1/ai/nodes/{owner}/{name}Update a node
DELETE /v1/ai/nodes/{owner}/{name}Delete a node
GET /v1/ai/nodesList nodes
POST /v1/ai/nodesCreate a node
GET /v1/ai/org/settings/listThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/org/settings/listThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/org/settings/listThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/org/settings/listThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/org/settings/listThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
GET /v1/ai/org/settingsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/org/settingsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/org/settingsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/org/settingsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/org/settingsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/preferencesPreferences
PATCH /v1/ai/preferencesPreferences
GET /v1/ai/prometheusPrometheus
GET /v1/ai/providers/{owner}/{name}Retrieve a provider
PUT /v1/ai/providers/{owner}/{name}Replace a provider
PATCH /v1/ai/providers/{owner}/{name}Update a provider
DELETE /v1/ai/providers/{owner}/{name}Delete a provider
GET /v1/ai/providers/globalList providers across tenants
POST /v1/ai/providers/mcp-toolsMcp Tools (provider)
GET /v1/ai/providersList providers
POST /v1/ai/providersCreate a provider
GET /v1/ai/rag/contextReturn every stored chunk of one file_id (full document context).
POST /v1/ai/rag/deleteDelete all chunks of one or more uploaded files (by file_id) from the owner's Search+Vector index.
POST /v1/ai/rag/embedParse, chunk, and embed one uploaded file under its file_id into the unified Search+Vector index, scoped to the authenticated owner.
POST /v1/ai/rag/ingestUnified RAG ingest: parse + chunk + embed documents and pipe them to BOTH Hanzo Vector (semantic) AND Hanzo Search (keyword) under the tenant index…
POST /v1/ai/rag/query-multipleRetrieve the top-K chunks relevant to a query, scoped to a SET of uploaded files (file_ids).
POST /v1/ai/rag/queryRetrieve the top-K chunks relevant to a query, scoped to a single uploaded file (file_id).
GET /v1/ai/records/{owner}/{name}Retrieve a record
PUT /v1/ai/records/{owner}/{name}Replace a record
PATCH /v1/ai/records/{owner}/{name}Update a record
DELETE /v1/ai/records/{owner}/{name}Delete a record
POST /v1/ai/records/batchBatch (record)
POST /v1/ai/records/commit-secondCommit Second (record)
POST /v1/ai/records/commitCommit (record)
GET /v1/ai/records/query-secondQuery Second (record)
GET /v1/ai/records/queryQuery (record)
GET /v1/ai/recordsList records
POST /v1/ai/recordsCreate a record
POST /v1/ai/remote-connections/{owner}/{name}/startStart (connection)
POST /v1/ai/remote-connections/{owner}/{name}/stopStop (connection)
GET /v1/ai/remote-connections/{owner}/{name}Retrieve a connection
PUT /v1/ai/remote-connections/{owner}/{name}Replace a connection
PATCH /v1/ai/remote-connections/{owner}/{name}Update a connection
DELETE /v1/ai/remote-connections/{owner}/{name}Delete a connection
GET /v1/ai/remote-connectionsList remote-connections
POST /v1/ai/remote-connectionsCreate a connection
GET /v1/ai/router/artifact-metaThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/router/artifact-metaThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/router/artifact-metaThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/router/artifact-metaThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/router/artifact-metaThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
GET /v1/ai/router/dataRouter Data
DELETE /v1/ai/router/dataRouter Data
GET /v1/ai/router/defaultsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/router/defaultsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/router/defaultsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/router/defaultsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/router/defaultsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
GET /v1/ai/router/historyReturns the router-improvement time-series.
GET /v1/ai/router/judge-panelReturns the LIVE Mean-Field Judge Panel state: the configured panel + dynamic judge posture (enabled/sample) resolved from the "*" GlobalDefaultOwner…
GET /v1/ai/router/ledgerThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/router/ledgerThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/router/ledgerThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/router/ledgerThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/router/ledgerThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
GET /v1/ai/router/policyThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/router/policyThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/router/policyThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/router/policyThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/router/policyThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
GET /v1/ai/router/rewardsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
POST /v1/ai/router/rewardsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PUT /v1/ai/router/rewardsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
PATCH /v1/ai/router/rewardsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
DELETE /v1/ai/router/rewardsThe HTTP transport binding for the RESTful router-config nouns (/v1/ai/router/{policy,defaults,ledger,rewards,artifact-meta} and…
GET /v1/ai/router/statsReturns the router observability aggregate.
GET /v1/ai/routes/{owner}/{name}Retrieve a model-route
PUT /v1/ai/routes/{owner}/{name}Replace a model-route
PATCH /v1/ai/routes/{owner}/{name}Update a model-route
DELETE /v1/ai/routes/{owner}/{name}Delete a model-route
GET /v1/ai/routesList routes
POST /v1/ai/routesCreate a model-route
GET /v1/ai/scales/{owner}/{name}Retrieve a scale
PUT /v1/ai/scales/{owner}/{name}Replace a scale
PATCH /v1/ai/scales/{owner}/{name}Update a scale
DELETE /v1/ai/scales/{owner}/{name}Delete a scale
GET /v1/ai/scales/globalList scales across tenants
GET /v1/ai/scales/publicPublic (scale)
GET /v1/ai/scalesList scales
POST /v1/ai/scalesCreate a scale
GET /v1/ai/scans/{owner}/{name}Retrieve a scan
PUT /v1/ai/scans/{owner}/{name}Replace a scan
PATCH /v1/ai/scans/{owner}/{name}Update a scan
DELETE /v1/ai/scans/{owner}/{name}Delete a scan
GET /v1/ai/scansList scans
POST /v1/ai/scansCreate a scan
GET /v1/ai/signin-sessions/{owner}/{name}Retrieve a session
PUT /v1/ai/signin-sessions/{owner}/{name}Replace a session
PATCH /v1/ai/signin-sessions/{owner}/{name}Update a session
DELETE /v1/ai/signin-sessions/{owner}/{name}Delete a session
GET /v1/ai/signin-sessions/duplicatedDuplicated (session)
GET /v1/ai/signin-sessionsList signin-sessions
POST /v1/ai/signin-sessionsCreate a session
POST /v1/ai/signinSignin
POST /v1/ai/signoutSignout
POST /v1/ai/stores/{owner}/{name}/vectorsVectors (store)
GET /v1/ai/stores/{owner}/{name}Retrieve a store
PUT /v1/ai/stores/{owner}/{name}Replace a store
PATCH /v1/ai/stores/{owner}/{name}Update a store
DELETE /v1/ai/stores/{owner}/{name}Delete a store
GET /v1/ai/stores/globalList stores across tenants
GET /v1/ai/stores/namesNames (store)
GET /v1/ai/stores/providersProviders (store)
GET /v1/ai/storesList stores
POST /v1/ai/storesCreate a store
GET /v1/ai/systemSystem
POST /v1/ai/tasks/{owner}/{name}/analyzeAnalyze (task)
POST /v1/ai/tasks/{owner}/{name}/documentDocument (task)
GET /v1/ai/tasks/{owner}/{name}Retrieve a task
PUT /v1/ai/tasks/{owner}/{name}Replace a task
PATCH /v1/ai/tasks/{owner}/{name}Update a task
DELETE /v1/ai/tasks/{owner}/{name}Delete a task
GET /v1/ai/tasks/globalList tasks across tenants
GET /v1/ai/tasksList tasks
POST /v1/ai/tasksCreate a task
GET /v1/ai/templates/{owner}/{name}Retrieve a template
PUT /v1/ai/templates/{owner}/{name}Replace a template
PATCH /v1/ai/templates/{owner}/{name}Update a template
DELETE /v1/ai/templates/{owner}/{name}Delete a template
GET /v1/ai/templatesList templates
POST /v1/ai/templatesCreate a template
GET /v1/ai/traffic/globeReturns the PUBLIC live request-geo aggregate for the world.hanzo.ai "Hanzo mode" globe: WHERE requests to api.hanzo.ai are coming from, as…
GET /v1/ai/training-contributionTraining Contribution
PUT /v1/ai/training-contributionTraining Contribution
PATCH /v1/ai/training-contributionTraining Contribution
PUT /v1/ai/tree-files/{owner}/{name}Replace a tree-file
PATCH /v1/ai/tree-files/{owner}/{name}Update a tree-file
DELETE /v1/ai/tree-files/{owner}/{name}Delete a tree-file
POST /v1/ai/tree-filesCreate a tree-file
GET /v1/ai/usages/by-userBy User (usage)
GET /v1/ai/usages/cloudCloud (usage)
GET /v1/ai/usages/rangeRange (usage)
GET /v1/ai/usages/user-namesUser Names (usage)
GET /v1/ai/usagesList usages
GET /v1/ai/vectors/{owner}/{name}Retrieve a vector
PUT /v1/ai/vectors/{owner}/{name}Replace a vector
PATCH /v1/ai/vectors/{owner}/{name}Update a vector
DELETE /v1/ai/vectors/{owner}/{name}Delete a vector
DELETE /v1/ai/vectors/allAll (vector)
GET /v1/ai/vectors/globalList vectors across tenants
GET /v1/ai/vectorsList vectors
POST /v1/ai/vectorsCreate a vector
GET /v1/ai/versionVersion
GET /v1/ai/videos/{owner}/{name}Retrieve a video
PUT /v1/ai/videos/{owner}/{name}Replace a video
PATCH /v1/ai/videos/{owner}/{name}Update a video
DELETE /v1/ai/videos/{owner}/{name}Delete a video
GET /v1/ai/videos/globalList videos across tenants
POST /v1/ai/videos/uploadUpload (video)
GET /v1/ai/videosList videos
POST /v1/ai/videosCreate a video
GET /v1/ai/workflows/{owner}/{name}Retrieve a workflow
PUT /v1/ai/workflows/{owner}/{name}Replace a workflow
PATCH /v1/ai/workflows/{owner}/{name}Update a workflow
DELETE /v1/ai/workflows/{owner}/{name}Delete a workflow
GET /v1/ai/workflows/globalList workflows across tenants
GET /v1/ai/workflowsList workflows
POST /v1/ai/workflowsCreate a workflow
POST /v1/audio/foleyServes the generative audio verbs — /v1/audio/voice (TTS), /music, /foley — that the Zen family serves natively.
POST /v1/audio/musicServes the generative audio verbs — /v1/audio/voice (TTS), /music, /foley — that the Zen family serves natively.
POST /v1/audio/speechThe OpenAI-compatible TTS endpoint (POST /v1/audio/speech).
POST /v1/audio/transcriptionsThe OpenAI-compatible STT endpoint (POST /v1/audio/transcriptions, multipart: file + model [+ language + response_format]).
POST /v1/audio/voiceServes the generative audio verbs — /v1/audio/voice (TTS), /music, /foley — that the Zen family serves natively.
POST /v1/chat/completionsImplements the OpenAI-compatible chat completions API
POST /v1/chat/publicServes one completion to a caller with no account.
POST /v1/chatImplements the OpenAI-compatible chat completions API
POST /v1/completionsImplements the OpenAI-compatible chat completions API
POST /v1/embeddingsImplements POST /v1/embeddings (OpenAI-compatible).
POST /v1/images/generationsImplements POST /v1/images/generations (OpenAI-compatible).
POST /v1/messages/count_tokensImplements POST /v1/messages/count_tokens.
POST /v1/messagesImplements the Anthropic Messages API.
GET /v1/models/{model}/accessReturns the caller's own standing for a gated model: "granted", "requested", or empty when they have never asked.
POST /v1/models/{model}/accessRecords the caller's waitlist request for a gated model and answers their new standing.
GET /v1/models/providersPublic, secret-free list of the providers serving the models that GET /v1/models lists — the same source, projected.
GET /v1/modelsReturns the list of available models from the routing table.
POST /v1/rerankImplements POST /v1/rerank (Cohere/Jina-compatible).
POST /v1/responsesImplements POST /v1/responses.
GET /v1/videos/{id}/contentImplements GET /v1/videos/{id}/content — download the finished MP4.
GET /v1/videos/{id}Implements GET /v1/videos/{id} — poll a job's status.
POST /v1/videos/generationsImplements POST /v1/videos/generations — the ASYNC create.

All Hanzo APIs · Interactive reference

How is this guide?