Agent skill

Venice API Keys

by veniceai in veniceai/skills

Manages Venice API keys through the /api_keys endpoints: create, list, update and revoke keys, set spending limits, and read rate limits.

MITAuto-check passedBackend & APIs

Install Venice API Keys

skills CLI
$ npx skills add veniceai/skills --skill venice-api-keys -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install veniceai/skills venice-api-keys --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/venice-api-keys .claude/skills/venice-api-keys && rm -rf skills-src

Use ~/.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/

Facts

Skill name
venice-api-keys
GitHub stars
143
Token cost
~3.8k tokens
SKILL.md length
1,384 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

Manages Venice API keys through the /api_keys endpoints: create, list, update and revoke keys, set spending limits, and read rate limits.

  • Works in 2 steps: GET /api_keys/generate_web3_key → Sign the token, then POST…
  • Creating a limited INFERENCE key for a new app or user
  • SKILL.md covers Key types, GET /api_keys, POST /api_keys — create and PATCH /api_keys — update, plus 8 more sections
  • Calls curl; reaches api.venice.ai; needs VENICE_ADMIN_KEY and VENICE_API_KEY

What it does

Venice's key-management endpoints are laid out here: list, create, update and revoke on `/api_keys`, details for a single key, rate-limit balances, a log of recent rate-limit breaches, and a two-step wallet flow at `generate_web3_key` that mints a key for a wallet holding staked VVV. Management routes need an ADMIN key, and the secret is returned only once, when a key is created.

Two key types exist: INFERENCE keys call model and utility routes, while ADMIN keys also manage keys and billing, so apps should normally get per-app, per-user INFERENCE keys with consumption caps. Caps are set in USD or DIEM and reset on an EPOCH, MONTH or LIFETIME window, and each key carries a modelPrivacy value of ALL, PRIVATE_TEXT or PRIVATE_ONLY. Key creation is limited to 20 requests per minute and 500 active keys per user, and a request with no Authorization header gets a 402 challenge rather than 401.

When your agent uses it

  • Creating a limited INFERENCE key for a new app or user
  • Revoking a Venice key or changing its expiry
  • Checking rate limits and balances for the calling key, or recent breaches
  • Minting a key from a wallet with the web3 flow

Example prompts

  • “Create an INFERENCE key with a monthly USD limit for our mobile app.”
  • “List my active Venice keys and show which ones expire soon.”
  • “Switch the research key to PRIVATE_ONLY model privacy.”
  • “Show the latest rate-limit breaches on our account.”

Requirements

  • A Venice ADMIN API key for the management routes
  • Network access to api.venice.ai
  • A wallet with staked VVV for the web3 key flow

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. GET /api_keys/generate_web3_key
  2. Sign the token, then POST /api_keys/generate_web3_key

What it can do on your machine

Read from SKILL.md and the folder at commit 5eaeac5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.venice.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • VENICE_ADMIN_KEY
    • VENICE_API_KEY
    • WALLET_KEY
    • ADMIN_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Venice API Keys loads about 3.8k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,384 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~97
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from veniceai/skills at commit 5eaeac5, republished under its MIT licence (© veniceai). 1,384 words, ~3,797 tokens.

