NomonoPlatform docs

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, failed or cancelled. done and cancelled are final, and so is failed unless 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, failed or cancelled.

  • errornullable object

    Why the job failed, set only when status is failed.

  • 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, mix or adm.

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"      }    ]  }'
201 Created
{  "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 valuesqueuedprocessingassemblingdonefailedcancelled

  • limitinteger

    How many jobs per page.

    1 to 200Defaults to 50

  • cursorstring

    The next_cursor from the previous page.

Returns

  • jobsarray of objects

    One page of jobs.

  • next_cursornullable string

    The value to send as cursor to 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"
200 OK
{  "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.

curl "https://platform-api.nomono.co/v1/jobs/job_01a14471b2d47f19b6a3c0e5d8f9a1b2" \  -H "Authorization: Bearer $NOMONO_API_KEY"
200 OK
{  "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"
204 No Content

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"
200 OK
{  "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"        ]      }    ]  }}