- Context reach
- 33K
- In
- $0.021per million tokens
- Out
- Freeper million tokens
Hanzo · Enterprise
kaiShipping today
In$0.021
OutFree
Identity
- Model ID
- kai
- Checkpoint
- kai-1.3 (pin @551f1990…)
- Parameters
- ~850M (multimodal decision architecture)
- Endpoint
- POST /v1/decisions
- Architecture
- Proprietary Decision Transformer + factorized cross-attention
- Safety qualification
- Not yet qualified: a sealed evaluation is being authored
Limits
- Latency (GPU)
- <1 ms p50 (one question, CUDA bf16)
- Context reach
- 32,768 tokens (YaRN; trained: 1,024)
- Output tokens
- 0 (typed probability distribution)
Price
- Price
- $0.021 in · Free out, per million tokens
Modalities
- Modality
- Text and structured state
In development
Kai-2 target
- Parameters
- ~850M (text, vision, audio, video)
- Resident memory
- Under 2.0 GiB
- Text latency
- <1 ms p50 (GPU), multi-pass adaptive refinement
- Image latency
- 360–400 ms (image + text state)
- Encoders
- Vision · Audio · Video
- Reasoning
- reasoning: "auto" | "fast" | "deep"
Quick start
kai
$0.021 in · Free out, per million tokens. A native decision writes 0 output tokens; a decision Jev or a language model answers bills at that model’s rates, output included.
// npm install hanzoai
import { AiApi, Configuration } from 'hanzoai'
const ai = new AiApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }))
const { data: decision } = await ai.postDecisions({
aiDecisionsRequest: {
model: 'kai',
state: { incident: 'checkout 5xx at 14%' },
questions: {
severity: {
type: 'choice',
instructions: 'How severe is this incident?',
criteria: {
low: 'cosmetic or internal; no customer is affected',
high: 'some customers are blocked from finishing a task',
critical: 'every customer is blocked and no revenue comes in',
},
},
},
},
})
const { choice, probabilities } = decision.answers.severity
console.log(choice, probabilities)
# pip install hanzoai
import os
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import AiApi
from hanzoai.cloud.models.ai_decisions_request import AiDecisionsRequest
ai = AiApi(ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"])))
decision = ai.post_decisions(AiDecisionsRequest.from_dict({
"model": "kai",
"state": {"incident": "checkout 5xx at 14%"},
"questions": {
"severity": {
"type": "choice",
"instructions": "How severe is this incident?",
"criteria": {
"low": "cosmetic or internal; no customer is affected",
"high": "some customers are blocked from finishing a task",
"critical": "every customer is blocked and no revenue comes in",
},
},
},
}))
severity = decision.answers["severity"]
print(severity.choice, severity.probabilities)
curl -sS --fail-with-body https://api.hanzo.ai/v1/decisions \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kai",
"state": { "incident": "checkout 5xx at 14%" },
"questions": {
"severity": {
"type": "choice",
"instructions": "How severe is this incident?",
"criteria": {
"low": "cosmetic or internal; no customer is affected",
"high": "some customers are blocked from finishing a task",
"critical": "every customer is blocked and no revenue comes in"
}
}
}
}'
// net/http: the Go SDK refuses a choice question with named criteria.
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
func main() {
if err := run(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func run() error {
body, err := json.Marshal(map[string]any{
"model": "kai",
"state": map[string]string{"incident": "checkout 5xx at 14%"},
"questions": map[string]any{
"severity": map[string]any{
"type": "choice",
"instructions": "How severe is this incident?",
"criteria": map[string]string{
"low": "cosmetic or internal; no customer is affected",
"high": "some customers are blocked from finishing a task",
"critical": "every customer is blocked and no revenue comes in",
},
},
},
})
if err != nil {
return err
}
req, err := http.NewRequest("POST", "https://api.hanzo.ai/v1/decisions", bytes.NewReader(body))
if err != nil {
return err
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
out, err := io.ReadAll(resp.Body)
if err != nil {
return err
}
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("HTTP %d: %s", resp.StatusCode, out)
}
var decision struct {
Answers map[string]struct {
Choice string `json:"choice"`
Probabilities map[string]float64 `json:"probabilities"`
} `json:"answers"`
}
if err := json.Unmarshal(out, &decision); err != nil {
return err
}
severity := decision.Answers["severity"]
fmt.Println(severity.Choice, severity.Probabilities)
return nil
}
Limits
- Reads text and structured state. Images, audio and video are the Kai-2 target.
- Reaches 32,768 tokens by position; accuracy at that length is qualified for kai-1.4 and kai-1.5 only.
- At most 100 questions a request. More questions, or a state past 32,768 tokens, is refused with 422.
- The reasoning field is the Kai-2 target: the API refuses it today (400).
More from Hanzo
View all Hanzo models →$0.21Bill a month
enso-free is free at this volume.
Kai$0.2133K
enso-free$01M
- Kai (kai-1.8) Hanzo Kai is a structured decision model answering typed questions at /v1/decisions with calibrated probabilities and zero output tokens. Full multimodal decision architecture (~850M parameters, 32K reach); native vision and audio towers: Kai-2 target.
- Zen Embedding Dense text embeddings for semantic search, retrieval, and clustering.
- Zen Guard — Content Safety Safety classifier for moderation and guardrails across a broad category and language set.
- zen-embedding-3
- enso-free
- 1M