Audia

Developer docs

Audia API documentation

Create audio generation jobs, poll status, upload private assets, and use scoped API keys from your own server.

Create API key

Start here

Quickstart

Use a scoped key from the console, create a generation job, then poll the job until it reaches succeeded or failed.

curl -X POST https://audia.kr/api/generations \
  -H "Authorization: Bearer audia_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "sfx",
    "model": "SFX1",
    "prompt": "Short futuristic notification sound with a soft tail.",
    "options": {
      "durationSeconds": 4,
      "quality": "standard"
    }
  }'
{
  "job": {
    "id": "cb31b813-6d60-49e4-8efc-267afb5f0125",
    "mode": "sfx",
    "model": "SFX1",
    "status": "queued",
    "prompt": "Short futuristic notification sound with a soft tail.",
    "createdAt": "2026-07-10T11:00:00.000Z"
  }
}

Auth

Authentication

Send API keys as Bearer tokens. Raw keys are shown once in the console. Store them only on your server, not in client-side code.

Authorization: Bearer audia_sk_<prefix>_<secret>
ScopeAllows
generations:createCreate generation jobs.
generations:readList and inspect jobs owned by the key owner.
uploads:createCreate signed upload URLs for private audio or public images.

Endpoint

Create a generation

POST /api/generations creates a durable generation job. The API accepts the request immediately and processes audio asynchronously.

{
  "mode": "voice" | "sfx" | "bgm",
  "model": "TTS1" | "SFX1" | "BGM1",
  "prompt": "Text or prompt to generate from",
  "options": {}
}

TTS1 example

curl -X POST https://audia.kr/api/generations \
  -H "Authorization: Bearer audia_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "voice",
    "model": "TTS1",
    "prompt": "내가 분명히 하지 말라고 했잖아.",
    "options": {
      "language": "Korean",
      "voiceDirection": "매우 화가 난 사람처럼 빠르고 날카롭게 읽어줘.",
      "seed": 123
    }
  }'

SFX1 example

curl -X POST https://audia.kr/api/generations \
  -H "Authorization: Bearer audia_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "sfx",
    "model": "SFX1",
    "prompt": "Fireball impact with a short magical explosion.",
    "options": {
      "durationSeconds": 4,
      "quality": "standard"
    }
  }'

Endpoint

Edit a completed voice take

POST /api/generations/{sourceGenerationId}/edits preserves the completed source take and creates a new Voice generation containing the requested change. The source must belong to the authenticated account, have a completed audio artifact, and be 30 seconds or shorter.

curl -X POST https://audia.kr/api/generations/8a165af0-4878-4a4f-a306-5c0832cedfe8/edits \
  -H "Authorization: Bearer audia_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "editType": "style",
    "editInfo": "warm"
  }'
{
  "job": {
    "id": "dff2937a-a581-4907-bc45-ea87de85b478",
    "mode": "voice",
    "model": "VEDIT1",
    "status": "queued",
    "options": {
      "sourceGenerationJobId": "8a165af0-4878-4a4f-a306-5c0832cedfe8",
      "editType": "style",
      "editSummary": "따뜻하게",
      "editIteration": 1
    }
  }
}
editTypeAdditional fieldSupported behavior
emotioneditInfohappy, angry, sad, humour, confusion, disgusted, empathy, embarrass, fear, surprised, excited, depressed, coldness, admiration, remove
styleeditInfoserious, child, older, whisper, gentle, warm, authority, chat, radio, story, vivid, news, advertising, murmur, shout, deeply, exaggerated, remove
speededitInfofaster, more faster, slower, more slower
denoiseRemoves background noise while preserving the spoken content.
vadTrims leading and trailing silence.
paralinguistictargetTextInsert a supported breath, laugh, hesitation, sigh, or throat-clearing tag into the source text.

Paralinguistic text tags

For paralinguistic, send the full desired text in targetText with at least one supported tag:

