{ "item": [ { "id": "44a81ede-3cc7-4aad-a47d-7789df443238", "name": "Streams", "description": { "content": "", "type": "text/plain" }, "item": [ { "id": "894f5e5d-2193-454c-8656-f2fd94486dc7", "name": "Configure where AudD POSTs stream-recognition callbacks", "request": { "name": "Configure where AudD POSTs stream-recognition callbacks", "description": {}, "url": { "path": [ "setCallbackUrl", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "auth": null, "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "", "type": "text", "description": "(Required) " }, { "key": "url", "value": "", "type": "text", "description": "(Required) Where AudD POSTs callbacks. Set to `https://audd.tech/empty/`\nif you only want longpoll. The URL itself can carry a\n`?return=apple_music,deezer` parameter to receive that\nmetadata in callbacks.\n" } ] } }, "response": [ { "id": "3ac17fdb-b79c-4f90-ba2f-fc80a19a10c7", "name": "Callback URL set or rejected.", "originalRequest": { "url": { "path": [ "setCallbackUrl", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "api_token", "value": "", "type": "text" }, { "description": { "content": "(Required) Where AudD POSTs callbacks. Set to `https://audd.tech/empty/`\nif you only want longpoll. The URL itself can carry a\n`?return=apple_music,deezer` parameter to receive that\nmetadata in callbacks.\n", "type": "text/plain" }, "key": "url", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"status\": \"success\",\n \"result\": null\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "id": "1f0f991e-a8dc-4aba-91df-26461a50c360", "name": "Get the configured callback URL", "request": { "name": "Get the configured callback URL", "description": {}, "url": { "path": [ "getCallbackUrl", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "auth": null, "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "", "type": "text", "description": "(Required) " } ] } }, "response": [ { "id": "e4cf585f-79c2-4e59-b04a-6a3d7a196764", "name": "Returns the URL or — when no callback URL has ever been\nconfigured — error code 19 with message \"Internal error\".\n**The SDK uses this signal to short-circuit longpoll setup.**\n", "originalRequest": { "url": { "path": [ "getCallbackUrl", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "api_token", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"externalValue\": \"https://raw.githubusercontent.com/AudDMusic/audd-openapi/63414c0a939be98c9ec6d9c2eb5c4c7b92b60a51/fixtures/error_19_no_callback_url.json\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "id": "57b7260f-5db4-471b-ac4a-36cb288a798a", "name": "Add a stream for live recognition", "request": { "name": "Add a stream for live recognition", "description": {}, "url": { "path": [ "addStream", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "auth": null, "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "", "type": "text", "description": "(Required) " }, { "key": "url", "value": "", "type": "text", "description": "(Required) Stream URL — direct (DASH/Icecast/HLS/m3u/m3u8) or shortcut\n(`twitch:`, `youtube:`, `youtube-ch:`).\n" }, { "key": "radio_id", "value": "", "type": "text", "description": "(Required) Caller-supplied identifier; must be unique per account." }, { "key": "callbacks", "value": "", "type": "text", "description": "Set to `before` to receive callbacks at song start.\nDefault is callbacks at song end (with total play length).\n (This can only be one of before)" } ] } }, "response": [ { "id": "bb1eaf4a-9f0f-42d5-b3f8-34750ba14bd8", "name": "Stream added or rejected (e.g.,", "originalRequest": { "url": { "path": [ "addStream", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "api_token", "value": "", "type": "text" }, { "description": { "content": "(Required) Stream URL — direct (DASH/Icecast/HLS/m3u/m3u8) or shortcut\n(`twitch:`, `youtube:`, `youtube-ch:`).\n", "type": "text/plain" }, "key": "url", "value": "", "type": "text" }, { "description": { "content": "(Required) Caller-supplied identifier; must be unique per account.", "type": "text/plain" }, "key": "radio_id", "value": "", "type": "text" }, { "description": { "content": "Set to `before` to receive callbacks at song start.\nDefault is callbacks at song end (with total play length).\n (This can only be one of before)", "type": "text/plain" }, "key": "callbacks", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"externalValue\": \"https://raw.githubusercontent.com/AudDMusic/audd-openapi/63414c0a939be98c9ec6d9c2eb5c4c7b92b60a51/fixtures/error_902_stream_limit.json\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "id": "3380edcb-7231-46de-ae87-b19fccbabc4d", "name": "List configured streams", "request": { "name": "List configured streams", "description": {}, "url": { "path": [ "getStreams", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "auth": null, "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "", "type": "text", "description": "(Required) " } ] } }, "response": [ { "id": "9d106b75-7316-49f6-ab1c-32a619c5b387", "name": "Returns the array of configured streams (may be empty).", "originalRequest": { "url": { "path": [ "getStreams", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "api_token", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"externalValue\": \"https://raw.githubusercontent.com/AudDMusic/audd-openapi/63414c0a939be98c9ec6d9c2eb5c4c7b92b60a51/fixtures/getStreams_empty.json\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "id": "6c5d7263-8b93-4c8c-9ed0-08d150e81ec1", "name": "Update an existing stream's URL", "request": { "name": "Update an existing stream's URL", "description": {}, "url": { "path": [ "setStreamUrl", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "auth": null, "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "", "type": "text", "description": "(Required) " }, { "key": "radio_id", "value": "", "type": "text", "description": "(Required) " }, { "key": "url", "value": "", "type": "text", "description": "(Required) " } ] } }, "response": [ { "id": "efa7a322-8fec-43f2-97e2-7860ffefcc11", "name": "Stream URL updated or rejected.", "originalRequest": { "url": { "path": [ "setStreamUrl", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "api_token", "value": "", "type": "text" }, { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "radio_id", "value": "", "type": "text" }, { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "url", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"status\": \"success\",\n \"result\": null\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "id": "819ca2be-8b89-4174-b475-2ab7cb34d099", "name": "Delete a stream", "request": { "name": "Delete a stream", "description": {}, "url": { "path": [ "deleteStream", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "auth": null, "body": { "mode": "formdata", "formdata": [ { "key": "api_token", "value": "", "type": "text", "description": "(Required) " }, { "key": "radio_id", "value": "", "type": "text", "description": "(Required) " } ] } }, "response": [ { "id": "0d67d7f7-adad-450a-9530-d120fd441b26", "name": "Stream deleted or rejected.", "originalRequest": { "url": { "path": [ "deleteStream", "" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "api_token", "value": "", "type": "text" }, { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "radio_id", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"status\": \"success\",\n \"result\": null\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "id": "1a613a91-ae83-4328-8bd2-344f857df81e", "name": "Long-poll for new recognition events on a category", "request": { "name": "Long-poll for new recognition events on a category", "description": { "content": "Long-polls for new recognition events. The category can be derived\nlocally from the api_token + radio_id, or read from the\n`longpoll_category` field of `getStreams`.\n\n**Important DX caveat:** when no callback URL is configured for the\naccount (which the server signals via error #19 from `getCallbackUrl`),\nlongpoll silently returns timeout responses forever — events never\nfire. Every official SDK preflights `getCallbackUrl` and raises a\ndescriptive error if no callback URL is set. The check is bypassable\nvia a `skip_callback_check` flag.", "type": "text/plain" }, "url": { "path": [ "longpoll", "" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "key": "category", "value": "", "description": "(Required) 9-char longpoll category — `longpoll_category` from `getStreams` or MD5(MD5(api_token)+str(radio_id))[:9]." }, { "disabled": false, "key": "timeout", "value": "50", "description": "Seconds to wait for events before returning the timeout response." }, { "disabled": false, "key": "since_time", "value": "", "description": "Server timestamp (ms) returned in the previous response — used to deduplicate events." } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "auth": null }, "response": [ { "id": "add0f907-2b5a-40b2-aa87-5141626b683f", "name": "Either a timeout response (no events) or an event response (one\nor more new recognitions/notifications).\n", "originalRequest": { "url": { "path": [ "longpoll", "" ], "host": [ "{{baseUrl}}" ], "query": [ { "key": "category", "value": "" }, { "key": "timeout", "value": "50" }, { "key": "since_time", "value": "" } ], "variable": [] }, "header": [ { "description": { "content": "Added as a part of security scheme: apikey", "type": "text/plain" }, "key": "api_token", "value": "" }, { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"externalValue\": \"https://raw.githubusercontent.com/AudDMusic/audd-openapi/63414c0a939be98c9ec6d9c2eb5c4c7b92b60a51/fixtures/longpoll_no_events.json\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ], "event": [] } ], "event": [], "variable": [ { "type": "string", "value": "https://api.audd.io", "key": "baseUrl" } ], "auth": { "type": "apikey", "apikey": [ { "key": "key", "value": "api_token" }, { "key": "value", "value": "{{apiKey}}" }, { "key": "in", "value": "header" } ] }, "info": { "_postman_id": "916f5028-f5dd-4780-b2dc-b368db7f49f7", "name": "AudD Music Recognition Streams API", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "description": { "content": "The AudD music recognition API identifies songs from short audio clips\n(`api.audd.io/`), large audio/video files (`enterprise.audd.io/`), and\nreal-time audio streams (callback or longpoll based on `api.audd.io/`).\n\nThis OpenAPI document is the canonical contract for the API. Every\nofficial AudD SDK validates its parser against the fixtures shipped\nalongside this spec.\n\nDocumentation: https://docs.audd.io\nGet an api_token: https://dashboard.audd.io\nSupport: api@audd.io\n\nContact Support:\n Name: AudD API Support\n Email: api@audd.io", "type": "text/plain" } } }