venice-api-keys
Manage Venice API keys. Covers GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits, GET…
Route a prompt to the right Venice text model based on privacy tier (anonymized / private / TEE / E2EE), modality (vision / audio / video input), capability (reasoning, reasoning effort, code, function calling, X search, large context, structured output), uncensored needs, and
$ npx -y skills add veniceai/skills --skill venice-text-routing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/venice-text-routingContext preview
The summary Claude sees to decide when to auto-load this skill.
Route a prompt to the right Venice text model based on privacy tier (anonymized / private / TEE / E2EE), modality (vision / audio / video input), capability (reasoning, reasoning effort, code, function calling, X search, large context, structured output), uncensored needs, and
name: venice-text-routing description: Route a prompt to the right Venice text model based on privacy tier (anonymized / private / TEE / E2EE), modality (vision / audio / video input), capability (reasoning, reasoning effort, code, function calling, X search, large context, structured output), uncensored needs, and cost. Use when a local agent (Claude Code, Hermes, NanoClaw, Codex CLI, etc.) needs to decide whether to handle a prompt locally or escalate to Venice, and if escalating, which Venice text model to call. Sits one level above venice-models (model discovery) and before venice-chat (the call surface).
This skill encodes the *decision logic* for "which Venice text model do I call?" — the routing layer that sits above [`venice-chat`](../venice-chat/SKILL.md) (the call surface) and consumes [`venice-models`](../venice-models/SKILL.md) (the discovery API).
Primary use case: a **local agent** receives a prompt, decides whether the local model can handle it, and — if not — picks the cheapest Venice model that satisfies the privacy / modality / capability requirements.
> Before applying the matrix below, read [`snapshots/text-routing.json`](snapshots/text-routing.json). If the file is missing, **or `snapshot_date` is older than 30 days**, run `python scripts/refresh_routing.py` to regenerate it from `GET /models?type=text` + `GET /models/traits?type=text`. Otherwise trust the cached file — do **not** hit `/models` on every routing decision.
`refresh_routing.py` rewrites both [`snapshots/text-routing.json`](snapshots/text-routing.json) and [`routing-matrix.md`](routing-matrix.md). Both endpoints are public, so no key is needed; `VENICE_API_KEY` / `--api-key` is optional and tailors the result to that key (a `modelPrivacy`-restricted key sees a filtered catalog). Run it once on first install, then ~monthly (CI nightly is also fine).
In the snapshot, each model's `privacy` label is `e2ee` when `supportsE2EE` is true, `tee` when only `supportsTeeAttestation` is true, and otherwise the model's own `private` / `anonymized` value (every TEE/E2EE model is `private` in `/models`, so treat `tee` and `e2ee` as private too); `tier` is bucketed by **input** price only; `beta_access` mirrors `model_spec.beta` (only listed to beta-access keys, so it is always `false` in the shipped keyless snapshot) and `beta_status` mirrors `model_spec.betaModel` (callable, but may change or disappear).
Per model the snapshot carries only: the 13 capability flags shown in the matrix, `max_images`, `available_context_tokens`, `max_completion_tokens`, input/output price per 1M, `beta_access`, `beta_status`, `offline`, `region_restrictions` and `deprecation_date`. Filters that need anything else (`uncensored`, `supportsLogProbs`, `reasoningEffortOptions`, `maxVideos`, `cache_input` / `extended` pricing, `replacementModelId`) have to read `GET /models?type=text`.
For the chat call surface itself, see [`venice-chat`](../venice-chat/SKILL.md). For raw discovery of every model field, see [`venice-models`](../venice-models/SKILL.md).
Pick the *least restrictive* tier that satisfies the request — restricting tier shrinks the candidate pool and often raises cost.
`model_spec.privacy` has only two values, `private` and `anonymized`. TEE and E2EE are capability flags on top of `private`.
| Tier | Selector (`GET /models`) | Guarantee | Use when | |---|---|---|---| | **Anonymized** | `privacy: "anonymized"` | Venice hides your identity from the upstream provider, but the provider may still see the prompt | Non-sensitive workloads; the only path to several closed frontier models (Claude, GPT, Gemini). | | **Private** | `privacy: "private"` | Zero data retention, contract-enforced: content is processed for inference only and not retained | Default for user data, business logic, anything you wouldn't paste into a public chatbot. | | **TEE** | `capabilities.supportsTeeAttestation: true` | Runs inside a hardware Trusted Execution Environment with remote attestation (`GET /api/v1/tee/attestation`) | Regulated data, verifiable/signed inference. | | **E2EE** | `capabilities.supportsE2EE: true` | TEE + client-side encryption (ECDH secp256k1 → HKDF-SHA256 → AES-256-GCM); Venice relays ciphertext only | Strongest. Healthcare, legal, secrets. Requires the E2EE flow in [`venice-chat`](../venice-chat/SKILL.md#e2ee-end-to-end-encryption). |
Today every listed TEE model is also E2EE-capable and uses an `e2ee-*` ID (e.g. `e2ee-glm-5-3-p`, `e2ee-kimi-k3-p`, `e2ee-qwen3-8-27b`). **TEE and E2EE use the same model ID**: send E2EE headers for E2EE, omit them (or set `venice_parameters.enable_e2ee: false`) for TEE-only. Legacy `tee-*` IDs are unlisted aliases of `e2ee-*` models — don't route on the prefix; use the capability flags.
E2EE trade-offs: on E2EE requests Venice injects no web search, scraping, character, or Venice system prompt, and `file` parts return `400`; the E2EE guide also requires `stream: true` and lists function calling as unsupported (`supportsFunctionCalling` describes the model, not E2EE mode). Several E2EE models also have small limits (e.g. `e2ee-qwen-2-5-7b-p`: 32K context, 4,096 output tokens). E2EE is **not** supported on `/responses`; TEE-only is (with `enable_e2ee: false`).
API keys can carry a `modelPrivacy` restriction: `PRIVATE_TEXT` (text, embedding and decision models must be Private, TEE, or E2EE) or `PRIVATE_ONLY` (every model). Such a key's `/models` list is already filtered; a disallowed model returns `403` — filter to `privacy: "private"` for such keys.
Sources: [docs.venice.ai/overview/pr
Agent Skills for the Venice API. Skills are self-contained folders of instructions (one SKILL.md each) that an LLM agent loads on demand to work correctly against a specific surface area of the API.
Manage Venice API keys. Covers GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits, GET…
High-level map of the Venice.ai API - base URL, which auth mode each endpoint accepts (API key, x402 wallet, or none), endpoint…
Async music, sound-effect and long-form voice generation via Venice. Covers the /audio/quote + /audio/queue + /audio/retrieve +…
Generate speech from text via POST /audio/speech, and clone a voice via POST /audio/voices. Covers TTS models (Kokoro, Qwen 3,…
Transcribe audio files to text via POST /audio/transcriptions. Covers supported models (Parakeet, Whisper, Wizper, Scribe, xAI…
Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and…