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 | YouTube { url } (optional duration_seconds for pricing only) |
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 |
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-4.7",
"messages": [{ "role": "user", "content": "ping" }],
"max_tokens": 128,
"venice_parameters": { "disable_thinking": true }
}For long music/video generation, use the async lifecycle instead of sync TTS.