Sync routes
One HTTP round-trip after payment. Paths mirror Venice under /api/v1/*.
| Path | Notes |
|---|---|
POST /api/v1/chat/completions | model, messages; optional stream. Reasoning models: see below |
POST /api/v1/responses | Responses API (alpha) — typed blocks may include reasoning |
POST /api/v1/embeddings | model, input |
POST /api/v1/image/generate | Venice native image gen — JSON { id, images[], request, timing } (base64, often webp). Not raw PNG. |
POST /api/v1/images/generations | OpenAI-compatible JSON (created, data[]) |
POST /api/v1/image/edit | Single-image edit — often returns raw image/png |
POST /api/v1/image/multi-edit | Multi-image edit (modelId); often raw PNG |
POST /api/v1/image/upscale | Upscale — often raw PNG |
POST /api/v1/image/background-remove | No model in body; often raw PNG |
POST /api/v1/audio/speech | Short TTS — often raw audio/* |
POST /api/v1/audio/transcriptions | ASR — multipart (model + file) |
POST /api/v1/audio/voices | Voice clone — multipart: exact catalog model + sample file |
POST /api/v1/video/transcriptions | Retired (HTTP 410, no charge). Use chat/completions + video_url on a supportsVideoInput model |
POST /api/v1/augment/search | Web search |
POST /api/v1/augment/scrape | Scrape URL |
POST /api/v1/augment/text-parser | Parse PDF/DOCX/etc. |
POST /api/v1/crypto/rpc/{network} | JSON-RPC; pick network from free networks list |
POST /api/v1/decisions | Typed judgments (state, model, questions). Catalog ?type=decision (e.g. jev-latest). Beta |
POST /api/v1/systemone | Alias of /decisions for TypeSafe / SystemOne SDKs |
Request bodies follow Venice / OpenAPI schemas. model must be an exact id from GET /api/v1/models (or resolved via /models/traits). Prefer the cheapest suitable model unless the user asks otherwise.
200 response shapes are recorded from live probes (outputFixtures) and stamped onto OpenAPI responses.200 / Bazaar info.output. Do not invent field names. Observed JSON (not exhaustive):
| Path | Body keys (live) |
|---|---|
audio/transcriptions | text (optional duration) |
audio/voices | id, model — not voice_id |
augment/scrape | url, content, format |
augment/text-parser | text, tokens — not pages |
video/transcriptions | transcript, lang |
chat/completions | OpenAI chat envelope; thinking models may leave content empty (see below). May include venice_parameters, cost. |
Edit / upscale / background-remove / audio/speech → raw binary (image/png or audio/*).
Reasoning / thinking models
Venice thinking models (e.g. GLM, Kimi, Claude Opus, GPT-5.4 Pro variants) may return more than choices[0].message.content:
| Field | Meaning |
|---|---|
message.content | Final assistant text (may be "") |
message.reasoning_content | Chain-of-thought text when thinking is visible |
message.reasoning_details | Structured thought signatures — round-trip unchanged on the next turn for tool use |
Do not treat empty content alone as failure. If reasoning_content or reasoning_details is present, the completion succeeded. With a small max_tokens / max_completion_tokens, thinking can consume the whole budget (finish_reason: "length") and leave content empty.
Controls (request venice_parameters):
| Param | Effect |
|---|---|
disable_thinking: true | Skip chain-of-thought; force a normal content reply |
strip_thinking_response: true | Run thinking server-side but hide it from the client |
Example — smoke / ping that always wants visible text:
{
"model": "zai-org-glm-5-2",
"messages": [{ "role": "user", "content": "ping" }],
"max_tokens": 128,
"venice_parameters": { "disable_thinking": true }
}For long music/video/Voice Changer jobs, use the async lifecycle instead of sync TTS.
Notable request fields
- Image generate:
enhance_prompt,style_references(only models withsupportsStyleReferences). - Image edit:
enhance_prompt. - TTS:
response_formatmust be in that model’smodel_spec.supported_formats. - Video queue: prompt max is model-specific (up to 20000). Seedance 2.x reference-to-video: duration
-1/autoand aspectadaptive/automatch the source; sendconsentswhen the model returnsneeds_consent.bitrate_modeis not in current Venice swagger — omit it.