Agent skill

Venice Errors

by veniceai in veniceai/skills

Handle Venice API errors correctly. An agent skill from veniceai/skills.

MITAuto-check passedBackend & APIs

Install Venice Errors

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

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

GitHub CLI
$ gh skill install veniceai/skills venice-errors --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-errors .claude/skills/venice-errors && 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-errors
GitHub stars
143
Token cost
~4.9k tokens
SKILL.md length
1,761 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

Handle Venice API errors correctly. An agent skill from veniceai/skills.

  • Works in 9 steps: StandardError - simple message → DetailedError - schema validation… → OpenAI-style context overflow (400, chat) → …
  • Tasks that involve Site reliability engineering
  • SKILL.md covers Error body shapes, Status code map, Rate limits and their headers and Retry strategy, plus 3 more sections
  • Reaches venice.ai and api.venice.ai

What it does

Venice Errors is an agent skill from veniceai/skills. Handle Venice API errors correctly. Covers the error body shapes (StandardError, DetailedError with validation details/issues, OpenAI-style contextlengthexceeded, upstream provider rejections with requestid including TypeSafe/FastAPI validation errors, ContentViolationError, ProviderContentPolicyError, PayloadTooLargeError, the two x402 402 bodies), every meaningful status code (400-504, including 410 for retired endpoints), the three families of rate-limit headers, the per-key error budget (FAILEDREQUESTS /…

Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Site reliability engineering, Rate limiting and Backend development. It works with x402, OpenAI, FastAPI and Venice AI. The repository describes itself as: Agent Skills for the Venice.ai API. One folder per surface area, each with a SKILL.md for agent runtimes (Cursor, Claude, Codex, etc.). The licence is MIT.

When your agent uses it

  • Tasks that involve Site reliability engineering
  • Tasks that involve Rate limiting
  • Tasks that involve Backend development

Example prompts

  • “/venice-errors”

Requirements

  • A credential in YOUR_API_KEY

Workflow steps

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

  1. StandardError - simple message
  2. DetailedError - schema validation failure (400)
  3. OpenAI-style context overflow (400, chat)
  4. Upstream provider rejection (400)
  5. ContentViolationError - 422 content policy
  6. ProviderContentPolicyError - 422 on /video/retrieve
  7. PayloadTooLargeError - 413
  8. x402 402 bodies
  9. x402 sign-in failures (401)

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json and typescript).

    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:

    • venice.ai
    • api.venice.ai
    • docs.venice.ai

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Venice Errors loads about 4.9k tokens when it runs. Until then it costs about 168 tokens; SKILL.md has 1,761 words of instructions outside code blocks.

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

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,761 words, ~4,891 tokens.

