API reference · draft v1
One endpoint does the work.
Submit audio or a streaming URL, receive a finding. Published in draft so it can be reviewed and argued with before it is built.
Not live
There is no API host serving requests today and no keys are being issued. This is the intended contract, published early. If you would use it, tell us what is wrong with it.
POST /analyse
Multipart upload or JSON with a URL. Intended to be idempotent on isrc within a 24-hour window, so resubmitting the same recording returns the original finding rather than consuming quota.
| Field | Type | Required | Notes |
|---|---|---|---|
| audio | file | one of | WAV, FLAC, MP3, M4A, OGG |
| url | string | one of | Streaming link. Fetched and discarded. |
| isrc | string | no | Keys the finding and enables idempotency. |
| declared_ai | boolean | no | What the supplier declared. Drives the disclosure-gap flag. |
| index_version | string | no | Pin to a specific index. Defaults to current. |
Response fields
| Field | Meaning |
|---|---|
| finding | One of generated, hybrid, inconclusive, human. The inconclusive band is deliberate and will not be removed to make the output look decisive. |
| score | 0 to 100 synthetic-origin probability on the full mix. |
| model | Attributed generator and version, or null when flagged but unnamed. |
| stems | Independent scores for vocal and accompaniment. Either may be null if absent. |
| watermark | synthid, c2pa or null. Reported apart from the acoustic score. |
| disclosure_gap | True when the audio contradicts declared_ai. This is the enforceable field. |
| index_version | The corpus version that produced the finding, so it can be re-litigated later. |