All Documentation

Sound Effects

Generate sound effects from text prompts, trim them, and save them to your library

Overview

The Audio Effects page turns a text description into a sound effect: "heavy wooden door creaking open", "retro arcade power-up", "rain on a tin roof, looping". Generated effects can be auditioned on a waveform, trimmed to a region, downloaded, and saved to Saved Content for reuse.

Generating an Effect

  1. 1Describe the sound. Name the source, the space, and the motion: "metal sword drawn from a leather sheath, close-up".
  2. 2Set the duration in seconds. The provider enforces a maximum length (typically 10-30s).
  3. 3Optionally adjust prompt influence and loop (see below), then generate.
  4. 4Audition on the waveform. Drag to select a region to preview or download just a slice.
  5. 5Download the file, or Save SFX to add it to Saved Content — as a new item or a new version of an existing one.

Generation options

OptionTypeDescription
durationSeconds*numberLength of the effect. Longer costs more tokens (per-second pricing).
promptInfluencenumber 0-1How literally to follow the prompt. Low = more variety, high = closer adherence. Default 0.3.
loopbooleanGenerate a seamless loop — ideal for ambient beds like rain, wind, or machinery.

Writing good SFX prompts

  • Lead with the sound source: "glass bottle rolling on concrete".
  • Add the acoustic space: "...in a large empty warehouse".
  • Describe motion and timing: "three slow knocks, then silence".
  • For loops, describe steady-state textures rather than one-shot events.

Pricing

Sound effects are charged per second of requested audio, using the provider's configured rate (with optional free seconds and a minimum). Tokens are reserved before generation and refunded automatically if it fails, so a failed generation never costs anything.

Saving to Your Library

Saved effects live in Saved Content with the generation prompt as their description, the decoded duration, and optional tags. Saving supports Save as New and Update Existing — updating appends a new version to an existing effect, and the new version becomes the active one.

API Access

SFX generation requires the sfx:write scope. The API uploads the result to storage and returns a URL (not base64); pass save to also store it in Saved Content.

POST/api/v1/sfx/generatesfx:write
FieldTypeDescription
text*stringWhat the sound effect should sound like
durationSeconds*numberLength in seconds (provider max applies)
promptInfluencenumber 0-1Prompt adherence vs variety (default 0.3)
loopbooleanGenerate a seamless loop
saveobjectOptional { name, projectId?, tags? } — also save to Saved Content

Generate and save in one call:

curl -s https://<host>/api/v1/sfx/generate \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "heavy castle door slamming shut, big stone hall reverb",
    "durationSeconds": 4,
    "save": { "name": "Castle Door Slam", "tags": ["door", "impact", "castle"] }
  }'

Response:

{
  "success": true,
  "result": {
    "audioUrl": "https://<r2-public>/sfx/<org>/unassigned/<uuid>.mp3",
    "audioKey": "sfx/<org>/unassigned/<uuid>.mp3",
    "contentType": "audio/mpeg",
    "filename": "sfx_<uuid>.mp3",
    "tokensCharged": 8,
    "savedContent": { "id": "...", "name": "Castle Door Slam", "contentType": "sfx", ... }
  }
}

MCP

The same operation is available to AI agents as the generate_sfx MCP tool — see MCP Server.