venice-api-keys
Manage Venice API keys. Covers GET/POST/PATCH/DELETE /api_keys, GET /api_keys/{id}, GET /api_keys/rate_limits, GET…
Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and timing. Covers POST /audio/voice-changer/quote (unauthenticated), /queue (multipart file or JSON audio_url), /retrieve and /complete, how to discover
$ npx -y skills add veniceai/skills --skill venice-audio-voice-changer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/venice-audio-voice-changerContext preview
The summary Claude sees to decide when to auto-load this skill.
Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and timing. Covers POST /audio/voice-changer/quote (unauthenticated), /queue (multipart file or JSON audio_url), /retrieve and /complete, how to discover
name: venice-audio-voice-changer description: Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and timing. Covers POST /audio/voice-changer/quote (unauthenticated), /queue (multipart file or JSON audio_url), /retrieve and /complete, how to discover voice-changer models (model_spec.voice_changer on /models?type=music), accepted formats, the source-length cap, whole-minute billing, refunds, and what each endpoint refuses. Note that no voice-changer model is currently open to regular API keys.
Speech-to-speech conversion: upload a recording, get the same speech back in a different voice, with the original pacing, emotion and timing preserved. It's asynchronous, with its own quote → queue → retrieve → complete family (parallel to, but separate from, [`venice-audio-music`](../venice-audio-music/SKILL.md)).
> **Availability (checked 2026-09-30):** the endpoints are in the public API spec, but the only voice-changer model, `elevenlabs-voice-changer`, is not yet open to regular API keys. It is not listed by `GET /models`, and regular keys (or no key) get `404 "Specified model not found"` from every endpoint below. Before using this skill, confirm that a model with `model_spec.voice_changer: true` shows up in `GET /models?type=music` for your key; if none does, the feature isn't available to you.
| Method | Path | Auth | Notes | |---|---|---|---| | `POST` | `/api/v1/audio/voice-changer/quote` | **None required** (key optional) | Price for a source of N seconds. | | `POST` | `/api/v1/audio/voice-changer/queue` | Bearer key or x402 (SIWX) | `multipart/form-data` (`file`) **or** JSON (`audio_url`). Charges and enqueues. 40 req/min per user. | | `POST` | `/api/v1/audio/voice-changer/retrieve` | Bearer key or x402 (SIWX) | Status JSON or the converted audio. 120 req/min per user. | | `POST` | `/api/v1/audio/voice-changer/complete` | Bearer key or x402 (SIWX) | Release the provider-held media. |
Each endpoint only accepts voice-changer models (`400` otherwise, naming the endpoint to use instead), and `/audio/quote`, `/audio/queue`, `/audio/retrieve`, `/audio/complete` refuse voice-changer models the same way.
For text → speech use [`venice-audio-speech`](../venice-audio-speech/SKILL.md); to create a reusable voice from a sample, see voice cloning there.
There is no `?type=voice-changer` filter. Voice-changer models are music-type models whose `model_spec` carries:
| Field | Meaning | |---|---| | `voice_changer` | `true` on voice-changer models only. | | `accepted_audio_formats` | Containers accepted for the source, judged from the file's bytes (not its name or `Content-Type`). `mp4` covers M4A. | | `max_source_audio_duration_seconds` | Longest source accepted; longer → `422` before any charge. | | `supports_background_noise_removal` | Whether `remove_background_noise` is honored. | | `supports_seed` | Whether `seed` is honored. | | `voices`, `default_voice`, `supports_custom_voice_id` | Target voices; with `supports_custom_voice_id: true` you may pass a provider Voice ID. | | `pricing.durations` | Whole-minute price tiers keyed by source length. |
`elevenlabs-voice-changer` supports: formats `mp3`, `wav`, `ogg`, `mp4`, `aac`; max source 300 s; noise removal and seed supported; the curated ElevenLabs voices (`Aria` default, `Roger`, `Sarah`, …) or any ElevenLabs Voice ID; output `mp3`. Read its price tiers from `pricing.durations` rather than hard-coding them.
curl https://api.venice.ai/api/v1/audio/voice-changer/quote \
-H "Content-Type: application/json" \
-d '{ "model": "elevenlabs-voice-changer", "duration_seconds": 52 }'Response: `{ "quote": <USD>, "duration_seconds": 52 }`.
| Field | Notes | |---|---| | `model` | Required. A voice-changer model. | | `duration_seconds` | **Required.** Positive integer or numeric string, ≤ `max_source_audio_duration_seconds`. |
This is an estimate for the length you declare. The actual charge uses the length Venice measures when you queue; if both round up to the same whole minute the price is identical.
Supply the source **exactly once** — a multipart `file` or a JSON `audio_url`. Both or neither → `400`.
# Upload
curl https://api.venice.ai/api/v1/audio/voice-changer/queue \
-H "Authorization: Bearer $VENICE_API_KEY" \
-F "model=elevenlabs-voice-changer" \
-F "file=@take-03.wav" \
-F "voice=Roger" \
-F "remove_background_noise=true"
# By URL
curl https://api.venice.ai/api/v1/audio/voice-changer/queue \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "elevenlabs-voice-changer",
"audio_url": "https://example.com/take-03.mp3",
"voice": "Roger",
"seed": 42
}'Response:
{ "model": "elevenlabs-voice-changer", "queue_id": "…", "status": "QUEUED", "duration_seconds": 52 }`duration_seconds` is the source length measured server-side — the exact quantity billed.
| Field | Notes | |---|---| | `model` | Required. | | `file` | Multipart source recording, max 25 MB. | | `audio_url` | Public `http(s)` URL. Venice fetches it (30 s timeout, 25 MB cap), validates the bytes, and forwards only the bytes — the URL itself is never passed to the provider. | | `voice` | 1–60 chars. A curated voice or provider Voice ID. Defaults to `default_voice`. Not checked against `voices` at queue time — an unknown Voice ID fails with `400` at queue or on retrieve. | | `remove_background_noise` | Boolean (`"true"` / `"false"` in multipart). | | `seed` | Non-negative integer, for reproducible output. |
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…
Venice augmentation endpoints for agent pipelines. Covers POST /augment/text-parser (extract text from…