Install any skill in seconds. Free to start, no credit card required.
Get Started Free →veniceai/venice-characters
Discover and use Venice public characters (persona-driven system prompts with a bound model). Covers GET /characters (search/filter/sort), /characters/{slug}, /characters/{slug}/reviews, the Character schema, and how to apply a character via venice_parameters.character_slug in chat completions.
Passed 22 of 25 test cases with the skill, and 6 of 25 without it.
and 25 more in the full report
17 fixed5 passed either way2 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 17 test cases the skill fixed. Same model, same prompt, with and without the skill.
When a chat completion payload contains a venice_parameters.character_slug that is missing, unapproved, or hidden on Venice, what HTTP status code and error message does the API return?
| Checked | Without skill | With skill |
|---|---|---|
| The response identifies HTTP 404 as the status code returned when a character_slug is invalid or unapproved. | Missed | Passed |
| The response specifies that the error body indicates no character could be found from the provided character_slug. | Passed | Passed |
The instructions your model reads when the skill loads.
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.
modelId is a suggestion; you choose the chat model).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.
GET /characterscurl "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. |
test cases passed, vs 6 / 25 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.