Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/venice-ai:venice-ai-characters-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Venice Ai Characters API
version: '20261012.214344'
termsOfService: https://venice.ai/legal/tos
x-guidance: 'Venice.ai is an OpenAI-compatible inference API supporting text, image, audio, and video generation.
**Authentication options:**
- API Key: Use Bearer token in Authorization header
- x402 Wallet: Use USDC credits via EVM or Solana wallet (no account required)
**For x402 wallet access:**
1. POST /x402/top-up without headers to get payment requirements
2. Choose one of the returned Base or Solana payment options and sign a USDC payment using the x402 SDK
3. POST /x402/top-up with PAYMENT-SIGNATURE header to add credits
4. Call any inference endpoint with SIGN-IN-WITH-X header
**Pricing:** Prepaid credits consumed per request. Check /models for available models and their capabilities.'
description: 'Operations tagged Characters across 2 of this provider''s published API definitions: venice-ai-swagger.yaml, venice-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.venice.ai/api/v1
security:
- BearerAuth: []
tags:
- description: List and retrieve character information for use in completions.
name: Characters
paths:
/characters:
get:
description: This is a preview API and may change. Returns a list of characters supported in the API, with filtering by search, tags, categories, model, and sort options.
operationId: listCharacters
summary: /api/v1/characters
tags:
- Characters
parameters:
- schema:
type: array
items:
type: string
maxLength: 100
maxItems: 20
description: Filter by category names. Repeat the parameter for multiple values. Comma-separated values are also accepted.
example:
- roleplay
- philosophy
required: false
name: categories
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
description: Filter by adult content flag
example: 'false'
required: false
name: isAdult
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
description: Filter to only show characters using pro models
example: 'false'
required: false
name: isPro
in: query
- schema:
type: string
enum:
- 'true'
- 'false'
description: Filter to only show web-enabled characters
example: 'true'
required: false
name: isWebEnabled
in: query
- schema:
type: integer
maximum: 100
default: 50
description: 'Number of characters to return (max: 100)'
example: 50
exclusiveMinimum: 0
required: false
name: limit
in: query
- schema:
type: array
items:
type: string
maxLength: 200
maxItems: 20
description: Filter by model ID(s). Repeat the parameter for multiple values. Comma-separated values are also accepted.
example:
- zai-org-glm-5-1
- kimi-k2-6
required: false
name: modelId
in: query
- schema:
type:
- integer
- 'null'
minimum: 0
default: 0
description: Number of characters to skip for pagination
example: 0
required: false
name: offset
in: query
- schema:
type: string
maxLength: 200
description: Search characters by name, description, or tags. Hashtag search is supported.
example: assistant
required: false
name: search
in: query
- schema:
type: string
enum:
- featured
- highestRating
- highlyRated
- highlyRatedAndRecent
- imports
- mostRecent
- ratingCount
description: Sort results using a supported character discovery mode
example: imports
required: false
name: sortBy
in: query
- schema:
type: string
enum:
- asc
- desc
description: Sort order applied to the selected sort mode. Defaults to descending when omitted.
example: desc
required: false
name: sortOrder
in: query
- schema:
type: array
items:
type: string
maxLength: 100
maxItems: 20
description: Filter by tag names. Repeat the parameter for multiple values. Comma-separated values are also accepted.
example:
- helpful
- productivity
required: false
name: tags
in: query
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
adult:
type: boolean
description: Whether the character is considered adult content
example: false
author:
type: string
description: Short anonymized identifier derived from the character author
example: k3x9q
createdAt:
type: string
description: Date when the character was created
example: 2024-12-20 21:28:08.934000+00:00
description:
type:
- string
- 'null'
description: Description of the character
example: Alan Watts (6 January 1915 – 16 November 1973) was a British and American writer, speaker, and self-styled "philosophical entertainer", known for interpreting and popularizing Buddhist, Taoist, and Hindu philosophy for a Western audience.
featured:
type: boolean
description: Whether the character is featured in public discovery surfaces
example: false
id:
type: string
description: Unique ID of the character
example: 2f460055-7595-4640-9cb6-c442c4c869b0
name:
type: string
description: Name of the character
example: Alan Watts
shareUrl:
type:
- string
- 'null'
description: Share URL of the character
example: https://venice.ai/c/alan-watts
photoUrl:
type:
- string
- 'null'
description: URL of the character photo
example: https://outerface.venice.ai/api/characters/2f460055-7595-4640-9cb6-c442c4c869b0/photo
slug:
type: string
description: Slug of the character to be used in the completions API
example: alan-watts
stats:
type: object
properties:
averageRating:
type: number
description: Average rating for the character
example: 4.7
imports:
type: number
description: Number of imports for the character
example: 112
ratingCount:
type: number
description: Number of ratings for the character
example: 24
ratingSum:
type: number
description: Sum of all rating values for the character
example: 113
userRating:
type:
- number
- 'null'
description: The authenticated user rating for the character when available
required:
- averageRating
- imports
- ratingCount
- ratingSum
- userRating
tags:
type: array
items:
type: string
description: Tags associated with the character
example:
- AlanWatts
- Philosophy
- Buddhism
- Taoist
- Hindu
updatedAt:
type: string
description: Date when the character was last updated
example: 2025-02-09 03:23:53.708000+00:00
webEnabled:
type: boolean
description: Whether the character is enabled for web use
example: true
modelId:
type: string
description: API model ID for the character
example: venice-uncensored-1-2
required:
- adult
- author
- createdAt
- description
- featured
- id
- name
- shareUrl
- photoUrl
- slug
- stats
- tags
- updatedAt
- webEnabled
- modelId
object:
type: string
enum:
- list
required:
- data
- object
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
'403':
$ref: '#/components/responses/ApiKeyIpRestrictedError'
'500':
description: An unknown error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
servers:
- url: https://api.venice.ai/api/v1
/characters/{slug}:
get:
description: This is a preview API and may change. Returns a single character by its slug.
operationId: getCharacterBySlug
parameters:
- description: The slug of the character to retrieve
in: path
name: slug
required: true
schema:
example: alan-watts
type: string
summary: /api/v1/characters/{slug}
tags:
- Characters
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
adult:
type: boolean
description: Whether the character is considered adult content
example: false
author:
type: string
description: Short anonymized identifier derived from the character author
example: k3x9q
createdAt:
type: string
description: Date when the character was created
example: 2024-12-20 21:28:08.934000+00:00
description:
type:
- string
- 'null'
description: Description of the character
example: Alan Watts (6 January 1915 – 16 November 1973) was a British and American writer, speaker, and self-styled "philosophical entertainer", known for interpreting and popularizing Buddhist, Taoist, and Hindu philosophy for a Western audience.
featured:
type: boolean
description: Whether the character is featured in public discovery surfaces
example: false
id:
type: string
description: Unique ID of the character
example: 2f460055-7595-4640-9cb6-c442c4c869b0
name:
type: string
description: Name of the character
example: Alan Watts
shareUrl:
type:
- string
- 'null'
description: Share URL of the character
example: https://venice.ai/c/alan-watts
photoUrl:
type:
- string
- 'null'
description: URL of the character photo
example: https://outerface.venice.ai/api/characters/2f460055-7595-4640-9cb6-c442c4c869b0/photo
slug:
type: string
description: Slug of the character to be used in the completions API
example: alan-watts
stats:
type: object
properties:
averageRating:
type: number
description: Average rating for the character
example: 4.7
imports:
type: number
description: Number of imports for the character
example: 112
ratingCount:
type: number
description: Number of ratings for the character
example: 24
ratingSum:
type: number
description: Sum of all rating values for the character
example: 113
userRating:
type:
- number
- 'null'
description: The authenticated user rating for the character when available
required:
- averageRating
- imports
- ratingCount
- ratingSum
- userRating
tags:
type: array
items:
type: string
description: Tags associated with the character
example:
- AlanWatts
- Philosophy
- Buddhism
- Taoist
- Hindu
updatedAt:
type: string
description: Date when the character was last updated
example: 2025-02-09 03:23:53.708000+00:00
webEnabled:
type: boolean
description: Whether the character is enabled for web use
example: true
modelId:
type: string
description: API model ID for the character
example: venice-uncensored-1-2
required:
- adult
- author
- createdAt
- description
- featured
- id
- name
- shareUrl
- photoUrl
- slug
- stats
- tags
- updatedAt
- webEnabled
- modelId
object:
type: string
enum:
- character
required:
- data
- object
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
'403':
$ref: '#/components/responses/ApiKeyIpRestrictedError'
'404':
description: Character not found
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
'500':
description: An unknown error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
servers:
- url: https://api.venice.ai/api/v1
/characters/{slug}/reviews:
get:
description: This is a preview API and may change. Returns paginated public reviews for a single character.
operationId: getCharacterReviews
summary: /api/v1/characters/{slug}/reviews
tags:
- Characters
parameters:
- schema:
type: string
description: Slug of the character whose reviews should be retrieved
example: alan-watts
required: true
name: slug
in: path
- schema:
type: integer
default: 1
description: Page number for pagination
example: 1
exclusiveMinimum: 0
required: false
name: page
in: query
- schema:
type: integer
maximum: 100
default: 20
description: 'Number of reviews to return per page (max: 100)'
example: 20
exclusiveMinimum: 0
required: false
name: pageSize
in: query
responses:
'200':
description: OK
headers:
x-pagination-limit:
schema:
description: Number of reviews returned per page
example: 20
type: number
x-pagination-page:
schema:
description: Current page number
example: 1
type: number
x-pagination-total:
schema:
description: Total number of visible reviews
example: 87
type: number
x-pagination-total-pages:
schema:
description: Total number of result pages
example: 5
type: number
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
characterId:
type: string
description: Unique ID of the reviewed character
example: 2f460055-7595-4640-9cb6-c442c4c869b0
createdAt:
type: string
description: Date when the review was created
example: 2025-02-09 03:23:53.708000+00:00
id:
type: string
description: Unique ID of the review
example: 1e38fb78-043f-4ce2-b3bc-966089c25467
isOwner:
type: boolean
description: Whether the authenticated user authored this review
example: false
locale:
type:
- string
- 'null'
description: Locale reported by the reviewer when available
example: en
message:
type:
- string
- 'null'
description: Optional written review message
example: Thoughtful, grounded, and surprisingly practical.
rating:
type: integer
minimum: 1
maximum: 5
description: Star rating for the character
example: 5
userAvatarUrl:
type:
- string
- 'null'
description: Avatar URL for the reviewer when available
example: https://cdn.venice.ai/avatar.png
username:
type: string
description: Display name chosen by the reviewer
example: product_user_42
required:
- characterId
- createdAt
- id
- isOwner
- locale
- message
- rating
- userAvatarUrl
- username
object:
type: string
enum:
- list
pagination:
type: object
properties:
page:
type: integer
description: Current page number
example: 1
exclusiveMinimum: 0
pageSize:
type: integer
description: Number of reviews requested per page
example: 20
exclusiveMinimum: 0
total:
type: integer
minimum: 0
description: Total number of visible reviews for the character
example: 87
totalPages:
type: integer
minimum: 0
description: Total number of pages available
example: 5
required:
- page
- pageSize
- total
- totalPages
summary:
type: object
properties:
averageRating:
type: number
description: Average rating for the character
example: 4.7
totalReviews:
type: integer
minimum: 0
description: Total number of reviews included in the character stats summary
example: 87
required:
- averageRating
- totalReviews
required:
- data
- object
- pagination
- summary
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/DetailedError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
'403':
$ref: '#/components/responses/ApiKeyIpRestrictedError'
'404':
description: Character not found
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
'500':
description: An unknown error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/StandardError'
servers:
- url: https://api.venice.ai/api/v1
components:
schemas:
DetailedError:
type: object
properties:
details:
type: object
properties: {}
description: Details about the incorrect input
example:
_errors: []
field:
_errors:
- Field is required
error:
type: string
description: A description of the error
required:
- error
StandardError:
type: object
properties:
error:
type: string
description: A description of the error
required:
- error
ApiKeyIpRestrictedError:
type: object
properties:
error:
type: string
enum:
- This API key is restricted to configured IP addresses, and this request's source IP is not allowed
description: A description of the error
example: This API key is restricted to configured IP addresses, and this request's source IP is not allowed
required:
- error
responses:
ApiKeyIpRestrictedError:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiKeyIpRestrictedError'
description: This API key is restricted to configured IP addresses, and this request's source IP is not allowed
securitySchemes:
BearerAuth:
bearerFormat: JWT
scheme: bearer
type: http
siwx:
description: 'Wallet-based authentication using the x402 protocol (Sign-In-With-X). Supports EVM SIWE signatures on Base and Ed25519 signatures on Solana mainnet.
**Header format:** Base64-encoded JSON object with the following fields:
- `address` — EVM or Solana wallet address
- `message` — Signed SIWX message. EVM wallets use EIP-4361 SIWE; Solana wallets use the Solana SIWX message format.
- `signature` — Signature of the message, signed by the wallet''s private key. EVM signatures are hex; Solana signatures may be base58 or base64.
- `timestamp` — Unix timestamp in milliseconds
- `chainId` — Chain identity. Use `8453`, `"8453"`, or `"eip155:8453"` for Base; use `"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"` for Solana.
- `type` — Optional signature type. Use `"ed25519"` for Solana. Omitted means EVM/EIP-191 for backward compatibility.
**EVM SIWE message fields:**
- `domain`: `api.venice.ai`
- `uri`: `https://api.venice.ai`
- `version`: `"1"`
- `chainId`: `8453`
- `nonce`: Random 16-character hex string
- `issuedAt` / `expirationTime`: ISO timestamps (recommended TTL: 10 minutes)
- `statement`: `"Sign in to Venice API"`
**Example (TypeScript):**
```
import { Wallet } from ''ethers''
import { SiweMessage } from ''siwe''
const wallet = new Wallet(PRIVATE_KEY)
const msg = new SiweMessage({ domain: ''api.venice.ai'', address: wallet.address, statement: ''Sign in to Venice API'', uri: ''https://api.venice.ai'', version: ''1'', chainId: 8453, nonce: crypto.randomUUID().replace(/-/g, '''').slice(0, 16), issuedAt: new Date().toISOString(), expirationTime: new Date(Date.now() + 600000).toISOString() })
const signature = await wallet.signMessage(msg.prepareMessage())
const header = btoa(JSON.stringify({ address: wallet.address, message: msg.prepareMessage(), signature, timestamp: Date.now(), chainId: 8453 }))
// Set header: SIGN-IN-WITH-X: <header>
```
**Solana message fields:** The signed message starts with `<domain> wants you to sign in with your Solana account:`, followed by the wallet address and the standard `URI`, `Version`, `Chain ID`, `Nonce`, `Issued At`, and optional `Expiration Time` fields. Use `type: "ed25519"` and `chainId: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"` in the encoded JSON payload.
**SDK:** `npm install @venice-ai/x402-client` provides `VeniceClient` and `createAuthFetch` which handle this automatically.
**Billing:** x402 users pay from a prepaid USDC credit balance. Top up via `POST /x402/top-up`. When balance is insufficient, endpoints return `402` with structured top-up instructions.'
in: header
name: SIGN-IN-WITH-X
type: apiKey
externalDocs:
description: Venice.ai API documentation
url: https://docs.venice.ai
x-refined-from:
- venice-ai-swagger.yaml
- venice-ai-openapi.yml
x-provenance:
method: harvested
publisher: Venice.ai
source: https://docs.venice.ai/swagger.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)