Download SKILL.mdSave it as .claude/skills/venice-errors/SKILL.md (or your agent's skills folder).
name
venice-errors
description
Handle Venice API errors correctly. Covers the error body shapes (StandardError, DetailedError with validation details/issues, OpenAI-style context_length_exceeded, upstream provider rejections with request_id including TypeSafe/FastAPI validation errors, ContentViolationError, ProviderContentPolicyError, PayloadTooLargeError, the two x402 402 bodies), every meaningful status code (400-504, including 410 for retired endpoints), the three families of rate-limit headers, the per-key error budget (FAILED_REQUESTS / UNSUPPORTED_FEATURE_REQUESTS), Retry-After on overloaded models, SSE stream errors, and a backoff strategy that won't trip the error budget.

Venice errors & retries

Most Venice errors are { "error": "<message>" }, but several paths add structure. Knowing which shape you got tells you how to react.

Error body shapes

1. StandardError - simple message

The default for 4xx/5xx.

json
{ "error": "Authentication failed" }
2. DetailedError - schema validation failure (400)

When a request fails Venice's own schema, details is a nested tree (_errors recursively keyed by field) and issues is the flat issue list. Some image, video and upstream failures instead return details as a plain string, so check its type before walking it.

json
{
  "error": "Invalid request parameters",
  "details": {
    "_errors": [],
    "type": { "_errors": ["Invalid enum value. Expected 'asr' | 'decision' | … , received 'bogus'", "Invalid enum value. Expected 'all' | 'code', received 'bogus'"] }
  },
  "issues": [
    { "code": "invalid_union", "unionErrors": [ … ], "path": ["type"], "message": "Invalid input" }
  ]
}

(That is the live response to GET /models?type=bogus.)

Many 400s are plain StandardError - handle both. Render details / issues; don't retry.

3. OpenAI-style context overflow (400, chat)
json
{
  "error": {
    "message": "Your request exceeds the model's maximum context. Please reduce your prompt or completion length.",
    "type": "invalid_request_error",
    "param": "messages",
    "code": "context_length_exceeded"
  }
}

Note error is an object here, so OpenAI SDKs can detect it. message is the provider's wording when Venice can extract it, otherwise the text above - match on code, not message. Trim the prompt or lower max_completion_tokens.

4. Upstream provider rejection (400)

When the request passed Venice's schema but the model provider rejected it, Venice returns the provider's message, plus a request_id on routes that track one (chat, for example; /decisions omits it):

json
{ "error": "<provider's validation message>", "request_id": "…" }

FastAPI-style validation errors (e.g. from the TypeSafe provider behind POST /decisions, which answers 422) are surfaced as 400 with up to five field.path: message items joined by ; . If Venice can't extract a message you get "Invalid request parameters. For assistance, please reach out to support@venice.ai", followed by " and reference request ID: <id>" when there is one. These count against the lenient unsupported-feature budget on chat / responses (see Error budget). Fix the input; quote request_id to support.

5. ContentViolationError - 422 content policy
json
{
  "error": "Your prompt violates the content policy of Venice.ai or the model provider",
  "suggested_prompt": "A cinematic instrumental track inspired by stormy weather and dramatic tension."
}

Returned by chat, responses, image edit and multi-edit, and audio generation. /image/generate does not use it (a blocked image comes back as a 200 with x-venice-is-content-violation: true), and video content-policy rejections arrive on /video/retrieve rather than on queue. suggested_prompt is only emitted by /audio/queue and /audio/retrieve; when present, retry once with it if the user consents. Other 422s include "Your input was blocked by content moderation." and media-validation failures (image too large, bad aspect ratio, audio/video duration out of range, ASR unable to process the audio).

6. ProviderContentPolicyError - 422 on /video/retrieve
json
{
  "error": {
    "message": "The selected model provider rejected this request due to its content policies. Credits have been refunded. Try using <model> instead.",
    "type": "provider_content_policy",
    "credits_refunded": true,
    "recommended_model": "<model id>"
  }
}

Check credits_refunded; optionally re-queue on recommended_model.

7. PayloadTooLargeError - 413
json
{ "code": "PAYLOAD_TOO_LARGE", "error": "File exceeds the maximum allowed size of 25 MB." }
8. x402 402 bodies

A 402 comes in two forms. Both also set the PAYMENT-REQUIRED header. The no-credentials form is returned on every route that needs credentials, including Bearer-only routes (/api_keys*, /billing/*, /characters*), where its payment options don't apply.

No credentials at all - x402 v2 discovery (not 401):

json
{
  "x402Version": 2,
  "error": "Authentication required",
  "resource": { "url": "https://api.venice.ai/api/v1/chat/completions", "description": "Venice API", "mimeType": "application/json" },
  "accepts": [ { "scheme": "exact", "network": "eip155:8453", "…": "…" }, { "scheme": "exact", "network": "solana", "…": "…" } ],
  "extensions": { "sign-in-with-x": { "info": { "domain": "api.venice.ai", "statement": "Sign in to Venice AI", "…": "…" }, "supportedChains": [ … ] } },
  "authOptions": {
    "apiKey": { "header": "Authorization: Bearer YOUR_API_KEY", "getKey": "https://venice.ai/settings/api", "docs": "…" },
    "x402Wallet": { "header": "SIGN-IN-WITH-X", "legacyHeader": "X-Sign-In-With-X", "topUp": "POST /api/v1/x402/top-up", "docs": "…" }
  }
}

Signed-in wallet below the $0.10 minimum balance - discriminate on code: "PAYMENT_REQUIRED":

json
{
  "error": "Payment required",
  "code": "PAYMENT_REQUIRED",
  "reason": "insufficient_balance",
  "currentBalanceUsd": 0.01,
  "minimumBalanceUsd": 0.1,
  "description": "Venice API",
  "suggestedTopUpUsd": 10,
  "minimumTopUpUsd": 5,
  "supportedTokens": ["USDC"],
  "supportedChains": ["base", "solana"],
  "topUpInstructions": {
    "step1": "POST /api/v1/x402/top-up with no payment header to get payment requirements",
    "step2": "Choose a payment option from accepts and sign a USDC transfer authorization using the x402 SDK (createPaymentHeader)",
    "step3": "POST /api/v1/x402/top-up with the signed X-402-Payment header",
    "receiverWallet": "0x…",
    "tokenAddress": "0x…",
    "tokenDecimals": 6,
    "network": "eip155:8453",
    "minimumAmountUsd": 5
  },
  "siwxChallenge": { "info": { … }, "supportedChains": [ … ] }
}

topUpInstructions describes the Base rail only; read accepts[] from POST /x402/top-up to pay on Solana (and send PAYMENT-SIGNATURE, the canonical header - X-402-Payment / X-PAYMENT still work). The PAYMENT-REQUIRED header is the base64 x402 paymentRequired object (x402Version, error, resource, accepts[], extensions), not the body. See venice-x402.

API-key 402s are plain: { "error": "Insufficient USD or Diem balance to complete request. Visit https://venice.ai/settings/api to add credits." }, or the per-key spend-limit variants ("API key DIEM spend limit exceeded…" / "API key USD spend limit exceeded…"). A wallet can get the same plain "Insufficient USD or Diem balance…" body when its credit clears the $0.10 floor but not the quoted price of this request (e.g. /video/queue, /audio/queue) - top up and retry.

9. x402 sign-in failures (401)

On inference routes a bad SIGN-IN-WITH-X returns { "error": "<message>", "code": "X402_SIGN_IN_…" } (e.g. X402_SIGN_IN_EXPIRED, X402_SIGN_IN_NONCE_REUSED). /x402/balance and /x402/transactions return a generic { "error": "Invalid Sign-in-with-x signature" }. See venice-auth for every code.

Status code map

StatusTypical bodyMeaningWhat to do
400DetailedError, StandardError, context-overflow object, or upstream { error, request_id }Malformed input, missing or non-string model (plain "model is required" / "model must be a string"), unsupported option for this model, provider rejection, invalid JSON ("Invalid JSON request"), or a POST whose Content-Type is neither JSON nor multipart ("'Content-Type' must be 'application/json'"). Also PAYMENT_HEADER_NOT_ACCEPTED if you send an x402 payment header to an inference route instead of /x402/top-up.Fix and re-send. Don't retry.
401StandardError or { error, code }Unknown, expired or revoked API key ("Authentication failed"), a non-ADMIN key on an admin-only route ("Admin API key required"), bad SIWX, or "This model is only available to Pro users" (API-key accounts without a paid plan on a Pro-only model).Fix credentials / plan. Don't retry.
402See shape 8No credentials (discovery), wallet balance too low, or API-key account / key spend limit exhausted.x402: top up then retry. API key: add credits or raise the key's limit.
403StandardErrorEntitled-but-blocked: model blocked in your country (regionRestrictions), key's modelPrivacy forbids the model, API access disabled, SIWX wallet ≠ path wallet.Don't retry.
404StandardErrorUnknown model ("Specified model not found: …", sometimes with a suggestion or a "has been deprecated. Please use …" hint), unknown character, expired media.Fix the ID.
409{ error: { code: "needs_consent", message }, consent_flow, face_media_roles, consent, docs_url } (video) or { error, message, details } (x402)/video/queue needs consent (only on unlisted model ids; listed models never ask), or an x402 top-up that is already processed or still settling (error holds the code, e.g. "PAYMENT_IN_PROGRESS" — retry shortly).See venice-video / venice-x402.
410StandardErrorRetired endpoint (GET /billing/usage, POST /video/transcriptions). Message names the replacement.Migrate. Never retry.
413PayloadTooLargeErrorJSON body over 35 MB ("Request body exceeds the maximum allowed size.") or a multipart file over 25 MB.Shrink the upload.
415StandardErrorRare: /image/multi-edit with an empty body, or a body sent with a Content-Encoding / charset the server can't decode ("Request encoding is not supported"). A wrong Content-Type on any route is answered with 400.Fix headers.
422ContentViolationError, ProviderContentPolicyError, or StandardErrorContent policy, or media that can't be processed (dimensions, duration, unreadable audio).Change the prompt / media. One retry with suggested_prompt if offered.
429StandardError or { error, code }Request/token rate limit, error budget exhausted, model overloaded, x402 concurrency (X402_CONCURRENCY_LIMIT, 5 in-flight per wallet), or a per-route limiter (crypto RPC, /x402/*, /tee/*, retired endpoints).See rate limits below.
500StandardErrorUnexpected failure.Backoff and retry.
502StandardErrorUpstream failure (TTS, ASR, TEE, video fetch).Backoff and retry.
503StandardErrorModel offline or at capacity.Backoff; consider a fallback model.
504StandardErrorRequest took too long. Mostly non-streaming chat.Use stream: true or a smaller request.
Show full SKILL.md (743 more words)Show less

Rate limits and their headers

Three independent header families - they share a prefix but not units, so read them by exact name:

HeadersEmitted byReset unit
x-ratelimit-limit-requests, x-ratelimit-remaining-requests, x-ratelimit-reset-requests (+ -tokens variants)Model rate limits on inference routes (per account, per model, requests per minute/day and tokens per minute)Unix milliseconds
x-ratelimit-remaining, x-ratelimit-resetsThe error budget, on most responses from routes that need credentials (not on the no-credentials 402)Unix milliseconds
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset/crypto/rpc/{network}, only on the 429 from its per-minute capUnix seconds

Model-limit 429s say "Rate limit exceeded". Pre-fetch your caps with GET /api_keys/rate_limits (Bearer keys only). Past hits are in GET /api_keys/rate_limits/log, which needs an ADMIN key — an INFERENCE key gets 401 "Admin API key required" (venice-api-keys).

Per-route limiters return 429 without these headers: /x402/top-up (10/min per IP), /x402/balance (30/min per wallet) and /x402/transactions (20/min per wallet) say "Rate limit exceeded. Please try again later."; /tee/* (10/min per IP) says "Rate limit exceeded."; the retired endpoints allow 60/min per IP.

Overloaded upstream: 429 with Retry-After (seconds, default 30) and a message like "The model is currently overloaded. Please try again later." Honor Retry-After.

Error budget

Failed requests are rate-limited harder than successful ones:

BudgetThresholdCountsLogged as
Failed requests50 per 30 sAny 4xx except 429 (5xx never count)FAILED_REQUESTS
Unsupported feature requests200 per 30 s, /chat/completions and /responses onlyRequests asking a model for a capability it lacks, or provider-side rejections of otherwise valid requestsUNSUPPORTED_FEATURE_REQUESTS

Buckets are per API key (or per IP for x402), per model, per OpenAI user string; multipart uploads don't expose model / user in time, so they share the key's (or IP's) bucket. Once a bucket is exhausted every request in it gets 429 until reset, with:

Too many failed attempts (> 50) resulting in a non-success status code. Please wait 30 seconds and try again. See https://docs.venice.ai/api-reference/rate-limiting for more information.

The unsupported-feature bucket uses the same wording with > 200. So a client that blindly retries 400/401/402 locks itself out. Stop on non-retryable errors. (The no-credentials 402, the Content-Type and invalid-JSON 400s, and the 35 MB JSON-body 413 are rejected before the budget is checked and don't count.)

Retry strategy

Never retry

400, 401, 403, 404, 410, 413, 415 - fix the request, credentials, or endpoint.

Retry with modification
  • 402 with code: "PAYMENT_REQUIRED" - top up via /x402/top-up within the user's spend cap (see venice-x402), then retry.
  • 402 with x402Version (no credentials) - add Authorization: Bearer …, or SIGN-IN-WITH-X on routes that accept wallets. Bearer-only routes (/api_keys*, /billing/*, /characters*) reject SIWX with 401; send a Bearer key there.
  • Any retry with wallet auth needs a newly signed SIGN-IN-WITH-X header - each nonce is accepted once, so re-sending the original header fails with X402_SIGN_IN_NONCE_REUSED.
  • 402 on an API key - surface to the user.
  • 422 with suggested_prompt - one retry with the safer prompt.
Retry with backoff
  • 429 - wait Retry-After if present, otherwise until the relevant reset header; add jitter.
  • 500 / 502 / 503 / 504 - exponential backoff (0.5 s, 1 s, 2 s, 4 s, 8 s), capped at ~30 s, 3-5 retries max.
  • Async queues (/video/queue, /audio/queue, /audio/voice-changer/queue) can bill before the job finishes (API-key calls are pre-charged at queue time). If a queue response is lost, poll retrieve instead of re-queueing. Idempotency-Key is supported only on /crypto/rpc/{network}.
Reference retry loop
ts
const sleep = (ms: number) => new Promise(r => setTimeout(r, ms))

function waitMs(res: Response, fallback: number): number {
  const retryAfter = Number(res.headers.get('retry-after'))
  if (retryAfter > 0) return retryAfter * 1000
  const msReset = Number(res.headers.get('x-ratelimit-reset-requests') ?? res.headers.get('x-ratelimit-resets'))
  if (msReset > 0) return Math.max(msReset - Date.now(), fallback)
  const secReset = Number(res.headers.get('x-ratelimit-reset')) // crypto RPC
  if (secReset > 0) return Math.max(secReset * 1000 - Date.now(), fallback)
  return fallback
}

// fn must build a fresh SIGN-IN-WITH-X header on every call; nonces are single-use.
async function callVenice<T>(fn: () => Promise<Response>): Promise<T> {
  const maxRetries = 5
  let delay = 500
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    const res = await fn()
    if (res.ok) return res.json() as Promise<T>

    const body = await res.clone().json().catch(() => ({}))
    const message = typeof body.error === 'string' ? body.error : body.error?.message ?? 'Venice error'
    const fail = () => Object.assign(new Error(message), { status: res.status, body })

    if ([400, 401, 403, 404, 410, 413, 415, 422].includes(res.status)) throw fail()

    if (res.status === 402) {
      // topUpAllowed must enforce the user's cap and check GET /x402/balance first.
      if (body.code === 'PAYMENT_REQUIRED' && attempt === 0 && (await topUpAllowed())) {
        await topUpX402(Math.min(body.suggestedTopUpUsd, USER_TOP_UP_CAP_USD))
        continue
      }
      throw fail()
    }

    if ((res.status === 429 || res.status >= 500) && attempt < maxRetries) {
      await sleep((res.status === 429 ? waitMs(res, delay) : delay) + Math.random() * 250)
      delay = Math.min(delay * 2, 30_000)
      continue
    }

    throw fail()
  }
  throw new Error('Exceeded max retries')
}

Streaming errors

If a /chat/completions stream fails after headers are sent, the HTTP status stays 200 and the error arrives in-band, followed by the terminator:

data: {"error":{"message":"…","type":"server_error","code":"model_overloaded","param":null,"retry_after":30}}
data: [DONE]

Overload errors use type: "server_error", code: "model_overloaded" and may carry retry_after (seconds); other upstream failures use type: "api_error" with code: "upstream_error" or a specific code (e.g. e2ee_attestation_stale). Treat the event as terminal.

Request-ID correlation

Upstream-rejection bodies on chat carry request_id, and /crypto/rpc/{network} sets an X-Request-ID header on proxied responses. Include either (plus x-venice-version from the response headers) in support tickets. Other routes don't guarantee a request ID, so keep your own client-side correlation ID too.

Common gotchas

  • A 402 from /x402/top-up with no payment header is the expected discovery response.
  • A 402 (not 401) on an inference route usually means you sent no auth header at all.
  • x-ratelimit-remaining without a suffix is the error budget, not your request quota.
  • A 429 can come from several different limiters (model limits, error budget, overload, x402 concurrency, per-route caps) - read the message and headers before deciding how long to wait.
  • DetailedError.details is a nested _errors tree, not a flat map, on schema-validation 400s; some image / video / upstream failures send it as a plain string. Check its type before walking it.
  • In SSE streams, data: [DONE] is the end of the stream (also after an error chunk), not a keepalive.

© 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-errors of veniceai/skills.

Open the folder on GitHubat commit 5eaeac5

Compare with similar skills

Venice Errors 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 Errors compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Venice Errors this skillveniceai/skills143—~4.9kAutomated safety check: PassMIT
FastapiOpen-TutorAi/open-tutor-ai-CE1082 repos~2.6kAutomated safety check: PassBSD-3-Clause
Build X402 Servercoinbase/cdp-sdk204—~3.7kAutomated safety check: NotesMIT
Specx Add Delivery Controllermaksimzayats/specx202—~704Automated safety check: PassMIT
Implementing API Patternsancoleman/ai-design-components5261 repos~3kAutomated safety check: PassMIT
Ros2 Web Integrationarpitg1304/robotics-agent-skills368—~13kAutomated safety check: NotesApache-2.0

Similar skills

  • Fastapi

    Open-TutorAi/open-tutor-ai-CE

    FastAPI best practices and conventions. An agent skill from Open-TutorAi/open-tutor-ai-CE.

    108 GitHub starsUsed in 2 repos~2.6k tokens
    Backend & APIsAuto-check passed
  • Build X402 Server

    coinbase/cdp-sdk

    Write code that charges for an HTTP route with the x402 protocol and receives USDC in a CDP-managed wallet.

    204 GitHub stars~3.7k tokensUpdated yesterday
    Backend & APIsAuto-check: notes
  • Add delivery controllers for specx services, especially FastAPI HTTP routes.

    202 GitHub stars~704 tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Implementing API Patterns

    ancoleman/ai-design-components

    API design and implementation across REST, GraphQL, gRPC, and tRPC patterns.

    526 GitHub starsUsed in 1 repo~3k tokens
    Backend & APIsAuto-check passed
  • Ros2 Web Integration

    arpitg1304/robotics-agent-skills

    Patterns and best practices for integrating ROS2 systems with web technologies including REST APIs, WebSocket bridges, and browser-based robot interfaces.

    368 GitHub stars~13k tokensUpdated 1 mo ago
    Backend & APIsAuto-check: notes
  • API Hardening

    jamditis/claude-skills-journalism

    API hardening for Express, FastAPI, and serverless. An agent skill from jamditis/claude-skills-journalism.

    416 GitHub stars~12k tokensUpdated 3 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 2 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 2 days ago
    Auto-check passed
  • Venice API Keys

    veniceai/skills

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

    143 GitHub stars~3.8k tokensUpdated 2 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 2 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 2 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 2 days ago
    Auto-check passed

Questions about Venice Errors

What does Venice Errors do?

Handle Venice API errors correctly. An agent skill from veniceai/skills. Venice Errors is an agent skill from veniceai/skills. Handle Venice API errors correctly.

When should I use Venice Errors?

Venice Errors fits situations like: tasks that involve Site reliability engineering; tasks that involve Rate limiting; tasks that involve Backend development.

How do I install Venice Errors in Claude Code?

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

How do I install Venice Errors in Codex?

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

Can I use Venice Errors 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-errors -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-errors, .gemini/skills/venice-errors, .github/skills/venice-errors and .opencode/skills/venice-errors in your project.

What does Venice Errors need to run?

SKILL.md names no scripts, command-line tools or credentials: Venice Errors is instructions for the agent only. Our summary lists: A credential in YOUR_API_KEY.

Does Venice Errors access the network?

SKILL.md names 3 domains. In commands or code: venice.ai, api.venice.ai and docs.venice.ai; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Venice Errors 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 Errors use?

Venice Errors 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 Errors use?

About 4.9k tokens (SKILL.md is roughly 20k 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 Errors?

Skills that share tags, products or a category with Venice Errors: Fastapi (Open-TutorAi/open-tutor-ai-CE, 108 stars), Build X402 Server (coinbase/cdp-sdk, 204 stars), Specx Add Delivery Controller (maksimzayats/specx, 202 stars) and Implementing API Patterns (ancoleman/ai-design-components, 526 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Venice Errors?

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.