[Breathing] [Laughter] [Uhm] [Sigh] [inhale] [exhale] [chuckle] [giggle] [clears throat] [snort]

Voice edits require the generations:create scope. Use the normal generation status endpoints to poll and download the new take. VEDIT1 is created only through this source-linked edit endpoint, not through the generic generation endpoint.

Endpoint

Check job status and download output

Use GET /api/generations to list recent jobs, or GET /api/generations/{id} to inspect one job. Completed jobs include a short-lived signed download URL when an artifact exists.

curl https://audia.kr/api/generations/cb31b813-6d60-49e4-8efc-267afb5f0125 \
  -H "Authorization: Bearer audia_sk_..."
{
  "job": {
    "id": "cb31b813-6d60-49e4-8efc-267afb5f0125",
    "status": "succeeded",
    "downloadUrl": "https://...signed-url...",
    "usageMetrics": {
      "audioSeconds": 4,
      "generationSeconds": 156.772
    }
  }
}
StatusMeaning
queuedThe API accepted the request and it is waiting to be processed.
claimedThe request has been reserved for processing.
loading_modelThe generation pipeline is preparing the selected model.
runningThe model is generating audio.
uploadingThe generated artifact is being uploaded to private object storage.
succeededThe job completed and a signed download URL can be returned.
failedThe job failed. Check errorCode and errorMessage.

Endpoint

Create signed upload URLs

Use uploads for reference audio or future asset workflows. Audio uploads go to private storage; image uploads can return a public URL.

curl -X POST https://audia.kr/api/upload/presign \
  -H "Authorization: Bearer audia_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "fileName": "reference.wav",
    "contentType": "audio/wav",
    "fileSize": 1048576,
    "category": "audio"
  }'
{
  "uploadUrl": "https://...signed-upload-url...",
  "key": "user-id/audio/uuid.wav",
  "bucket": "private",
  "expiresIn": 600
}

Models

Model-specific options

These names are stable Audia API identifiers. They describe the product capability and request contract, not the underlying processing infrastructure.

ModelModeOptionsStatus
TTS1voiceText, language, voiceDirection, sampling, seedAvailable
VEDIT1voice editSource generation, editType, editInfo, targetTextAvailable
SFX1sfxPrompt, durationSeconds, quality, seedAvailable
BGM1bgmPrompt, durationSeconds, quality, seedTemporarily paused

BGM1 is documented for API compatibility, but it is currently paused while the runtime is being revised. Avoid production BGM requests until it is re-enabled.

Reference

Errors

HTTPErrorMeaning
400Invalid payloadRequest body failed validation or an unsupported file type was supplied.
401Authentication required / Invalid authentication tokenMissing, revoked, malformed, or invalid Bearer token.
403Missing scopeThe API key is valid but does not include the required scope.
404Generation job not foundThe job does not exist or belongs to another user.
409Job is not claimableProcessor-only route received a job that cannot be started.
503Service temporarily unavailableA model is paused or storage configuration is unavailable.
{
  "error": "Missing generations:create scope"
}

Operations

Limits and rate limits

The beta supports scoped API keys and usage recording. Hard API rate limits, quotas, prepaid credits, and billing enforcement are not enabled yet.

  • Audio upload limit: 250 MB.
  • Image upload limit: 12 MB.
  • Signed upload URLs expire after 10 minutes.
  • Signed download URLs expire after 15 minutes.
  • Generation latency depends on system availability and model cold starts.

Release notes

Changelog

2026-07-29

  • Added source-linked Voice take editing with emotion, style, speed, cleanup, and paralinguistic controls.
  • The Voice editing model identifier is VEDIT1.
  • Generation history now identifies edited takes and links them back to their source generation.

2026-07-10

  • API keys now use the documented audia_sk_... prefix.
  • Internal dispatch metadata is preserved after job completion for future status tracing.
  • Developer docs expanded with generation, upload, status, model, and error references.