Download SKILL.mdSave it as .claude/skills/venice-api-keys/SKILL.md (or your agent's skills folder).
name
venice-api-keys
description
Manage Venice API keys. Covers GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits, GET /api_keys/rate_limits/log, the two-step /api_keys/generate_web3_key wallet flow, INFERENCE vs ADMIN key types, per-key consumption limits (USD / DIEM) with EPOCH / MONTH / LIFETIME reset windows, and per-key modelPrivacy (ALL / PRIVATE_TEXT / PRIVATE_ONLY).

Venice API Keys

Admin endpoints for managing Bearer API keys. Management routes need an ADMIN key. For wallet-only auth, use venice-auth / venice-x402 instead.

EndpointKey typePurpose
GET /api_keysADMINList your active keys (masked).
POST /api_keysADMINCreate a key. Response contains the only copy of the secret.
PATCH /api_keysADMINUpdate description, expiresAt, consumptionLimit, limitPeriod, modelPrivacy.
DELETE /api_keys?id=...ADMINRevoke a key.
GET /api_keys/{id}ADMINFull details for one key (usage, limits, expiration).
GET /api_keys/rate_limitsanyBalances + per-model rate limits for the calling key.
GET /api_keys/rate_limits/logADMINLast 50 rate-limit breaches on the account.
GET /api_keys/generate_web3_keynoneGet a short-lived token to sign with a wallet.
POST /api_keys/generate_web3_keynoneProve a wallet holds staked VVV and mint an API key.

Limits: key creation (POST /api_keys) is capped at 20 requests/minute per user and 500 active keys per user (expired keys don't count).

A request with no Authorization header gets a 402 x402 auth challenge rather than 401; a bad key gets 401.

Key types

TypeCan call
INFERENCEInference and utility routes — /chat/completions, /responses, /decisions, /systemone, /image/*, /images/generations, /audio/*, /video/*, /embeddings, /augment/*, /crypto/rpc/*, /characters*, /models* — plus GET /api_keys/rate_limits. Admin-only routes return 401 "Admin API key required".
ADMINEverything above, plus GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits/log, and all billing routes (/billing/balance, /billing/usage-history, /billing/usage-analytics).

Secrets are prefixed VENICE_INFERENCE_KEY_ or VENICE_ADMIN_KEY_. A leaf app should almost always use INFERENCE keys — per-app, per-user, with consumption caps.

GET /api_keys

bash
curl https://api.venice.ai/api/v1/api_keys \
  -H "Authorization: Bearer $VENICE_ADMIN_KEY"
json
{
  "object": "list",
  "data": [
    {
      "id": "e28e82dc-9df2-4b47-b726-d0a222ef2ab5",
      "apiKeyType": "INFERENCE",
      "description": "backend prod",
      "createdAt": "2025-10-01T12:00:00.000Z",
      "expiresAt": null,
      "lastUsedAt": "2026-04-20T10:05:00.000Z",
      "last6Chars": "2V2jNW",
      "consumptionLimits": { "usd": 50, "diem": 10, "vcu": null },
      "limitPeriod": "MONTH",
      "modelPrivacy": "ALL",
      "usage": { "trailingSevenDays": { "usd": "4.2000", "vcu": "0.0000", "diem": "0.0000" } },
      "currentPeriodUsage": { "usd": "12.5000", "diem": "0.0000" }
    }
  ]
}
  • Only non-expired keys are listed, newest first. The full secret is never returned — only last6Chars.
  • usage.trailingSevenDays and currentPeriodUsage values are strings with 4 decimals. The usd figures include bundled-credit spend but not earned-credit spend, even though the USD limit counts both.
  • currentPeriodUsage is spend inside the current limitPeriod window and is present only when the key has a USD or DIEM limit set.
  • consumptionLimits.vcu is deprecated and always shown; ignore it.

POST /api_keys — create

bash
curl https://api.venice.ai/api/v1/api_keys \
  -H "Authorization: Bearer $VENICE_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "apiKeyType": "INFERENCE",
    "description": "backend prod",
    "expiresAt": "2026-12-31T23:59:59Z",
    "consumptionLimit": { "usd": 50, "diem": 10 },
    "limitPeriod": "MONTH",
    "modelPrivacy": "PRIVATE_ONLY"
  }'
json
{
  "success": true,
  "data": {
    "id": "e28e82dc-9df2-4b47-b726-d0a222ef2ab5",
    "apiKey": "VENICE_INFERENCE_KEY_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "apiKeyType": "INFERENCE",
    "description": "backend prod",
    "expiresAt": "2026-12-31T23:59:59.000Z",
    "consumptionLimit": { "usd": 50, "diem": 10, "vcu": null },
    "limitPeriod": "MONTH",
    "modelPrivacy": "PRIVATE_ONLY"
  }
}

Save apiKey immediately — Venice won't show the secret again. If you lose it, delete and re-create. The body is strict: unknown fields are a 400.

Required
  • apiKeyType — INFERENCE or ADMIN.
  • description — string, max 64 characters.
Optional
  • expiresAt — "", a date YYYY-MM-DD, or a UTC datetime YYYY-MM-DDTHH:mm:ss[.sss]Z. Omit (or "") for non-expiring.
  • consumptionLimit.usd / .diem — number 0–9999999999, or null for no cap. The USD limit caps USD, BUNDLED_CREDITS and EARNED_CREDITS spend combined; the DIEM limit caps DIEM spend.
  • consumptionLimit.vcu — deprecated (legacy DIEM). Use diem.
  • limitPeriod — window the limits are measured over. Default EPOCH.
  • modelPrivacy — which models the key may call. Default ALL.
limitPeriod
ValueWindow
EPOCHResets every UTC day (default, legacy behaviour).
MONTHResets at 00:00 UTC on the 1st of each calendar month.
LIFETIMENever resets — a permanent cap on the key.

When a key hits its limit while the account still has funds, inference returns 402 with only an error string: "API key USD spend limit exceeded. Your account may still have USD balance, but this API key has reached its configured USD spending limit." (or the same with DIEM). There is no code field.

modelPrivacy

Enforced on every inference route. A disallowed model returns 403 ("This API key is set to '…', but <model> is an Anonymous model. Choose a Private, TEE, or E2EE model, or change the model privacy setting of this API key."). GET /models, /models/traits, and /models/compatibility_mapping called with the key are filtered to models it may use.

ValueEffect
ALLAny model (default).
PRIVATE_TEXTText, embedding, and decision models must be Private, TEE, or E2EE. Image / audio / video models may be Anonymous.
PRIVATE_ONLYEvery model must be Private, TEE, or E2EE. Anonymous models are rejected.

With a restricted key, GET /models returns only the models that key may call — the simplest way to pick an allowed model (see venice-models).

PATCH /api_keys — update

bash
curl -X PATCH https://api.venice.ai/api/v1/api_keys \
  -H "Authorization: Bearer $VENICE_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "id": "e28e82dc-9df2-4b47-b726-d0a222ef2ab5", "description": "renamed", "consumptionLimit": { "usd": 100 }, "limitPeriod": "LIFETIME" }'
  • id is required; everything else is optional and only the fields you send change. apiKeyType cannot be changed.
  • Mutable: description (≤ 64 chars), expiresAt, consumptionLimit (usd / diem / vcu, each may be null to remove that cap), limitPeriod, modelPrivacy.
  • Pass "expiresAt": "" or null to remove an expiration.
  • Returns { success: true, data: { id, apiKeyType, description, createdAt, expiresAt, lastUsedAt, last6Chars, consumptionLimits, limitPeriod, modelPrivacy } }.
  • An unknown or already-expired id → 400 "API key not found or expired".

DELETE /api_keys?id=<uuid> — revoke

bash
curl -X DELETE "https://api.venice.ai/api/v1/api_keys?id=e28e82dc-9df2-4b47-b726-d0a222ef2ab5" \
  -H "Authorization: Bearer $VENICE_ADMIN_KEY"

The id may also be sent as a JSON body { "id": "..." }. Returns {"success": true}. An unknown key → 400 "API key could not be found". Revocation is immediate.

GET /api_keys/{id} — details

Returns { data: <key> } with the same fields as a list entry (usage.trailingSevenDays, currentPeriodUsage when limited, limitPeriod, modelPrivacy, …). Unknown or expired id → 400 "API key not found".

GET /api_keys/rate_limits

Callable with any key type; reports on the calling key.

bash
curl https://api.venice.ai/api/v1/api_keys/rate_limits \
  -H "Authorization: Bearer $VENICE_API_KEY"
json
{
  "data": {
    "accessPermitted": true,
    "apiTier": { "id": "paid", "isCharged": true },
    "balances": { "USD": 50.23, "DIEM": 100.023, "BUNDLED_CREDITS": 25 },
    "keyExpiration": null,
    "nextEpochBegins": "2026-04-21T00:00:00.000Z",
    "rateLimits": [
      {
        "apiModelId": "zai-org-glm-5-1",
        "rateLimits": [
          { "type": "RPM", "amount": 100 },
          { "type": "TPM", "amount": 2000000 }
        ]
      }
    ]
  }
}
  • accessPermitted is the real admission check (balance, per-key limits, account status) — prefer it over /billing/balance's canConsume.
  • balances are what this key can spend right now: each account balance clamped to the key's remaining limit. BUNDLED_CREDITS is USD-denominated and 0 when the plan has none. Earned credits are not listed. Any of the three may be omitted when unknown.
  • apiTier.id is the account's API tier (e.g. paid); isCharged is always true.
  • rateLimits[].rateLimits[].type is RPM (requests/min), RPD (requests/day), or TPM (tokens/min); the amounts shown above are illustrative — read them from the response. Video and music models return an empty array (they are not throughput-limited).
  • nextEpochBegins is when DIEM allocations and EPOCH-period key limits reset.
Show full SKILL.md (514 more words)Show less

GET /api_keys/rate_limits/log

Requires an ADMIN key. Returns the account's last 50 rate-limit breaches, newest first:

json
{
  "object": "list",
  "data": [
    { "apiKeyId": "e28e82dc-...", "modelId": "zai-org-glm-5-1", "rateLimitType": "RPM",
      "rateLimitTier": "paid", "timestamp": "2026-04-20T12:34:56.000Z" }
  ]
}

rateLimitType is one of:

ValueMeaning
RPM / TPM / RPDPer-model throughput caps.
FAILED_REQUESTSThe generic error budget: more than 50 client-error responses (4xx other than 429) within 30 seconds.
UNSUPPORTED_FEATURE_REQUESTSMore than 200 "model doesn't support this feature" rejections within 30 seconds on /chat/completions or /responses.

modelId is usually a model id, but endpoint-level limits log endpoint:api/v1/... (e.g. endpoint:api/v1/crypto/rpc) and unresolvable model names log model:unknown.

Web3 API keys — two-step wallet flow

Lets a wallet with staked VVV on Base mint a Bearer API key. No Venice account required; one is created and linked to the wallet on first use.

1. GET /api_keys/generate_web3_key
bash
curl https://api.venice.ai/api/v1/api_keys/generate_web3_key

Returns { "success": true, "data": { "token": "<JWT>" } }. The token is valid for 15 minutes.

2. Sign the token, then POST /api_keys/generate_web3_key
ts
import { Wallet } from 'ethers'

const { data: { token } } = await fetch(`${base}/api_keys/generate_web3_key`).then(r => r.json())
const wallet = new Wallet(process.env.WALLET_KEY!)
const signature = await wallet.signMessage(token) // EIP-191 personal_sign of the exact JWT string

const res = await fetch(`${base}/api_keys/generate_web3_key`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    apiKeyType: 'INFERENCE',
    description: 'Web3 API Key',
    address: wallet.address,
    signature,
    token,
    consumptionLimit: { usd: 50 },
  }),
})

const { data } = await res.json()
console.log(data.apiKey) // save this once
  • Body: address, signature, token, and apiKeyType are required; description defaults to "Web3 API Key"; expiresAt, consumptionLimit, limitPeriod, modelPrivacy work as in POST /api_keys.
  • The signature is verified on Base (chain 8453). Verification failures are 400 with a specific message: bad address, expired/modified token, signature mismatch, or "Wallet … has no staked VVV on Base".
  • The response has the same shape as POST /api_keys. The returned apiKey behaves exactly like a normal Bearer key. Staked VVV only gates minting: the key still spends DIEM, earned credits, bundled credits, or USD from the linked account.

Recipes

Per-customer keys with a $5 monthly USD cap, private models only
ts
await fetch(`${base}/api_keys`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${ADMIN_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    apiKeyType: 'INFERENCE',
    description: `cust:${customerId}`,
    consumptionLimit: { usd: 5 },
    limitPeriod: 'MONTH',
    modelPrivacy: 'PRIVATE_ONLY',
  }),
})

Revoke on churn.

Health-check for a key
ts
const { data } = await fetch(`${base}/api_keys/rate_limits`, {
  headers: { Authorization: `Bearer ${key}` },
}).then(r => r.json())

if (!data.accessPermitted) alert('Key blocked — top up or raise its limit')

Errors

CodeMeaning
400Bad body (missing apiKeyType, description > 64 chars, malformed expiresAt, unknown field), 500 active keys reached, unknown/expired key id, or any Web3 verification failure.
401Invalid key, or a non-ADMIN key on an admin-only route ("Admin API key required").
402No Authorization header (x402 auth challenge). On inference, "API key USD spend limit exceeded…" / "API key DIEM spend limit exceeded…" when the key's limit is used up.
403On inference: the model is not permitted by the key's modelPrivacy.
429Exceeded 20 key creations/min, or the generic API error budget.
500Transient; retry.

Gotchas

  • The secret is returned exactly once, in the create response. Losing it = delete + recreate.
  • consumptionLimit is measured over limitPeriod — EPOCH (UTC day) unless you choose MONTH or LIFETIME. It is not per call.
  • The USD limit covers USD, bundled credits and earned credits together.
  • GET /api_keys/rate_limits works with an INFERENCE key; GET /api_keys/rate_limits/log does not (ADMIN only).
  • modelPrivacy is enforced: a PRIVATE_ONLY key gets 403 for Anonymous models, and /models hides them from that key.
  • vcu is legacy — use diem.
  • expiresAt: "" means "no expiration" on create; on update "" or null removes an existing one.
  • Rate-limit log is capped at 50 entries — pull it frequently if debugging bursts.
  • The Web3 flow's token expires after 15 minutes, and the wallet must hold staked VVV on Base. On that path, read limits back with GET /api_keys/{id} rather than trusting the create response's consumptionLimit echo — its diem is derived from vcu (so it reads null if you only sent diem) and a usd of 0 echoes as null. The stored limits are correct.

© veniceai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/venice-api-keys of veniceai/skills.

Open the folder on GitHubat commit 5eaeac5

Compare with similar skills

Venice API Keys 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.

Venice API Keys compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Venice API Keys this skillveniceai/skills143—~3.8kAutomated safety check: PassMIT
Frappe Core APIImpertio-Studio/Frappe_Claude_Skill_Package188—~3.2kAutomated safety check: PassMIT
Memstack Automation API Integrationcwinvestments/memstack423—~2.8kAutomated safety check: PassProprietary
Shopify APIMicrock/ordinary-claude-skills404—~4.3kAutomated safety check: PassCustom licence
Agentic Walletcoinbase/agentic-wallet-skills1272 repos~1kAutomated safety check: PassMIT
Passport Developmenttrypostit/trypost685—~1.9kAutomated safety check: PassMIT

Similar skills

  • Frappe Core API

    Impertio-Studio/Frappe_Claude_Skill_Package

    A skill your agent uses when building ERPNext/Frappe API integrations (v14/v15/v16) including REST API, RPC API, authentication, webhooks, and rate limiting.

    188 GitHub stars~3.2k tokensUpdated 22 days ago
    Backend & APIsAuto-check passed
  • A skill your agent uses when the user says 'API integration', 'connect APIs', 'sync data', 'data mapping', 'rate limiting', or needs system-to-system connectors with authentication, rate limit…

    423 GitHub stars~2.8k tokensUpdated 12 days ago
    Backend & APIsAuto-check passed
  • Shopify API

    Microck/ordinary-claude-skills

    Complete API integration guide for Shopify including GraphQL Admin API, REST Admin API, Storefront API, Ajax API, OAuth authentication, rate limiting, and webhooks.

    404 GitHub stars~4.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Agentic Wallet

    coinbase/agentic-wallet-skills

    Crypto wallet operations via the awal CLI — sign in, check balances, send USDC/ETH/POL/SOL, trade tokens, fund the wallet, and use the x402 payment protocol to discover paid services, pay for API…

    127 GitHub starsUsed in 2 repos~1k tokens
    Backend & APIsAuto-check passed
  • Passport Development

    trypostit/trypost

    Develops OAuth2 API authentication with Laravel Passport. An agent skill from trypostit/trypost.

    685 GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • Integrates applications with the SoundCloud HTTP API using OAuth 2.1, OpenAPI, and developer docs.

    259 GitHub stars~787 tokensUpdated 8 days ago
    Backend & APIsAuto-check passed

More from veniceai/skills

All 22 skills in this repo
  • 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.

    143 GitHub stars~5.2k tokensUpdated 3 days ago
    Auto-check passed
  • Venice Models API

    veniceai/skills

    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.

    143 GitHub stars~4.3k tokensUpdated 3 days ago
    Auto-check passed
  • Venice API Overview

    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.

    143 GitHub stars~3.5k tokensUpdated 3 days ago
    Auto-check passed
  • Venice Audio Music

    veniceai/skills

    Async music, sound-effect and long-form voice generation via Venice.

    143 GitHub stars~3.1k tokensUpdated 3 days ago
    Auto-check passed
  • Venice Audio Speech

    veniceai/skills

    Generate speech from text via POST /audio/speech, and clone a voice via POST /audio/voices.

    143 GitHub stars~3.6k tokensUpdated 3 days ago
    Auto-check passed
  • Transcribe audio files to text via POST /audio/transcriptions.

    143 GitHub stars~1.7k tokensUpdated 3 days ago
    Auto-check passed

Works with

Categories

Questions about Venice API Keys

What does Venice API Keys do?

Manages Venice API keys through the /api_keys endpoints: create, list, update and revoke keys, set spending limits, and read rate limits. Venice's key-management endpoints are laid out here: list, create, update and revoke on `/api_keys`, details for a single key, rate-limit balances, a log of recent rate-limit breaches, and a two-step wallet flow at `generate_web3_key` that mints a key for a wallet holding staked VVV. Management routes need an ADMIN key, and the secret is returned only once, when a key is created.

When should I use Venice API Keys?

Venice API Keys fits situations like: creating a limited INFERENCE key for a new app or user; revoking a Venice key or changing its expiry; checking rate limits and balances for the calling key, or recent breaches; minting a key from a wallet with the web3 flow.

How do I install Venice API Keys in Claude Code?

Run `npx skills add veniceai/skills --skill venice-api-keys -a claude-code`. Or copy the skill folder (skills/venice-api-keys in veniceai/skills) into .claude/skills/venice-api-keys in your project. Claude Code loads it when a task matches its description.

How do I install Venice API Keys in Codex?

Run `npx skills add veniceai/skills --skill venice-api-keys -a codex`. Or copy the skill folder (skills/venice-api-keys in veniceai/skills) into .agents/skills/venice-api-keys in your project. Codex loads it when a task matches its description.

Can I use Venice API Keys in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add veniceai/skills --skill venice-api-keys -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-api-keys, .gemini/skills/venice-api-keys, .github/skills/venice-api-keys and .opencode/skills/venice-api-keys in your project.

What does Venice API Keys need to run?

Going by SKILL.md and its folder, Venice API Keys needs the command-line tools its instructions call (curl) and credentials named VENICE_ADMIN_KEY, VENICE_API_KEY, WALLET_KEY and ADMIN_KEY. Our summary lists: A Venice ADMIN API key for the management routes; Network access to api.venice.ai; A wallet with staked VVV for the web3 key flow.

Does Venice API Keys access the network?

SKILL.md names 1 domain. In commands or code: api.venice.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Venice API Keys safe to install?

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.

What licence does Venice API Keys use?

Venice API Keys is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Venice API Keys use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Venice API Keys?

Skills that share tags, products or a category with Venice API Keys: Frappe Core API (Impertio-Studio/Frappe_Claude_Skill_Package, 188 stars), Memstack Automation API Integration (cwinvestments/memstack, 423 stars), Shopify API (Microck/ordinary-claude-skills, 404 stars) and Agentic Wallet (coinbase/agentic-wallet-skills, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Venice API Keys?

veniceai (a GitHub organization) maintains it in veniceai/skills, which has 143 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.