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 (beta) — typed blocks may include reasoning. No mode header → Venice’s default (OpenAI models use native OpenAI mode; Venice-only extras such as web search or characters still use the translated lane). This gateway does not inject a mode header. native requires OpenAI native or HTTP 400; compat opts into Venice’s translated format. Reply x-venice-responses-lane reports the lane. Input arrays may include additional_tools items to add tools mid-conversation. Native rejects previous_response_id, stored conversations, file IDs, OpenAI-side tools like file_search / code_interpreter. |
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. Quantity is variants (1–4); you pay for every image requested. |
POST /api/v1/images/generations | OpenAI-compatible JSON (created, data[]). Quantity is n (Venice max 1). |
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, optional images 1–4 PNG/JPEG data URIs or {content_type, base64}). 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 including kimi-k3-1-pro which reasons at max effort by default, 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
- Responses
inputarrays may include{ "type": "additional_tools" }items to add tools mid-conversation. Optional top-levelinstructions,tools(function / custom withnamespace/tool_search),tool_choiceby name, andreasoning.summary. Image parts acceptimage_url.detailauto|low|high|original. - Image generate: quantity is
variants(1–4), not OpenAIn. Charge = list unit × variants. You pay for every image requested. If Venice omits some variants for an explicit provider content-policy reject, the 200 still settles andx-venice-content-violation-count(forwarded) is the omitted count. A full-prompt 422ImageContentViolationError(retryable, optionalsuggested_prompt/recommended_model) is returned unpaid (settled: false). Also:enhance_prompt,style_references(only models withsupportsStyleReferences).safe_modedefaults true (turning it off does not require a Venice Pro subscription). Thex-venice-is-blurredresponse header reports whether the returned image was blurred. Optionaltransparent_background(native generate/edit/multi-edit) returns an alpha channel — only models withmodel_spec.constraints.supportsTransparentBackground=true, andformat/output_formatmust bepngorwebp. OpenAI-shaped/images/generationsusesn(Venice max 1) andbackground: transparent | opaque | autoinstead. Same unpaid 422 refusal. - Image edit:
enhance_prompt. Samesafe_mode/x-venice-is-blurredas generate. Same optionaltransparent_background(andoutput_formatpng/webp) as generate. - TTS:
response_formatmust be in that model’smodel_spec.supported_formats. - Video queue: prompt max is model-specific (up to 32000). Resolutions include
768pwhen that model’smodel_spec.constraints.resolutionslists it. Swagger now lists aspect2:1(still only valid when that model’smodel_spec.constraints.aspect_ratiosincludes it). Seedance 2.x reference-to-video: duration-1/autoand aspectadaptive/automatch the source; sendconsentswhen the model returnsneeds_consent. MiniMax H3 Max Recast (minimax-h3-max-recast) lists durationAutoonly —auto/-1are accepted.bitrate_modeis not in current Venice swagger — omit it.