OpenCodex Proxy Operations
lidge-jun/opencodex
Operates an opencodex (`ocx`) proxy: finds CLI tasks offline, checks local configuration, and manages accounts, providers, models, routing and usage reports.
Documents Venice's model discovery endpoints, GET /models, /models/traits and /models/compatibility_mapping, so an agent can pick a model by capability, constraint or price.
$ npx skills add veniceai/skills --skill venice-models -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install veniceai/skills venice-models --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/venice-models .claude/skills/venice-models && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "venice-models" agent skill from https://github.com/veniceai/skills/tree/main/skills/venice-models into .claude/skills/venice-models/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "venice-models", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/veniceai/skills/tree/main/skills/venice-modelsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add veniceai/skills --skill venice-models -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install veniceai/skills venice-models --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/venice-models .agents/skills/venice-models && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "venice-models" agent skill from https://github.com/veniceai/skills/tree/main/skills/venice-models into .agents/skills/venice-models/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "venice-models", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add veniceai/skills --skill venice-models -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install veniceai/skills venice-models --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/venice-models .cursor/skills/venice-models && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "venice-models" agent skill from https://github.com/veniceai/skills/tree/main/skills/venice-models into .cursor/skills/venice-models/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "venice-models", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/veniceai/skills.git --path skills/venice-models--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add veniceai/skills --skill venice-models -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install veniceai/skills venice-models --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/venice-models .gemini/skills/venice-models && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "venice-models" agent skill from https://github.com/veniceai/skills/tree/main/skills/venice-models into .gemini/skills/venice-models/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "venice-models", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install veniceai/skills venice-modelsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add veniceai/skills --skill venice-models -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/venice-models .github/skills/venice-models && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "venice-models" agent skill from https://github.com/veniceai/skills/tree/main/skills/venice-models into .github/skills/venice-models/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "venice-models", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add veniceai/skills --skill venice-models -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install veniceai/skills venice-models --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/venice-models .opencode/skills/venice-models && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "venice-models" agent skill from https://github.com/veniceai/skills/tree/main/skills/venice-models into .opencode/skills/venice-models/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "venice-models", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
venice-modelsDocuments Venice's model discovery endpoints, GET /models, /models/traits and /models/compatibility_mapping, so an agent can pick a model by capability, constraint or price.
Three read-only public GET endpoints expose the catalog. The /models route returns each model's capabilities, constraints and pricing, /models/traits maps names such as default, default_reasoning and highest_quality to model IDs, and /models/compatibility_mapping resolves legacy or third-party IDs to Venice IDs. No API key is needed, but sending one tailors results: privacy settings filter the list, beta accounts see beta models and partner accounts see negotiated rates. An invalid key just gives the public view.
A type parameter, defaulting to text, selects image, video, music, tts, asr, embedding, upscale, inpaint or decision models, and the all and code values work for models and traits but return a 400 on the compatibility route. The skill describes using this to choose models at runtime by features such as vision or function calling, to validate requests against constraints like prompt length or resolution, and to estimate cost per token, image, second or character. The excerpt is cut off in the response field table.
Read from SKILL.md and the folder at commit 5eaeac5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.venice.aihuggingface.coFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
VENICE_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Venice Models API loads about 4.3k tokens when it runs. Until then it costs about 121 tokens; SKILL.md has 1,491 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from veniceai/skills at commit 5eaeac5, republished under its MIT licence (© veniceai). 1,491 words, ~4,342 tokens.
.claude/skills/venice-models/SKILL.md (or your agent's skills folder).Three read-only endpoints for model discovery - all GET, all public:
| Endpoint | Returns |
|---|---|
/models | Model catalog with model_spec (capabilities, constraints, pricing). |
/models/traits | Trait → model ID map (e.g. default, default_reasoning, highest_quality). |
/models/compatibility_mapping | Legacy / third-party model ID → Venice model ID aliases. |
Auth is optional. These routes need no API key, so a plain curl works. If you send Authorization: Bearer $VENICE_API_KEY the result is tailored to that caller: a key's modelPrivacy setting filters the list, beta-flagged accounts also see beta models, and partner accounts see their negotiated rates. An invalid key is not rejected - you just get the public view.
?type= values (default text when omitted):
| Value | /models | /models/traits | /models/compatibility_mapping |
|---|---|---|---|
text, image, video, music, tts, asr, embedding, upscale, inpaint, decision | yes | yes | yes |
all (every type) | yes | yes | 400 |
code (text models with capabilities.optimizedForCode: true) | yes | yes | 400 |
Anything else returns 400 { "error": "Invalid request parameters", "details": …, "issues": … }.
music includes long-form audio (songs, sound effects, ElevenLabs narration models) and any voice-changer models. decision lists the typed-judgment models used by POST /decisions (today: jev-latest, flagged betaModel: true) - see venice-decisions.
constraints (prompt length, aspect ratio, resolution, steps, durations).default, default_reasoning, highest_quality) or a legacy alias (gpt-4o) to a concrete Venice model ID.GET /modelscurl "https://api.venice.ai/api/v1/models?type=text"{
"object": "list",
"type": "text",
"data": [
{
"id": "zai-org-glm-5-2",
"object": "model",
"owned_by": "venice.ai",
"type": "text",
"created": 1781568000,
"context_length": 1000000,
"model_spec": {
"name": "GLM 5.2",
"description": "GLM-5.2 is the next-generation large language model…",
"availableContextTokens": 1000000,
"maxCompletionTokens": 131072,
"privacy": "private",
"modelSource": "https://huggingface.co/zai-org/GLM-5.2",
"offline": false,
"traits": ["default", "function_calling_default"],
"capabilities": { "supportsReasoning": true, "reasoningEffortOptions": ["none", "high", "max"], "…": "…" },
"pricing": {
"input": { "usd": 1.4, "diem": 1.4 },
"cache_input": { "usd": 0.26, "diem": 0.26 },
"output": { "usd": 4.4, "diem": 4.4 }
}
}
}
]
}ModelResponse fields| Field | Notes |
|---|---|
id | The model ID to send as model. |
object / owned_by | Always "model" / "venice.ai". |
type | One of the 10 model types above. |
created | Unix seconds - release date on the Venice API. |
context_length | Text models only. OpenAI-compatible mirror of model_spec.availableContextTokens. |
discount_to_user | Reseller-only (0 < x < 1). Returned only to the reselling partner whose agreement it belongs to and omitted for other callers - treat absent as no discount. |
model_spec | Everything below. |
model_spec - common fields| Field | Use |
|---|---|
name, description, modelSource | Display name, blurb, upstream URL (description / modelSource may be absent). |
privacy | private (zero data retention) or anonymized (third-party provider; not tied to your identity). |
offline | true ⇒ requests return 503 "The model is temporarily offline". Skip it. |
traits | Trait names this model currently holds (may be []). |
uncensored | Present and true only for models Venice classifies as uncensored (all modalities). Absent otherwise - never false. Upstream providers may still filter. |
betaModel | Model is in beta status (still callable). |
beta | Model is restricted to beta-access accounts. Only appears in lists returned to such accounts. |
regionRestrictions | Country codes where the model is blocked (the OpenAPI description reads "intended to be available", but requests are rejected from the listed countries). Those requests get 403 "The specified model is unavailable in <country>…". Absent on unrestricted models. |
deprecation | { autoRemap, date, removesAt, replacementModelId?, startsAt? } - present only when retirement is scheduled. The model drops out of /models at removesAt; autoRemap: true means Venice may remap requests for this ID to replacementModelId instead of returning an error. |
model_sets | Text, image and video only. Curation tags such as venice_recommendations, featured, and for video audio, uncensored, high_resolution, fast, … (served live but not declared in the OpenAPI schema). |
model_spec.capabilities - text models| Flag | Meaning |
|---|---|
optimizedForCode | Tuned for coding tasks (drives ?type=code). |
quantization | fp4 / fp8 / fp16 / bf16 / int8 / int4 / not-available. |
supportsFunctionCalling | tools are allowed. |
supportsResponseSchema | Honors response_format: { type: "json_schema" }. |
supportsReasoning | Model emits reasoning. |
supportsReasoningEffort | Honors reasoning_effort / reasoning.effort. When true, also reasoningEffortOptions (subset of none, minimal, low, medium, high, xhigh, max - none means reasoning can be turned off) and defaultReasoningEffort. |
supportsVision | Accepts image_url parts. |
supportsMultipleImages + maxImages | More than one image per request; maxImages is the model's advertised limit. Chat hard-caps every model at 10 images per message. |
supportsVideoInput + maxVideos | Accepts video_url parts; maxVideos present on some models. |
supportsAudioInput | Accepts input_audio parts. |
supportsWebSearch | venice_parameters.enable_web_search - currently true on every text model. |
supportsXSearch | xAI native web + X search via venice_parameters.enable_x_search. |
supportsLogProbs | Honors logprobs / top_logprobs. |
supportsTeeAttestation | Runs in a TEE; verify with GET /tee/attestation / /tee/signature. |
supportsE2EE | End-to-end encrypted inference (requires TEE). |
model_spec.constraints and type-specific fieldsconstraints is optional (only a handful of models carry it): temperature.default, top_p.default, optional {frequency,presence,repetition}_penalty.default.constraints: promptCharacterLimit, widthHeightDivisor, steps.{default,max}, optional aspectRatios[] + defaultAspectRatio, optional resolutions[] + defaultResolution, optional qualities[] + defaultQuality (models that accept quality), optional maxStyleReferences + supportsStyleReferenceStrength. Alongside: supportsStyleReferences, plus supportsWebSearch and supportsOptimizePromptThinking (served live, not in the OpenAPI schema).constraints: aspectRatios[], promptCharacterLimit, combineImages, optional maxInputImages, singleImageAspectRatio (if false, single-image edits keep input dimensions and ignore aspect_ratio), optional resolutions[]/defaultResolution, qualities[]/defaultQuality. Alongside: supportsOptimizePromptThinking.constraints: model_type (text-to-video / image-to-video / video), aspect_ratios[], resolutions[], durations[] (e.g. "5s"; most upscale and video-to-video models list "Auto", meaning the source length — omit duration for them), audio, audio_configurable, audio_input, per_reference_audio, video_input, optional prompt_character_limit (default 2500), optional reference_image_min_short_side_pixels, reference_image_min_aspect_ratio, reference_image_max_aspect_ratio, and a topaz block (models, sliders, selects, no_upscale_models, h264_output, prompt) on enhancement models only. The audio_input … reference_image_* keys are served live but not declared in the OpenAPI schema.model_spec) - voices[], default_format, supported_formats[] (an explicit format outside this list is rejected), supports_custom_voice_id, and voice_cloning { mode: "zero_shot" | "persistent", accepted_formats[], min_sample_seconds, retention_days } on models whose cloning is open to you (use with POST /audio/voices, see venice-audio-speech). Per-model toggles like prompt / temperature / top_p support are not exposed here - use the per-model table in venice-audio-speech as the support matrix (the published schema text is incomplete).supports_lyrics, lyrics_required, supports_force_instrumental, supports_lyrics_optimizer (served live, not in the OpenAPI schema), supports_loop, supports_custom_voice_id, supports_language_code, supports_speed, supported_formats[], default_format, prompt_character_limit, min_prompt_length, optional lyrics_character_limit, duration_options[], min_duration / max_duration / default_duration, voices[] / default_voice, default_speed / min_speed / max_speed.voice_changer: true) - adds supports_background_noise_removal, supports_seed, accepted_audio_formats[], max_source_audio_duration_seconds. These run on /audio/voice-changer/*, not /audio/queue - see venice-audio-voice-changer. No voice-changer model is publicly listed today; check ?type=music for voice_changer: true before relying on it.embeddingDimensions, maxInputTokens, supportsCustomDimensions (present only when true).maxStateTokens (state + longest question), maxTotalTokens (state + all questions).pricing.model_spec.pricing - by typeEvery price is { usd, diem }; today diem always equals usd. Prices already include any promotional discount active for the calling account (some promos are tier-gated, so anonymous and Pro callers can see different numbers) - quote from the same credentials you will bill with.
input and output per 1 000 000 tokens, optional cache_input (cache reads), cache_write (cache creation, e.g. Anthropic), and extended { context_token_threshold, input, output, cache_input?, cache_write? }. When input tokens exceed the threshold, extended rates apply to the entire request.generation (flat per image) or resolutions.<1K|2K|4K>; optional quality.<resolution>.<low|medium|high>; always an upscale.{2x,4x} block (the shared upscale price, not a sign that this model upscales, and not promo-discounted).upscaler) - same shape as image: generation + upscale.{2x,4x}.inpaint per edit, optional resolutions.*, optional inputImages { included, additional } (surcharge per input image beyond included), optional quality.*.pricing on /models. Use POST /video/quote (see venice-video).generation (per job), durations.<ceiling_seconds> { usd, diem, min_seconds, max_seconds }, per_second, or per_thousand_characters. Use POST /audio/quote for the exact price.input per 1 000 000 input characters.per_audio_second.Crypto RPC pricing is not in /models - see venice-crypto-rpc.
GET /models/traitscurl "https://api.venice.ai/api/v1/models/traits?type=text"{
"object": "list",
"type": "text",
"data": {
"default": "zai-org-glm-5-2",
"function_calling_default": "zai-org-glm-5-2",
"default_reasoning": "kimi-k3",
"default_code": "deepseek-v4-pro-0813",
"default_vision": "qwen-3-8-27b",
"most_intelligent": "grok-4-7",
"most_uncensored": "venice-uncensored-1-2"
}
}Possible trait keys: default, fastest, most_uncensored, eliza-default (any type), default_code, default_reasoning, default_vision, function_calling_default, most_intelligent (text), highest_quality (image). A key only appears while some model holds it - fastest is currently unassigned for text. Today only text and image (and the all / code filters built from them) return non-empty maps. ?type=all merges every type into one map, so keys shared across types collide - e.g. default resolves to an image model there. The values above are a snapshot; resolve them at runtime.
A trait name can also be sent directly as model (e.g. "model": "default_reasoning") and Venice resolves it per request.
GET /models/compatibility_mappingcurl "https://api.venice.ai/api/v1/models/compatibility_mapping?type=text"{
"object": "list",
"type": "text",
"data": {
"gpt-4o": "llama-3.3-70b",
"gpt-4.1": "qwen3-235b-a22b-instruct-2507",
"claude-3-5-sonnet-20241022": "llama-3.3-70b",
"qwen3-235b": "qwen3-235b-a22b-thinking-2507"
}
}Keys are legacy OpenAI / Anthropic / older Venice IDs; values are the Venice model each one resolves to. ?type=embedding currently maps text-embedding-ada-002 → text-embedding-bge-m3; other types are empty. Like traits, an alias can be sent directly as model. Useful when porting code that hard-codes old OpenAI IDs - but check the target's capabilities, since the mapping is by ID only.
const base = 'https://api.venice.ai/api/v1'
const list = await fetch(`${base}/models?type=text`).then(r => r.json())
const match = list.data.find((m: any) =>
m.model_spec.capabilities.supportsVision &&
m.model_spec.capabilities.supportsReasoning &&
!m.model_spec.offline &&
!m.model_spec.deprecation
)const spec = (await fetch(`${base}/models?type=image`).then(r => r.json()))
.data.find((m: any) => m.id === myModel)!.model_spec
const { widthHeightDivisor, promptCharacterLimit, aspectRatios } = spec.constraints
if (prompt.length > promptCharacterLimit) throw new Error('prompt too long')
if (width % widthHeightDivisor !== 0) throw new Error('width not divisible')
if (aspectRatios && !aspectRatios.includes(myAspect)) throw new Error('bad aspect')// textSpec = model_spec of a text model from /models?type=text
// inputTokens = total prompt tokens, including cachedTokens
const p = textSpec.pricing
const tier = p.extended && inputTokens > p.extended.context_token_threshold ? p.extended : p
const cacheRate = tier.cache_input?.usd ?? tier.input.usd
const cost =
((inputTokens - cachedTokens) / 1_000_000) * tier.input.usd +
(cachedTokens / 1_000_000) * cacheRate +
(outputTokens / 1_000_000) * tier.output.usdCache-write tokens (models with cache_write) are billed at that rate instead of input.
/models.?type returns text only. Use ?type=all for everything.model_spec.pricing is always absent for video and can be absent for any model without a published price - guard against undefined.regionRestrictions lists blocked countries, not allowed ones.uncensored is omitted rather than false - test with === true.type - there is no global default; always pass ?type=....modelPrivacy: PRIVATE_TEXT / PRIVATE_ONLY) sees a filtered list; unauthenticated calls see everything public.ModelResponse schema (model_sets, image supportsWebSearch, image and inpaint supportsOptimizePromptThinking, music supports_lyrics_optimizer, several video constraint keys). Strict generated clients may drop them.© veniceai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/venice-models of veniceai/skills.
Open the folder on GitHubat commit 5eaeac5
Venice Models API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Venice Models API this skillveniceai/skills | 144 | — | ~4.3k | Automated safety check: Pass | MIT | |
| OpenCodex Proxy Operationslidge-jun/opencodex | 17k | — | ~3.1k | Automated safety check: Pass | MIT | |
| 9Router AI Gateway Setupdecolua/9router | 31k | — | ~744 | Automated safety check: Pass | MIT | |
| 9Router Chat Completionsdecolua/9router | 31k | — | ~635 | Automated safety check: Pass | MIT | |
| Using Ccproxy Inspectorstarbaser/ccproxy | 350 | — | ~2.7k | Automated safety check: Pass | Custom licence | |
| Pinme LLMglitternetwork/pinme | 3.8k | — | ~2.8k | Automated safety check: Pass | MIT |
lidge-jun/opencodex
Operates an opencodex (`ocx`) proxy: finds CLI tasks offline, checks local configuration, and manages accounts, providers, models, routing and usage reports.
decolua/9router
Sets up access to the 9Router AI gateway, an OpenAI-compatible REST endpoint for chat, images, speech, embeddings, web search and web fetch, and indexes its capability skills.
decolua/9router
Sends chat and code-generation requests through a 9Router gateway using OpenAI or Anthropic message formats, with streaming and auto-fallback combos.
starbaser/ccproxy
Operates the ccproxy inspector MITM system for intercepting, inspecting, and transforming LLM API traffic.
glitternetwork/pinme
A skill your agent uses when a PinMe project (Worker TypeScript) needs to call OpenRouter-backed LLM APIs, including models, chat/completions, streaming, or OpenRouter web search.
starbaser/ccproxy
Guides users through ccproxy as an OpenAI-compatible and Anthropic-compatible LLM API server with SDK integration, OAuth authentication, sentinel key substitution, model routing, and troubleshooting.
veniceai/skills
Picks which Venice text model to call for a prompt based on privacy tier, input modality, capabilities and cost, and decides when to escalate from a local agent.
veniceai/skills
Manages Venice API keys through the /api_keys endpoints: create, list, update and revoke keys, set spending limits, and read rate limits.
veniceai/skills
High-level map of the Venice.ai API: base URL, auth modes per endpoint, endpoint categories, response headers, pricing model, error shape and versioning.
veniceai/skills
Async music, sound-effect and long-form voice generation via Venice.
veniceai/skills
Generate speech from text via POST /audio/speech, and clone a voice via POST /audio/voices.
veniceai/skills
Transcribe audio files to text via POST /audio/transcriptions.
Works with
Categories
Documents Venice's model discovery endpoints, GET /models, /models/traits and /models/compatibility_mapping, so an agent can pick a model by capability, constraint or price. Three read-only public GET endpoints expose the catalog. The /models route returns each model's capabilities, constraints and pricing, /models/traits maps names such as default, default_reasoning and highest_quality to model IDs, and /models/compatibility_mapping resolves legacy or third-party IDs to Venice IDs.
Venice Models API fits situations like: choosing a Venice model at runtime based on its capabilities; validating a request against a model's prompt length or resolution limits; estimating cost from per-token, per-image or per-second pricing; resolving a trait or a legacy model name to a current Venice model ID.
Run `npx skills add veniceai/skills --skill venice-models -a claude-code`. Or copy the skill folder (skills/venice-models in veniceai/skills) into .claude/skills/venice-models in your project. Claude Code loads it when a task matches its description.
Run `npx skills add veniceai/skills --skill venice-models -a codex`. Or copy the skill folder (skills/venice-models in veniceai/skills) into .agents/skills/venice-models in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add veniceai/skills --skill venice-models -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/venice-models, .gemini/skills/venice-models, .github/skills/venice-models and .opencode/skills/venice-models in your project.
Going by SKILL.md and its folder, Venice Models API needs the command-line tools its instructions call (curl) and credentials named VENICE_API_KEY. Our summary lists: Network access to api.venice.ai; A Venice API key, optional for model discovery.
SKILL.md names 2 domains. In commands or code: api.venice.ai and huggingface.co; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Venice Models API is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Venice Models API: OpenCodex Proxy Operations (lidge-jun/opencodex, 17k stars), 9Router AI Gateway Setup (decolua/9router, 31k stars), 9Router Chat Completions (decolua/9router, 31k stars) and Using Ccproxy Inspector (starbaser/ccproxy, 350 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
veniceai (a GitHub organization) maintains it in veniceai/skills, which has 144 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 5, 2026.
Source: veniceai/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.