Skip to content
Skill Authoring
Skill

/venice-text-routing

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

BOOST
From plugin
venice
15422 skills
Install
$ npx -y skills add veniceai/skills --skill venice-text-routing --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/venice-text-routing

Context 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

SKILL.md

venice-text-routing.SKILL.md
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).

Venice Text-Model Routing

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.

Snapshot freshness

> 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`.

When to load this skill

  • Picking a Venice text model from a prompt at runtime.
  • Building a local-first agent that escalates to Venice for hard prompts.
  • Deciding privacy tier (anonymized vs private vs TEE vs E2EE).
  • Choosing between a trait shortcut (`default_reasoning`, `most_intelligent`, …) and a hand-filtered candidate.

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).

Privacy tier ladder

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

Read more
Ships withvenice

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.

Get the whole plugin

Other skills on venice.