openapi: 3.0.1 info: title: ACRCloud API description: >- Specification of the ACRCloud automatic content recognition (ACR) APIs. The Identification API recognizes music, custom audio, live channels, and humming from a short audio sample or a precomputed fingerprint using HMAC-SHA1 signed requests. The Console API (api-v2.acrcloud.com) manages buckets, audio files, file-scanning containers, and broadcast-monitoring projects using bearer-token access tokens, and the external Metadata API enriches tracks with third-party music metadata. termsOfService: https://www.acrcloud.com/terms/ contact: name: ACRCloud Support email: support@acrcloud.com url: https://www.acrcloud.com version: '1.0' servers: - url: https://identify-eu-west-1.acrcloud.com description: Identification API (EU West region; other regions use identify-{region}.acrcloud.com) - url: https://api-v2.acrcloud.com description: Console API and bucket/file/project management - url: https://eu-api-v2.acrcloud.com description: External Metadata API (region-specific host) tags: - name: Identification description: Recognize music, custom audio, and humming from a sample or fingerprint. - name: Buckets description: Manage custom recognition buckets. - name: Audio Files description: Upload and manage audio files and fingerprints within a bucket. - name: File Scanning description: Manage file-scanning containers that detect content from buckets. - name: Broadcast Monitoring description: Manage broadcast-database monitoring projects and result callbacks. - name: Metadata description: Look up enriched third-party music metadata. paths: /v1/identify: post: operationId: identify tags: - Identification summary: Identify music or custom audio from a sample or fingerprint. description: >- Submits a short audio sample (recommended under 15 seconds) or a precomputed fingerprint and returns matched track metadata. The request is authenticated with an HMAC-SHA1 signature computed from the access secret over a string built from the HTTP method, endpoint URI, access key, data type, signature version, and timestamp joined by newlines. security: - acrSignature: [] requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/IdentifyRequest' responses: '200': description: Identification result (a status code of 0 indicates success). content: application/json: schema: $ref: '#/components/schemas/IdentifyResponse' /api/buckets: get: operationId: listBuckets tags: - Buckets summary: List buckets. security: - bearerAuth: [] parameters: - name: region in: query schema: type: string - name: type in: query schema: type: string - name: page in: query schema: type: integer - name: per_page in: query schema: type: integer responses: '200': description: Paginated list of buckets. content: application/json: schema: $ref: '#/components/schemas/BucketList' post: operationId: createBucket tags: - Buckets summary: Create a bucket. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BucketCreate' responses: '201': description: The created bucket. content: application/json: schema: $ref: '#/components/schemas/Bucket' /api/buckets/{id}: parameters: - name: id in: path required: true schema: type: string get: operationId: getBucket tags: - Buckets summary: Retrieve a bucket. security: - bearerAuth: [] responses: '200': description: The requested bucket. content: application/json: schema: $ref: '#/components/schemas/Bucket' put: operationId: updateBucket tags: - Buckets summary: Update a bucket. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BucketCreate' responses: '200': description: The updated bucket. content: application/json: schema: $ref: '#/components/schemas/Bucket' delete: operationId: deleteBucket tags: - Buckets summary: Delete a bucket (the bucket must be emptied first). security: - bearerAuth: [] responses: '204': description: Bucket deleted. /api/buckets/{bucket_id}/files: parameters: - name: bucket_id in: path required: true schema: type: string get: operationId: listAudioFiles tags: - Audio Files summary: List audio files in a bucket. security: - bearerAuth: [] parameters: - name: search in: query schema: type: string - name: state in: query schema: type: integer - name: page in: query schema: type: integer - name: per_page in: query schema: type: integer responses: '200': description: Paginated list of audio files. content: application/json: schema: $ref: '#/components/schemas/AudioFileList' post: operationId: uploadAudioFile tags: - Audio Files summary: Upload an audio file or fingerprint to a bucket. security: - bearerAuth: [] requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/AudioFileUpload' responses: '201': description: The created audio file record. content: application/json: schema: $ref: '#/components/schemas/AudioFile' /api/buckets/{bucket_id}/files/{ids}: parameters: - name: bucket_id in: path required: true schema: type: string - name: ids in: path required: true description: Comma-separated file IDs or ACR IDs. schema: type: string get: operationId: getAudioFiles tags: - Audio Files summary: Retrieve one or more audio files by ID or ACR ID. security: - bearerAuth: [] responses: '200': description: Matching audio file records. content: application/json: schema: type: array items: $ref: '#/components/schemas/AudioFile' delete: operationId: deleteAudioFiles tags: - Audio Files summary: Delete one or more audio files. security: - bearerAuth: [] responses: '204': description: Files deleted. /api/fs-containers: get: operationId: listFileScanningContainers tags: - File Scanning summary: List file-scanning containers. security: - bearerAuth: [] parameters: - name: region in: query schema: type: string - name: name in: query schema: type: string responses: '200': description: List of file-scanning containers. content: application/json: schema: type: array items: $ref: '#/components/schemas/FsContainer' post: operationId: createFileScanningContainer tags: - File Scanning summary: Create a file-scanning container. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FsContainerCreate' responses: '201': description: The created container. content: application/json: schema: $ref: '#/components/schemas/FsContainer' /api/fs-containers/{container_id}: parameters: - name: container_id in: path required: true schema: type: string get: operationId: getFileScanningContainer tags: - File Scanning summary: Retrieve a file-scanning container. security: - bearerAuth: [] responses: '200': description: The requested container. content: application/json: schema: $ref: '#/components/schemas/FsContainer' put: operationId: updateFileScanningContainer tags: - File Scanning summary: Update a file-scanning container. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FsContainerCreate' responses: '200': description: The updated container. content: application/json: schema: $ref: '#/components/schemas/FsContainer' delete: operationId: deleteFileScanningContainer tags: - File Scanning summary: Delete a file-scanning container. security: - bearerAuth: [] responses: '204': description: Container deleted. /api/bm-bd-projects: get: operationId: listBroadcastProjects tags: - Broadcast Monitoring summary: List broadcast-database monitoring projects. security: - bearerAuth: [] parameters: - name: region in: query schema: type: string responses: '200': description: List of broadcast-monitoring projects. content: application/json: schema: type: array items: $ref: '#/components/schemas/BmProject' post: operationId: createBroadcastProject tags: - Broadcast Monitoring summary: Create a broadcast-database monitoring project. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BmProjectCreate' responses: '201': description: The created project. content: application/json: schema: $ref: '#/components/schemas/BmProject' /api/bm-bd-projects/{id}: parameters: - name: id in: path required: true schema: type: string put: operationId: updateBroadcastProject tags: - Broadcast Monitoring summary: Update a broadcast-monitoring project. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BmProjectCreate' responses: '200': description: The updated project. content: application/json: schema: $ref: '#/components/schemas/BmProject' delete: operationId: deleteBroadcastProject tags: - Broadcast Monitoring summary: Delete a broadcast-monitoring project. security: - bearerAuth: [] responses: '204': description: Project deleted. /api/bm-bd-projects/{id}/result-callback: parameters: - name: id in: path required: true schema: type: string post: operationId: setResultCallback tags: - Broadcast Monitoring summary: Set the results callback URL for a broadcast-monitoring project. security: - bearerAuth: [] requestBody: required: true content: application/json: schema: type: object properties: result_callback_url: type: string format: uri result_callback_send_noresult: type: boolean result_callback_result_type: type: integer description: 0 = RealTime, 1 = Delay. responses: '200': description: Callback configured. /api/external-metadata/tracks: get: operationId: getExternalMetadataTracks tags: - Metadata summary: Look up enriched track metadata. description: >- Returns enriched music metadata for a track resolved by ISRC, ACR ID, source URL, or free-text query, including platform-specific external IDs and links across Spotify, Deezer, YouTube, and Apple Music. security: - bearerAuth: [] parameters: - name: isrc in: query schema: type: string - name: acr_id in: query schema: type: string - name: source_url in: query schema: type: string - name: query in: query schema: type: string - name: platforms in: query description: Comma-separated platforms (max 5). Default spotify,deezer,youtube,applemusic. schema: type: string - name: include_works in: query schema: type: integer - name: format in: query schema: type: string enum: [text, json] default: text responses: '200': description: Track metadata. content: application/json: schema: $ref: '#/components/schemas/MetadataTrack' components: securitySchemes: acrSignature: type: apiKey in: query name: signature description: >- HMAC-SHA1 request signing for the Identification API. The client sends access_key, timestamp, signature_version=1, data_type, and a Base64 signature. The signature is HMAC-SHA1 of the string "POST\n/v1/identify\n {access_key}\n{data_type}\n1\n{timestamp}" keyed with the access_secret. bearerAuth: type: http scheme: bearer description: >- Console API access token created in the ACRCloud console developer settings and sent as "Authorization: Bearer {token}". schemas: IdentifyRequest: type: object required: - access_key - data_type - signature_version - signature - timestamp properties: sample: type: string format: binary description: Audio or fingerprint payload (under 5MB). sample_bytes: type: integer description: Size of the sample in bytes. access_key: type: string description: Project access key. data_type: type: string enum: [audio, fingerprint] signature_version: type: string enum: ['1'] signature: type: string description: Base64-encoded HMAC-SHA1 signature. timestamp: type: string description: Unix epoch timestamp. IdentifyResponse: type: object properties: status: type: object properties: code: type: integer description: 0 indicates success. msg: type: string version: type: string result_type: type: integer metadata: type: object properties: timestamp_utc: type: string music: type: array items: $ref: '#/components/schemas/MusicMatch' custom_files: type: array items: type: object MusicMatch: type: object properties: title: type: string acrid: type: string isrc: type: string duration_ms: type: integer score: type: integer release_date: type: string artists: type: array items: type: object properties: name: type: string album: type: object properties: name: type: string external_ids: type: object properties: isrc: type: string iswc: type: string upc: type: string genres: type: array items: type: object properties: name: type: string Bucket: type: object properties: id: type: string name: type: string region: type: string type: type: string net_type: type: integer state: type: integer created_at: type: string updated_at: type: string BucketCreate: type: object required: - name - region properties: name: type: string region: type: string type: type: string net_type: type: integer labels: type: array items: type: string metadata_template: type: object BucketList: type: object properties: data: type: array items: $ref: '#/components/schemas/Bucket' meta: $ref: '#/components/schemas/PageMeta' AudioFile: type: object properties: id: type: string acr_id: type: string bucket_id: type: string title: type: string state: type: integer duration: type: number user_defined: type: object created_at: type: string updated_at: type: string AudioFileUpload: type: object required: - data_type properties: file: type: string format: binary title: type: string data_type: type: string enum: [audio, fingerprint, audio_url, acrid] user_defined: type: string description: JSON-encoded user-defined metadata. AudioFileList: type: object properties: data: type: array items: $ref: '#/components/schemas/AudioFile' meta: $ref: '#/components/schemas/PageMeta' FsContainer: type: object properties: id: type: string name: type: string region: type: string audio_type: type: string state: type: integer created_at: type: string FsContainerCreate: type: object required: - name - region - buckets properties: name: type: string region: type: string audio_type: type: string description: linein (clean) or recorded/noisy audio handling. buckets: type: array items: type: string engine: type: object policy: type: object callback_url: type: string format: uri music_detection: type: integer ai_detection: type: integer BmProject: type: object properties: id: type: string name: type: string region: type: string state: type: integer created_at: type: string BmProjectCreate: type: object required: - name - region properties: name: type: string region: type: string description: e.g. eu-west-1, us-west-2, ap-southeast-1. buckets: type: array items: type: string MetadataTrack: type: object properties: name: type: string isrc: type: string duration_ms: type: integer release_date: type: string artists: type: array items: type: object properties: name: type: string album: type: object properties: name: type: string upc: type: string label: type: string genres: type: array items: type: string external_metadata: type: object description: Platform-specific IDs, links, and preview URLs. works: type: array items: type: object description: Composition details and contributors (when include_works=1). PageMeta: type: object properties: page: type: integer per_page: type: integer total: type: integer