venice-api-keys
Manage Venice API keys. Covers GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits, GET…
Discover and use Venice public characters (persona-driven system prompts with a suggested model). Covers GET /characters (search/filter/sort/paginate), /characters/{slug}, /characters/{slug}/reviews, the Character and Review schemas, Bearer-API-key-only auth, filter semantics
$ npx -y skills add veniceai/skills --skill venice-characters --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/venice-charactersContext preview
The summary Claude sees to decide when to auto-load this skill.
Discover and use Venice public characters (persona-driven system prompts with a suggested model). Covers GET /characters (search/filter/sort/paginate), /characters/{slug}, /characters/{slug}/reviews, the Character and Review schemas, Bearer-API-key-only auth, filter semantics
name: venice-characters
description: Discover and use Venice public characters (persona-driven system prompts with a suggested model). Covers GET /characters (search/filter/sort/paginate), /characters/{slug}, /characters/{slug}/reviews, the Character and Review schemas, Bearer-API-key-only auth, filter semantics (adult, pro, modelId), and how to apply a character via venice_parameters.character_slug in chat completions.Characters are **published personas** on Venice — each one bundles a system prompt (plus optional context), a suggested backing model, and metadata (tags, ratings, adult / web flags). You apply a character to a chat by passing its `slug` via `venice_parameters.character_slug`.
Three endpoints, all tagged **Preview** (may change):
| Endpoint | Purpose | |---|---| | `GET /characters` | Browse/search/filter the catalog. | | `GET /characters/{slug}` | Fetch one character. | | `GET /characters/{slug}/reviews` | Paginated public reviews. |
**Auth: Bearer API key only.** These routes do not accept x402 / `SIGN-IN-WITH-X` (a SIWX-only request gets `401`). A request with no `Authorization` header gets a `402` x402 discovery challenge rather than `401`. There is no unauthenticated access. See [`venice-auth`](../venice-auth/SKILL.md).
curl "https://api.venice.ai/api/v1/characters?search=philosopher&sortBy=highestRating&limit=20" \ -H "Authorization: Bearer $VENICE_API_KEY"
Response: `{ "object": "list", "data": [Character, ...] }` (no total count — page with `offset` until you get fewer than `limit`).
| Param | Type | Notes | |---|---|---| | `search` | string, ≤ 200 chars | Case-insensitive substring match on name, description, or tag. `#Tag` terms also match tags exactly (URL-encode `#` as `%23`). | | `categories` | string[], ≤ 20 (each ≤ 100 chars) | Repeat the param or comma-separate. Matches any. | | `tags` | string[], ≤ 20 (each ≤ 100 chars) | Repeat or comma-separate. Exact tag name, matches any. | | `modelId` | string[], ≤ 20 (each ≤ 200 chars) | Repeat or comma-separate. Filters on the character's stored model ID — see Gotchas. | | `isAdult` | `"true"` / `"false"` | **Exclusive**: `true` returns *only* adult characters; omitted or `false` returns only non-adult ones. | | `isPro` | `"true"` / `"false"` | `true` = only characters whose model is a Pro model in the Venice app. `false` = no filter. Overrides `modelId` when both are sent. | | `isWebEnabled` | `"true"` / `"false"` | `true` = only web-enabled characters. `false` = no filter. | | `sortBy` | enum | `featured`, `highestRating`, `highlyRated`, `highlyRatedAndRecent`, `imports`, `mostRecent`, `ratingCount`. Omitted → most imports first. | | `sortOrder` | `asc` / `desc` | Default `desc`. Only applied when `sortBy` is set. | | `limit` | integer 1–100 | Default 50. `> 100` → `400`. | | `offset` | integer ≥ 0 | Default 0. |
`sortBy` values that also **filter**:
| Field | Notes | |---|---| | `id` | UUID. | | `slug` | **Use this as `character_slug` in chat.** Same as the public ID in `venice.ai/c/<slug>`. | | `name`, `description` | `description` may be `null`. | | `photoUrl`, `shareUrl` | Typed nullable; `shareUrl` is `https://venice.ai/c/<slug>` (from `GET /characters/{slug}` it may also carry the author's `?ref=` referral code). | | `author` | 5-character anonymized ID derived from the author. | | `tags[]` | Tag names. | | `featured`, `adult`, `webEnabled` | Booleans. | | `modelId` | Model ID the character was built for — usually a Venice API model ID such as `venice-uncensored-1-2`, but it can be an id `/models` doesn't list; Venice's default chat model if the character has none. | | `stats` | `{ averageRating, imports, ratingCount, ratingSum, userRating }`. Missing stats come back as `0`; `userRating` is currently always `null`. | | `createdAt`, `updatedAt` | ISO-8601. |
curl "https://api.venice.ai/api/v1/characters/alan-watts" \ -H "Authorization: Bearer $VENICE_API_KEY"
Returns `{ "object": "character", "data": Character }`. `404` if the character doesn't exist, isn't approved/API-visible (your own characters are exempt), or is adult while your account has the mature filter on. The path also resolves a character's UUID `id`.
curl "https://api.venice.ai/api/v1/characters/alan-watts/reviews?page=1&pageSize=20" \ -H "Authorization: Bearer $VENICE_API_KEY"
| Param | Notes | |---|---| | `page` | Integer ≥ 1. Default 1. | | `pageSize` | Integer 1–100. Default 20. |
Response (newest first; hidden reviews excluded):
{
"object": "list",
"pagination": {"page": 1, "pageSize": 20, "total": 87, "totalPages": 5},
"summary": {"averageRating": 4.7, "totalReviews": 87},
"data": [
{
"id": "...", "characterId": "...", "createdAt": "...",
"rating": 5, "message": "Thoughtful and grounded.",
"locale": "en", "username": "product_user_42", "isOwner": false,
"userAvatarUrl": "https://cdn.venice.ai/..."
}
]
}Agent Skills for the Venice API. Skills are self-contained folders of instructions (one SKILL.md each) that an LLM agent loads on demand to work correctly against a specific surface area of the API.
Manage Venice API keys. Covers GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits, GET…
High-level map of the Venice.ai API - base URL, which auth mode each endpoint accepts (API key, x402 wallet, or none), endpoint…
Async music, sound-effect and long-form voice generation via Venice. Covers the /audio/quote + /audio/queue + /audio/retrieve +…
Generate speech from text via POST /audio/speech, and clone a voice via POST /audio/voices. Covers TTS models (Kokoro, Qwen 3,…
Transcribe audio files to text via POST /audio/transcriptions. Covers supported models (Parakeet, Whisper, Wizper, Scribe, xAI…
Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and…