/api/voice. Authenticate with your PeachDesk API key in the X-API-Key header.
Effects are processed on PeachDesk’s servers. You do not install or manage any audio libraries locally — you select effects from the Voice Studio UI (or send an effects chain via the API) and the rendered audio comes back to you.
Authentication
Every request must include your PeachDesk API key in theX-API-Key header (an interactive session token in Authorization: Bearer also works — see Authentication):
Concepts
Effects chain
An ordered list of effects. Each entry has a
type, an enabled flag, and a params object. Effects apply in order, top to bottom.Version (take)
A saved render of a generation. The clean original has no effects chain; applying effects creates additional versions you can switch between.
Preset
A named, reusable effects chain. Voice Studio ships built-in presets, and you can save your own.
Default version
The version Voice Studio plays and exports by default. Exactly one version is the default at a time.
The effect object
An effects chain is an array of effect objects with this shape:string
required
The effect type, e.g.
reverb, eq, pitch. Use List available effects to discover valid types.boolean
default:"true"
Whether the effect is active. Disabled effects are kept in the chain but skipped during processing.
object
Effect-specific parameters (for example
{ "room_size": 0.6, "wet": 0.3 }). Valid keys and ranges are described by List available effects.Effects
List available effects
Returns every effect type the engine supports, along with each effect’s label, description, and parameter definitions. Use this to build an effects UI or to validate a chain before sending it. Response —AvailableEffectsResponse
AvailableEffect[]
Preview effects (without saving)
Applies an effects chain to a generation’s clean audio and streams back the processed WAV without creating a version. Use this to audition a chain before committing it.string
required
The ID of the generation to preview against. Must be a
completed generation.ApplyEffectsRequest
EffectConfig[]
required
The chain of effects to apply.
string
Ignored for preview — the preview always sources the clean/original take.
audio/wav body (Content-Disposition: inline). Nothing is persisted.
Effect presets
Presets are named effects chains you can reuse across generations. Built-in presets ship with Voice Studio (is_builtin: true); presets you create are editable and deletable.
List presets
Returns all effect presets — built-in plus your own. Response —EffectPresetResponse[]
string
Preset ID.
string
Display name.
string | null
Optional description.
EffectConfig[]
The effects in this preset.
boolean
true for shipped presets (read-only).string
ISO 8601 timestamp.
Get a preset
Fetches a single preset by ID.string
required
The preset’s ID.
EffectPresetResponse (see above). Returns 404 if not found.
Create a preset
Saves a new effects chain as a reusable preset. Request body —EffectPresetCreate
string
required
Preset name (1–100 characters).
string
Optional description (max 500 characters).
EffectConfig[]
required
The effects chain to store.
EffectPresetResponse. Returns 400 on validation errors (for example, an invalid effect type).
Update a preset
Updates a user-created preset. All body fields are optional — send only what changes.string
required
The preset’s ID.
EffectPresetUpdate
string
New name (1–100 characters).
string
New description.
EffectConfig[]
Replacement effects chain.
EffectPresetResponse. Returns 404 if the preset doesn’t exist and 400 on validation errors (built-in presets cannot be edited).
Delete a preset
Deletes a user-created preset.string
required
The preset’s ID.
404 if the preset doesn’t exist and 400 if it is built-in (built-in presets cannot be deleted).
Generation versions
Each generation keeps an ordered set of versions (takes). The clean original has no effects chain; applying an effects chain creates a new version. You can switch the default, delete versions you don’t need, and list them all.The version object
string
Version ID.
string
The parent generation.
string
Display label (e.g.
original, version-2).string
Storage path to the rendered audio for this version.
EffectConfig[] | null
The effects applied.
null for the clean original.string | null
The version this take was derived from, if any.
boolean
Whether this is the default version.
string
ISO 8601 timestamp.
List versions
Lists every version for a generation.string
required
The generation’s ID.
GenerationVersionResponse[]. Returns 404 if the generation doesn’t exist.
Apply effects (create a version)
Renders an effects chain against a source take and saves the result as a new version. This is the persistent counterpart to Preview effects.string
required
The generation to apply effects to. Must be
completed.ApplyEffectsRequest
EffectConfig[]
required
The chain of effects to apply.
string
Version to use as the source audio. Defaults to the clean/original take. Returns
404 if the referenced version doesn’t exist.string
Label for the new version (max 100 characters). Auto-generated (e.g.
version-3) if omitted.boolean
default:"true"
Whether to make the new version the default for the generation.
GenerationVersionResponse.
Set the default version
Marks a version as the default for its generation (clearing the flag from the previous default).string
required
The parent generation’s ID.
string
required
The version to make default.
GenerationVersionResponse. Returns 404 if the version doesn’t exist or doesn’t belong to the generation.
Delete a version
Deletes a version from a generation.string
required
The parent generation’s ID.
string
required
The version to delete.
404 if the version doesn’t exist or doesn’t belong to the generation, and 400 if it is the last remaining version (a generation must always keep at least one take).

