Read the result
GET
/v1 /jobs /{id}| Field | Type | Description |
|---|---|---|
| stems[].name | string | Duplex Conversation Separation: _spk1, _spk2. Multi Mic Separation: one per input. Target Speaker Extraction: target. Noise Reduction: clean. |
| stems[].si_sdr | float | null | Estimate in dB. Null without scoring, and on Multi Mic Separation, Target Speaker Extraction and Noise Reduction. Superseded by quality. |
| quality.si_sdr_estimated_db | float | null | The same estimate, with its source named. |
| quality.si_sdr_measured_db | float | null | A reference measurement. Null on every customer job. |
| quality.si_sdr_source | string | null | blind_estimate or reference_measured. |
| quality.resynthesis | string[] | Steps that re-synthesized the signal (Bandwidth extension). |
| sample_rate | int | Duplex Conversation Separation: 48000 or 16000 · Multi Mic Separation: 48000 or 16000 · Target Speaker Extraction: 16000 · Noise Reduction: the input's rate, 16000 at least. Read the field. |
| billed_seconds, billed_usd | float | What was charged. Success only. |
curl -H "Authorization: Bearer $DUETA_API_KEY" https://dueta.ai/ v1/ jobs/$JOB_ID |
jq '.result'Response
{
"status": "succeeded",
"stage": "done",
"progress": 1,
"billed_seconds": 612.4,
"billed_usd": 5.1033,
"paid_by": { "kind": "personal" },
"result": {
"stems": [
{ "name": "conversation-00_vocals_spk1_enh_48k", "si_sdr": 14.8 },
{ "name": "conversation-00_vocals_spk2_enh_48k", "si_sdr": 14.8 }
],
"sample_rate": 48000,
"quality": { "si_sdr_estimated_db": 14.8, "si_sdr_measured_db": null,
"si_sdr_source": "blind_estimate",
"resynthesis": ["super_resolution"] }
}
}
// A Multi Mic Separation job: one stem per input, named after it.
{ "result": { "stems": [ { "name": "alice-00", "si_sdr": null },
{ "name": "bob-01", "si_sdr": null } ],
"sample_rate": 48000 } }Download a stem
GET
/v1 /jobs /{id} /stems /{name} ?format=wav|flacDownload wav, flac or format=preview (AAC). No credit purchase required.
# WAV, byte for byte as rendered:
curl -fL -H "Authorization: Bearer $DUETA_API_KEY" -o stem.wav \
"https://dueta.ai/ v1/ jobs/ $JOB_ID/ stems/ $STEM_NAME"
# FLAC, the same samples losslessly at about half the size:
curl -fL -H "Authorization: Bearer $DUETA_API_KEY" -o stem.flac \
"https://dueta.ai/ v1/ jobs/ $JOB_ID/ stems/ $STEM_NAME?format=flac"Download everything
GET
/v1 /jobs /{id} /archive ?format=wav|flacformat defaults to wav; flac zips the FLAC of every stem. Streamed, so there is no Content-Length. The download is named dueta-<first 8 of the job id>-stems.zip, or -stems-flac.zip for FLAC.
# Streamed, so there is no Content-Length; progress is what has arrived.
curl -fL -H "Authorization: Bearer $DUETA_API_KEY" -o result.zip \
"https://dueta.ai/ v1/ jobs/ $JOB_ID/ archive"Download the original
GET
/v1 /jobs /{id} /inputs /{name}name is inputs[].stem or the stored filename.
# name is inputs[].stem ("conversation-00") or the stored filename.
curl -fL -H "Authorization: Bearer $DUETA_API_KEY" -o original.wav \
"https://dueta.ai/ v1/ jobs/ $JOB_ID/ inputs/ conversation-00"Cases
- 404
- Not succeeded, unknown stem name, or pruned.
- 422
formatis notwavorflac. There is no MP3.- 503 / 504
- FLAC failed or timed out. WAV is unaffected.
- Retention
- Files kept 7 days after the job; after a purchase (demo and full refunds excluded), until you delete them:
DELETE /v1/jobs/{id}. - Redirect
- Follow redirects: a stem may 302 to object storage.