Reference
Jobs
A job processes a session. Its products say what is done to the audio and its outputs say which files you get back. Every job includes enhancement, and you can add separation, analysis and spatialization.
A job starts queued, and it can stay there for a while when many jobs are processing. It's processing while it runs and ends done, failed or cancelled, passing through assembling before done when it has an ADM output. Once it's done, list its outputs to get the files.
A binaural mix and ADM files of one session take two jobs, and each of them is billed for the session's full length.
The job object
- job_idstring
The job's ID.
- session_idstring
The ID of the session the job processes.
- statusstring
One of
queued,processing,assembling,done,failedorcancelled.doneandcancelledare final, and so isfailedunless the job timed out, in which case it can still finish, as the Jobs guide describes. - progressnumber
How far processing has come, from 0 to 1. It never goes down, and it's 1 once the job is
done. - productsobject
The products as you sent them, without defaults filled in.
- outputs_requestedarray of objects
The outputs as you sent them.
- minutesnumber
The session's length in minutes, to two decimals. The minutes you're billed for are in
GET /v1/usage. - created_attimestamp
When the job was created.
- started_atnullable timestamp
When the job became
processing. - finished_atnullable timestamp
When the job became
done,failedorcancelled. - errornullable object
Why the job failed, set only when
statusisfailed. - retry_ofnullable string
The ID of the failed job this one retries, set when we retried a failed job for you.
POST/v1/jobs
Create a job
Creates a job on a session and returns it. If the products and outputs make a combination that isn't allowed, the request returns 400 validation_error with the rule in message.
Needs the jobs:write scope.
Headers
- Idempotency-Keystring
A key you choose that makes the request safe to retry. For 24 hours, the same key and body return the job the first request created, and the same key with a different body returns 409
idempotency_conflict.1 to 128 characters
Body
- session_idstringrequired
The ID of the session to process.
- productsobjectrequired
What is done to the audio.
- outputsarray of objectsrequired
The files to make, at least one of which must be
tracks,mixoradm.
Returns
curl -X POST "https://platform-api.nomono.co/v1/jobs" \ -H "Authorization: Bearer $NOMONO_API_KEY" \ -H "Idempotency-Key: episode-12-enhance" \ -H "Content-Type: application/json" \ -d '{ "session_id": "ses_01a14471a03b7c56a1e28d9f4b6c7d8e", "products": { "enhancement": { "preset": "listening.full" }, "separation": { "keep_bleed": 0.1, "keep_background": 0.2 }, "analysis": true }, "outputs": [ { "type": "tracks", "format": "wav" }, { "type": "mix", "format": "stereo" }, { "type": "analysis" } ] }'{ "job_id": "job_01a14471b2d47f19b6a3c0e5d8f9a1b2", "session_id": "ses_01a14471a03b7c56a1e28d9f4b6c7d8e", "status": "queued", "progress": 0, "products": { "enhancement": { "preset": "listening.full" }, "separation": { "keep_bleed": 0.1, "keep_background": 0.2 }, "analysis": true }, "outputs_requested": [ { "type": "tracks", "format": "wav" }, { "type": "mix", "format": "stereo" }, { "type": "analysis" } ], "minutes": 30.57, "created_at": "2026-10-16T09:13:02.071624Z", "started_at": null, "finished_at": null, "error": null, "retry_of": null}GET/v1/jobs
List jobs
Returns your organization's jobs, newest first, a page at a time.
Needs the outputs:read scope.
Query parameters
- session_idstring
Only the jobs of this session.
- statusstring
Only the jobs in this status.
Possible values
queuedprocessingassemblingdonefailedcancelled - limitinteger
How many jobs per page.
1 to 200Defaults to
50 - cursorstring
The
next_cursorfrom the previous page.
Returns
- jobsarray of objects
One page of jobs.
- next_cursornullable string
The value to send as
cursorto get the next page. It's null on the last page.
curl "https://platform-api.nomono.co/v1/jobs?session_id=ses_01a14471a03b7c56a1e28d9f4b6c7d8e&status=done&limit=50" \ -H "Authorization: Bearer $NOMONO_API_KEY"{ "jobs": [ { "job_id": "job_01a14471b2d47f19b6a3c0e5d8f9a1b2", "session_id": "ses_01a14471a03b7c56a1e28d9f4b6c7d8e", "status": "done", "progress": 1, "products": { "enhancement": { "preset": "listening.full" }, "separation": { "keep_bleed": 0.1, "keep_background": 0.2 }, "analysis": true }, "outputs_requested": [ { "type": "tracks", "format": "wav" }, { "type": "mix", "format": "stereo" }, { "type": "analysis" } ], "minutes": 30.57, "created_at": "2026-10-16T09:13:02.071624Z", "started_at": "2026-10-16T09:13:31.402215Z", "finished_at": "2026-10-16T09:41:58.987164Z", "error": null, "retry_of": null } ], "next_cursor": null}GET/v1/jobs/{job_id}
Retrieve a job
Returns a job. To follow a job until it finishes, poll it every few seconds or use a webhook.
Needs the outputs:read scope.
Path parameters
- job_idstringrequired
The ID of the job.
Returns
curl "https://platform-api.nomono.co/v1/jobs/job_01a14471b2d47f19b6a3c0e5d8f9a1b2" \ -H "Authorization: Bearer $NOMONO_API_KEY"{ "job_id": "job_01a14471b2d47f19b6a3c0e5d8f9a1b2", "session_id": "ses_01a14471a03b7c56a1e28d9f4b6c7d8e", "status": "processing", "progress": 0.42, "products": { "enhancement": { "preset": "listening.full" }, "separation": { "keep_bleed": 0.1, "keep_background": 0.2 }, "analysis": true }, "outputs_requested": [ { "type": "tracks", "format": "wav" }, { "type": "mix", "format": "stereo" }, { "type": "analysis" } ], "minutes": 30.57, "created_at": "2026-10-16T09:13:02.071624Z", "started_at": "2026-10-16T09:13:31.402215Z", "finished_at": null, "error": null, "retry_of": null}DELETE/v1/jobs/{job_id}
Cancel a job
Cancels a queued job whose processing hasn't started, and the job becomes cancelled without a webhook being sent. For any other job, the request returns 409 job_not_cancellable.
Needs the jobs:write scope.
Path parameters
- job_idstringrequired
The ID of the job.
Returns
An empty body, with the status 204 No Content.
curl -X DELETE "https://platform-api.nomono.co/v1/jobs/job_01a1446c9d837e5fa0b2c4d6e8f1a3b5" \ -H "Authorization: Bearer $NOMONO_API_KEY"GET/v1/jobs/{job_id}/outputs
List a job's outputs
Returns the files of a job that is done, each with a download URL that is new on every call, together with the job's analysis. Until the job is done, the request returns 404 not_found.
Needs the outputs:read scope.
Path parameters
- job_idstringrequired
The ID of the job.
Returns
- outputsarray of objects
The job's files, with the tracks in session order before the mix.
- analysisnullable object
The analysis, if the job asked for one.
curl "https://platform-api.nomono.co/v1/jobs/job_01a14471b2d47f19b6a3c0e5d8f9a1b2/outputs" \ -H "Authorization: Bearer $NOMONO_API_KEY"{ "outputs": [ { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a17", "type": "tracks", "label": "Host", "source_id": "src_01a1446f235c7448abbe096c9b9adf6c", "format": "wav", "profile": null, "size_bytes": 176084204, "url": "https://....s3.eu-west-1.amazonaws.com/...?X-Amz-Expires=86400&X-Amz-Signature=...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a18", "type": "tracks", "label": "Host", "source_id": "src_01a1446f235c7448abbe096c9b9adf6c", "format": "opus", "profile": null, "size_bytes": 21208733, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a19", "type": "tracks", "label": "Host", "source_id": "src_01a1446f235c7448abbe096c9b9adf6c", "format": "waveform", "profile": null, "size_bytes": 21402, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a1a", "type": "tracks", "label": "Guest", "source_id": "src_01a1446f8e8f7b23a4c06d1c3e5f7a90", "format": "wav", "profile": null, "size_bytes": 176084204, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a1b", "type": "tracks", "label": "Guest", "source_id": "src_01a1446f8e8f7b23a4c06d1c3e5f7a90", "format": "opus", "profile": null, "size_bytes": 20995120, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a1c", "type": "tracks", "label": "Guest", "source_id": "src_01a1446f8e8f7b23a4c06d1c3e5f7a90", "format": "waveform", "profile": null, "size_bytes": 21388, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a1d", "type": "mix", "label": null, "source_id": null, "format": "stereo", "profile": null, "size_bytes": 352168364, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a1e", "type": "mix", "label": null, "source_id": null, "format": "opus", "profile": null, "size_bytes": 23110587, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" }, { "output_id": "out_01a144729c0e7b31a8f45d2c6e9b0a1f", "type": "mix", "label": null, "source_id": null, "format": "waveform", "profile": null, "size_bytes": 21455, "url": "https://...", "expires_at": "2026-10-17T09:45:20Z" } ], "analysis": { "session_id": "ses_01a14471a03b7c56a1e28d9f4b6c7d8e", "duration_s": 1834.21, "sources": [ { "source_id": "src_01a1446f235c7448abbe096c9b9adf6c", "label": "Host", "loudness_lufs": -23.8205141512005, "peak": 0.5196996978667562, "duration_s": 1834.21, "problems": [] }, { "source_id": "src_01a1446f8e8f7b23a4c06d1c3e5f7a90", "label": "Guest", "loudness_lufs": -16.402177630913, "peak": 0.9994, "duration_s": 1834.21, "problems": [ "clipping" ] } ] }}