Developer docs
Audia API documentation
Create audio generation jobs, poll status, upload private assets, and use scoped API keys from your own server.
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>| Scope | Allows |
|---|---|
| generations:create | Create generation jobs. |
| generations:read | List and inspect jobs owned by the key owner. |
| uploads:create | Create 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
}
}
}| editType | Additional field | Supported behavior |
|---|---|---|
| emotion | editInfo | happy, angry, sad, humour, confusion, disgusted, empathy, embarrass, fear, surprised, excited, depressed, coldness, admiration, remove |
| style | editInfo | serious, child, older, whisper, gentle, warm, authority, chat, radio, story, vivid, news, advertising, murmur, shout, deeply, exaggerated, remove |
| speed | editInfo | faster, more faster, slower, more slower |
| denoise | — | Removes background noise while preserving the spoken content. |
| vad | — | Trims leading and trailing silence. |
| paralinguistic | targetText | Insert 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
}
}
}| Status | Meaning |
|---|---|
| queued | The API accepted the request and it is waiting to be processed. |
| claimed | The request has been reserved for processing. |
| loading_model | The generation pipeline is preparing the selected model. |
| running | The model is generating audio. |
| uploading | The generated artifact is being uploaded to private object storage. |
| succeeded | The job completed and a signed download URL can be returned. |
| failed | The 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.
| Model | Mode | Options | Status |
|---|---|---|---|
| TTS1 | voice | Text, language, voiceDirection, sampling, seed | Available |
| VEDIT1 | voice edit | Source generation, editType, editInfo, targetText | Available |
| SFX1 | sfx | Prompt, durationSeconds, quality, seed | Available |
| BGM1 | bgm | Prompt, durationSeconds, quality, seed | Temporarily 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
| HTTP | Error | Meaning |
|---|---|---|
| 400 | Invalid payload | Request body failed validation or an unsupported file type was supplied. |
| 401 | Authentication required / Invalid authentication token | Missing, revoked, malformed, or invalid Bearer token. |
| 403 | Missing scope | The API key is valid but does not include the required scope. |
| 404 | Generation job not found | The job does not exist or belongs to another user. |
| 409 | Job is not claimable | Processor-only route received a job that cannot be started. |
| 503 | Service temporarily unavailable | A 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.