Poll for the result
Fetch the status of a recognition job. Poll this endpoint after submitting a video until status is completed, then walk the segments.
Path parameters
| Parameter | Description |
|---|---|
job_id | The job UUID returned by Submit a video. |
Example request
curl https://api.slipstreammusic.com/api/v4/video-recognition/7b2c1e8a-0f4d-4a2b-9c11-7f5a2d9e3c10/ \
-H "Authorization: Bearer $PARTNER_API_KEY"Responses (200 OK)
While the job is still running, progress names the stage it has reached:
{
"job_id": "7b2c1e8a-0f4d-4a2b-9c11-7f5a2d9e3c10",
"status": "processing",
"progress": "matching",
"track": null
}Completed. segments lists every stretch of music in timeline order, and track repeats the longest identified one:
{
"job_id": "7b2c1e8a-0f4d-4a2b-9c11-7f5a2d9e3c10",
"status": "completed",
"progress": null,
"track": {
"id": "11111111-1111-1111-1111-111111111111",
"title": "Nothing To See",
"artist": "Auracle",
"cleared": true,
"internal": true,
"isrc": "CAQOQ1521348",
"score": 99.24,
"external_label": null,
"cover": { "...": "..." }
},
"segments": [
{
"identified": true,
"start_ms": 0,
"end_ms": 24985,
"id": "22222222-2222-2222-2222-222222222222",
"title": "B2 100",
"artist": "T-Pain",
"cleared": true,
"internal": true,
"isrc": null,
"score": 93.91,
"external_label": null,
"cover": { "...": "..." }
},
{
"identified": false,
"start_ms": 24985,
"end_ms": 50062,
"id": null,
"title": null,
"artist": null,
"cleared": null,
"internal": null,
"isrc": null,
"score": null,
"external_label": null,
"cover": null
},
{
"identified": true,
"start_ms": 50062,
"end_ms": 76069,
"id": "11111111-1111-1111-1111-111111111111",
"title": "Nothing To See",
"artist": "Auracle",
"cleared": true,
"internal": true,
"isrc": "CAQOQ1521348",
"score": 99.24,
"external_label": null,
"cover": { "...": "..." }
},
{
"identified": true,
"start_ms": 76069,
"end_ms": 101013,
"id": null,
"title": "Distant Orbit",
"artist": "Audioinsmusic",
"cleared": false,
"internal": false,
"isrc": null,
"score": null,
"external_label": null,
"cover": null,
"suggestions": [
{
"id": "870112aa-49e6-446d-9eaf-ee12e36d2163",
"name": "Mystery Water",
"artist": { "name": "Thomaz Ayê", "path": "/artists/thomaz-aye" }
}
]
}
]
}Completed with no music recognized. segments is empty and track is null:
{
"job_id": "7b2c1e8a-0f4d-4a2b-9c11-7f5a2d9e3c10",
"status": "completed",
"progress": null,
"track": null,
"segments": []
}See The RecognitionSegment object for field descriptions.
Polling guidance
- Poll every 2 to 5 seconds. A clip with one song usually finishes in well under a minute; one carrying several songs takes a couple of minutes, since each stretch is identified on its own. Allow up to 10 minutes before treating a job as stuck.
- Use
progressto tell a user which stage the run is at rather than showing an unqualified spinner. - Stop polling once
statusiscompleted. - Results stay available for about a day after completion, then the
job_idexpires.
Report every segment, not just track. A video whose first song is cleared can still carry an outside track later on, and reading only track would miss it.
Branch on cleared: true means the account’s subscription covers the track. false means it does not — either the track came from outside Slipstream, or it is a catalog track the plan does not include. Tell those apart with id, and check external_label to name competitor libraries such as Epidemic Sound.
Errors
| HTTP | When |
|---|---|
| 401 / 403 | Missing or invalid partner key. |
| 404 | The job_id does not exist, or it has expired from the cache. Submit the video again. |