openapi: 3.1.0 info: title: Songtradr API description: 'This is the Songtradr API. Use it to retrieve deep music metadata and trigger processes like auto-tagging. You can also use the API to manage your account and musicube cloud data. **Authentication** 1. Reach out to support@songtradr.com to receive a free account or use your login data if you are already signed up. 2. To authenticate, you need to login via the POST /api/v1/user/login endpoint. 3. The endpoint responds with a jwtToken which you can use in all following API requests as a bearer token. **Rate Limiting** The current limit is 120 Requests per minute. Reach out to us via support@songtradr.com if you need to request more. **Getting Started with auto-tagging** 1. If you want to get your own files auto-tagged, use the POST /api/v1/user/file/{name}/initUpload endpoint. It responds with a presigned S3 link where you can upload your file. 2. You can check the processing status of your file via the GET /api/v1/user/file/{name}/filesStatus endpoint. 3. As soon as processing is done, you can request the generated data via the GET /api/v1/user/files endpoint. **Getting Started with search** You can either search the released music via the /public/recording endpoints or your own private uploaded music via the /user/file/ endpoints. 1. If you want to search the world''s released music, a good starting point is the GET /api/v1/public/recording/search endpoint. Please find the extensive list of parameters that serve as semantic search filters. 2. If you want to search your own previously uploaded music, a good starting point is the GET GET /api/v1/user/files endpoint. It has the same extensive list of parameters that serve as semantic search filters.' contact: name: Songtradr Inc. url: https://songtradr.com email: info@songtradr.com version: 3.0.0 servers: - url: https://api.songtradr.com description: Generated server url paths: /api/v1/user/update-password: post: tags: - user summary: Update password by using the password reset token operationId: updatePassword requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdatePasswordDTO' required: true responses: '204': description: Password was updated content: application/hal+json: schema: type: object '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/update-password '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/update-password '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/update-password '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/update-password security: - bearer-jwt: [] /api/v1/user/token: post: tags: - user summary: Generates a new JWT token for the given refresh token operationId: token requestBody: content: application/json: schema: $ref: '#/components/schemas/TokenRequest' required: true responses: '200': description: Generated a bearer JWT token content: application/json: schema: $ref: '#/components/schemas/JwtTokenDTO' '401': description: The given refresh token is invalid or expired content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/token '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/token '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/token security: - bearer-jwt: [] /api/v1/user/sign-up: post: tags: - user summary: Sign up a new user. operationId: signUp requestBody: content: application/json: schema: $ref: '#/components/schemas/SaveUserDTO' required: true responses: '200': description: Signed up a new user. content: application/json: schema: $ref: '#/components/schemas/SignUpDTO' '403': description: User is not allowed to sign up other users. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '409': description: User identification is not available. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/sign-up '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/sign-up '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/sign-up '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.290+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/sign-up security: - bearer-jwt: [] /api/v1/user/me: get: tags: - user summary: Details for a logged-in user operationId: me responses: '200': description: Found user details. content: application/json: schema: $ref: '#/components/schemas/UserDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/me '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/me '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/me security: - bearer-jwt: [] post: tags: - user summary: Edit details for a logged-in user operationId: editMe requestBody: content: application/json: schema: $ref: '#/components/schemas/SaveUserDTO' required: true responses: '200': description: Edited user details. content: application/json: schema: type: object '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/me '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/me '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/me '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/me security: - bearer-jwt: [] /api/v1/user/login: post: tags: - user summary: Login to generate a bearer token. operationId: login requestBody: content: application/json: schema: $ref: '#/components/schemas/LoginDTO' required: true responses: '200': description: Generated a bearer JWT token content: application/json: schema: $ref: '#/components/schemas/JwtTokenDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/login '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/login '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/login '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/login security: - bearer-jwt: [] /api/v1/user/forgot-password: post: tags: - user summary: Send a password reset email operationId: forgotPassword requestBody: content: application/json: schema: $ref: '#/components/schemas/ForgotPasswordDTO' required: true responses: '200': description: Password reset email was sent if user exist. content: application/hal+json: schema: type: object '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/forgot-password '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/forgot-password '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/forgot-password '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/forgot-password security: - bearer-jwt: [] /api/v1/user/file/{name}/initUpload: post: tags: - user summary: Initialize a file upload. Responds with an URL where the file can be uploaded. operationId: initiateUserFileUpload parameters: - name: name in: path description: The Name of the file that will be uploaded required: true schema: type: string example: FileName.mp3 - name: folder in: query description: The Name of the folder that the file will be placed in required: true schema: type: string example: FolderName requestBody: content: application/json: schema: $ref: '#/components/schemas/FileUploadDTO' responses: '200': description: Provided URL to upload file. content: application/json: schema: $ref: '#/components/schemas/InitPutRecordingAudioDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/file/{name}/initUpload '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/file/{name}/initUpload '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/file/{name}/initUpload '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 400 error: Bad Request message: a detailed error message path: /api/v1/user/file/{name}/initUpload security: - bearer-jwt: [] /api/v1/user/recording/{ids}: get: tags: - user summary: Recordings by IDs with a medium sized response. operationId: recordingsMediumByIds parameters: - name: ids in: path description: Comma seperated list of IDs. Can be ISRCs or proprietary IDs required: true schema: type: string example: GBAHT0108619 - name: globalView in: query description: Show not only user recordings. required: false schema: type: boolean example: true - name: taxonomyVersion in: query description: The version of the AI taxonomy to use. required: false schema: type: string default: v2_4 enum: - v2_4 example: v2_4 - name: page in: query description: Zero-based page index (0..N) schema: type: integer default: 0 - name: size in: query description: The size of the page to be returned schema: type: integer default: 20 - name: sort in: query description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.' schema: type: array items: type: string responses: '200': description: Found recordings. content: application/json: schema: type: array items: type: string anyOf: - $ref: '#/components/schemas/RecordingMediumV24DTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/recording/{ids} '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/recording/{ids} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/recording/{ids} security: - bearer-jwt: [] /api/v1/user/recording/{ids}/tagstrengths: get: tags: - user summary: Strengths as numerical representations for AI generated moods, musical features and more for recordings. operationId: recordingsByIdsWithTagstrengths parameters: - name: ids in: path description: Comma seperated list of IDs. Can be ISRCs or proprietary IDs required: true schema: type: string example: USUM71703692 - name: categoryName in: query description: Show only tagstrengths for one category. required: false schema: type: string enum: - level1Genre - level2Genre - songRating - performanceRating - productionRating - moodCluster - vocals - dominantInstrument - soundGeneration - rhythm - tonality - audienceAge - audienceGender - audienceRegion - originRegion - originDecade - useCase - tempo - scale - key - harmony - industrySuitability - pretzelStationSuitability - recordingEnvironment - content - brandAttributes - curateability - harmony - arousal - valence - pleasantness - engagement - timbre - roughness - texture - grooviness - space - loudness - bpm example: moodCluster - name: tagName in: query description: Show only tagstrengths for one tag. required: false schema: type: string example: energetic - name: genreName in: query description: Show only tagstrengths for one genre. required: false schema: type: string example: Ska - name: globalView in: query description: Show tagstrengths not only for user recordings. required: false schema: type: boolean example: true - name: taxonomyVersion in: query description: The version of the AI taxonomy to use. required: false schema: type: string default: v2_4 enum: - v2_4 example: v2_4 responses: '200': description: Found recordings. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordingMinimalWithTagstrengthsDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/recording/{ids}/tagstrengths '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/recording/{ids}/tagstrengths '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/recording/{ids}/tagstrengths security: - bearer-jwt: [] /api/v1/user/recording/{ids}/taggrams: get: tags: - user summary: Timeseries of AI generated moods, musical features and more for a list of recordings. operationId: recordingsByIdsWithTaggrams parameters: - name: ids in: path description: Comma seperated list of IDs. Can be ISRCs or proprietary IDs required: true schema: type: string example: USUM71703692 - name: categoryName in: query description: Show only taggrams for one category. required: false schema: type: string enum: - level1Genre - level2Genre - songRating - performanceRating - productionRating - moodCluster - vocals - dominantInstrument - soundGeneration - rhythm - tonality - audienceAge - audienceGender - audienceRegion - originRegion - originDecade - useCase - tempo - scale - key - harmony - industrySuitability - pretzelStationSuitability - recordingEnvironment - content - brandAttributes - curateability - harmony - arousal - valence - pleasantness - engagement - timbre - roughness - texture - grooviness - space - loudness - bpm example: moodCluster - name: tagName in: query description: Show only taggrams for one tag. required: false schema: type: string example: energetic - name: genreName in: query description: Show only taggrams for one genre. required: false schema: type: string example: Ska - name: fromTimestamp in: query description: Show only taggrams data starting from from this timestamp in seconds. required: false schema: type: number example: 16.0 - name: toTimestamp in: query description: Show only taggrams data before this timestamp in seconds. required: false schema: type: number example: 32.0 - name: fillWithZero in: query description: If set to true, empty timeseries are filled with timeseries of 0.0 values. required: false schema: type: boolean example: true - name: globalView in: query description: Show taggrams not only for user recordings required: false schema: type: boolean example: true - name: taxonomyVersion in: query description: The version of the AI taxonomy to use. required: false schema: type: string default: v2_4 enum: - v2_4 example: v2_4 responses: '200': description: Found recordings. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordingMinimalWithTaggramsDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/recording/{ids}/taggrams '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/recording/{ids}/taggrams '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/recording/{ids}/taggrams security: - bearer-jwt: [] /api/v1/user/folder/{folderName}/tagstrengths: get: tags: - user summary: Strengths as numerical representations for AI generated moods, musical features and more for recordings in your folder. operationId: recordingsByFolderWithTagstrengths parameters: - name: folderName in: path description: Folder name required: true schema: type: string example: Default - name: categoryName in: query description: Show only taggrams for one category. required: false schema: type: string enum: - level1Genre - level2Genre - songRating - performanceRating - productionRating - moodCluster - vocals - dominantInstrument - soundGeneration - rhythm - tonality - audienceAge - audienceGender - audienceRegion - originRegion - originDecade - useCase - tempo - scale - key - harmony - industrySuitability - pretzelStationSuitability - recordingEnvironment - content - brandAttributes - curateability - harmony - arousal - valence - pleasantness - engagement - timbre - roughness - texture - grooviness - space - loudness - bpm example: moodCluster - name: tagName in: query description: Show only taggrams for one tag. required: false schema: type: string example: energetic - name: genreName in: query description: Show only taggrams for one genre. required: false schema: type: string example: Ska - name: taxonomyVersion in: query description: The version of the AI taxonomy to use. required: false schema: type: string default: v2_4 enum: - v2_4 example: v2_4 - name: page in: query description: Zero-based page index (0..N) schema: type: integer default: 0 - name: size in: query description: The size of the page to be returned schema: type: integer default: 20 - name: sort in: query description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.' schema: type: array items: type: string responses: '200': description: Found recordings. content: application/json: schema: type: array items: $ref: '#/components/schemas/RecordingMinimalWithTagstrengthsDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/folder/{folderName}/tagstrengths '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/folder/{folderName}/tagstrengths '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/folder/{folderName}/tagstrengths security: - bearer-jwt: [] /api/v1/user/files: get: tags: - user summary: List and search your own files. operationId: userFiles parameters: - name: ISRC in: query description: Search for a ISRC required: false schema: type: string example: USUM71703692 - name: page in: query description: Zero-based page index (0..N) required: false schema: type: integer default: 0 minimum: 0 - name: size in: query description: The size of the page to be returned required: false schema: type: integer default: 100 minimum: 1 - name: sort in: query description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.' required: false schema: type: array default: - uploadStartTime,DESC items: type: string responses: '200': description: found files. content: application/json: schema: $ref: '#/components/schemas/FileListDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/files '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/files '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/files security: - bearer-jwt: [] /api/v1/user/filesSummary: get: tags: - user summary: Summary fo your files. operationId: userFilesSummary parameters: - name: ISRC in: query description: Search for a ISRC required: false schema: type: string example: USUM71703692 responses: '200': description: found files. content: application/json: schema: $ref: '#/components/schemas/FilesSummaryDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/filesSummary '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/filesSummary '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/filesSummary deprecated: true security: - bearer-jwt: [] /api/v1/user/filesStatus: get: tags: - user summary: Status details for files. operationId: userFilesStatus parameters: - name: objectKeys in: query description: Comma-separated list of objectKeys of the files. required: true schema: type: string example: Example-objectKey responses: '200': description: Found files. content: application/json: schema: type: array items: $ref: '#/components/schemas/FileSmallDTO' '400': description: File not found with this objectKey. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/filesStatus '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/filesStatus '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/filesStatus security: - bearer-jwt: [] /api/v1/user/file/{objectKey}: get: tags: - user summary: Details and a download link for a file. operationId: userFile parameters: - name: objectKey in: path description: ObjectKey of the file that should be edited. required: true schema: type: string example: 73818371-0963-412e-aa3d-27c2bab952a3 responses: '200': description: Found file. content: application/json: schema: $ref: '#/components/schemas/FileWIthUrlDTO' '400': description: File not found with this objectKey. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/file/{objectKey} '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/file/{objectKey} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/file/{objectKey} security: - bearer-jwt: [] delete: tags: - user summary: Delete file. operationId: deleteUserFile parameters: - name: objectKey in: path description: ObjectKey of the file that should be deleted. required: true schema: type: string example: 73818371-0963-412e-aa3d-27c2bab952a3 responses: '200': description: Deleted file. content: application/hal+json: schema: type: object '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/user/file/{objectKey} '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/user/file/{objectKey} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/user/file/{objectKey} security: - bearer-jwt: [] /api/v1/similarityVectors/{isrcOrTrackId}: get: tags: - similarity-vector-controller summary: Get similarity vector for a recording description: Returns the similarity vector for a recording. The recording is identified by its ISRC or a proprietary track ID. operationId: getSimilarityVector parameters: - name: isrcOrTrackId in: path description: ISRC or a proprietary track ID. required: true schema: type: string example: GBAHT0108619 - name: vectorVersion in: query description: Version of the similarity vector to be returned. Deprecated, use 'taxonomyVersion' instead. required: false deprecated: true schema: type: string enum: - v2_4 - name: taxonomyVersion in: query description: The version of the AI taxonomy to use. required: false schema: type: string enum: - v2_4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SimilarityVectorDto' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/similarityVectors/{isrcOrTrackId} '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/similarityVectors/{isrcOrTrackId} '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/similarityVectors/{isrcOrTrackId} security: - bearer-jwt: [] /api/v1/allowedValues/musicalFeatures: get: tags: - allowed-values summary: Allowed values for music descriptive parameters to be used in the searchAll endpoint. operationId: allowedMusicalFeatures parameters: - name: responseSize in: query description: Size the response should have. Deprecated because there is no difference in the response size starting with taxonomyVersion v2.4 required: false deprecated: true schema: type: string default: s enum: - s - l - name: taxonomyVersion in: query description: The version of the AI taxonomy to use. required: false schema: type: string default: v2_4 enum: - v2_4 example: v2_4 responses: '200': description: Retrieved searchFilters content: application/json: schema: $ref: '#/components/schemas/SearchFilterValuesDTO' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 401 error: Unauthorized message: a detailed error message path: /api/v1/allowedValues/musicalFeatures '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 429 error: Too Many Requests message: a detailed error message path: /api/v1/allowedValues/musicalFeatures '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: $ref: '#/components/examples/' example: timestamp: '2026-05-15T13:32:42.291+00:00' status: 500 error: Internal Server Error message: a detailed error message path: /api/v1/allowedValues/musicalFeatures components: schemas: UpdatePasswordDTO: type: object properties: token: type: string minLength: 1 password: type: string minLength: 1 required: - password - token TokenRequest: type: object properties: refreshToken: type: string minLength: 1 required: - refreshToken JwtTokenDTO: type: object description: Bearer token to be used for authentication. properties: jwtToken: type: string expirationDate: type: string format: date-time refreshToken: type: string required: - expirationDate - jwtToken ErrorResponse: description: Bearer token to be used for authentication. properties: timestamp: type: string format: date-time description: timestamp status: type: integer format: int32 description: HTTP Status code error: type: string description: HTTP status message message: type: string description: detailed error message path: type: string description: path of the called API endpoint required: - error - status - timestamp SaveUserDTO: type: object description: Credentials for sign-up to musicube the API and Website. properties: system: type: string enum: - musicube - cloud emailAddress: type: string password: type: string fullName: type: string companyName: type: string language: type: string description: Current status of the recording. enum: - en - de required: - emailAddress SignUpDTO: type: object description: Credentials for sign-up to musicube the API and Website. properties: emailAddress: type: string password: type: string fullName: type: string companyName: type: string required: - emailAddress - fullName - password LoginDTO: type: object description: Credentials to be used to retrieve bearer token for authentication. properties: username: type: string version: type: string email: type: string password: type: string required: - email - password ForgotPasswordDTO: type: object properties: emailOrUsername: type: string minLength: 1 system: type: string enum: - musicube - cloud required: - emailOrUsername ConfigAccessDTO: type: object description: Specify access rights. properties: accessorId: type: string description: ID of the accessing entity enum: - full - readOnly rights: type: string description: access rights to a resource enum: - full - readOnly required: - accessorId - rights ConfigIdentifierDTO: type: object description: Key-Value Pairs to specify and identifier. properties: identifierType: type: string identifierValue: type: string required: - identifierType - identifierValue FileUploadDTO: type: object description: Details on content, ownership, purpose and access rights of a file to be uploaded. properties: identifiers: type: array items: $ref: '#/components/schemas/ConfigIdentifierDTO' flags: type: array items: type: string access: type: array items: $ref: '#/components/schemas/ConfigAccessDTO' InitPutRecordingAudioDTO: type: object description: Object that specifies where to upload a file so it can be processed. properties: isrc: type: string deprecated: true objectKey: type: string url: type: string CategoryMinimalDTO: type: object description: A category of tags in its minimal form. properties: categoryName: type: string required: - categoryName ContributorTypeDTO: type: object description: A type of contribution a party (person, group or organization) had on a recording or product. properties: typeName: type: string required: - typeName GenreDTO: type: object description: Genre including its sub-genres. properties: id: type: integer format: int32 name: type: string required: - id - name MusicalFeaturesV24DTO: type: object description: AI generated musical features of a recording for AI taxonomy version 2.4. properties: isrc: type: string createdByVersion: type: string loudness: type: string description: Search for loudness enum: - low - moderate - high loudnessAffinity: type: number format: float bpm: type: number format: float tonality: type: string description: Search for tonality enum: - monotonous - moderate melodiousness - melodious - atonal tonalityAffinity: type: number format: float scale: type: string description: Search for a tonal scale enum: - major key - minor key scaleAffinity: type: number format: float key: type: string description: Search for a harmonic KeyV24 enum: - C - C# - D - D# - E - F - F# - G - G# - A - A# - B keyAffinity: type: number format: float content: type: string enum: - music - no-music contentAffinity: type: number format: float tempo: type: string description: Search for tempo enum: - slow - mid-tempo - fast tempoAffinity: type: number format: float dominantInstrument: type: string description: Search for a dominant instrument enum: - piano - synthesizer - electric bass - brass - percussion - vocals - harp - acoustic bass - acoustic drums - acoustic guitar - dj equipment - electric guitar - electronic drums - free reed - non-western folk strings - orchestral strings - saxophone - western folk strings - woodwinds dominantInstrumentAffinity: type: number format: float secondaryInstrument: type: string description: Search for a dominant instrument enum: - piano - synthesizer - electric bass - brass - percussion - vocals - harp - acoustic bass - acoustic drums - acoustic guitar - dj equipment - electric guitar - electronic drums - free reed - non-western folk strings - orchestral strings - saxophone - western folk strings - woodwinds secondaryInstrumentAffinity: type: number format: float tertiaryInstrument: type: string description: Search for a dominant instrument enum: - piano - synthesizer - electric bass - brass - percussion - vocals - harp - acoustic bass - acoustic drums - acoustic guitar - dj equipment - electric guitar - electronic drums - free reed - non-western folk strings - orchestral strings - saxophone - western folk strings - woodwinds tertiaryInstrumentAffinity: type: number format: float performanceRating: type: string enum: - low performance quality - medium performance quality - high performance quality performanceRatingAffinity: type: number format: float productionRating: type: string enum: - low production quality - medium production quality - high production quality productionRatingAffinity: type: number format: float songRating: type: string enum: - low song quality - medium song quality - high song quality songRatingAffinity: type: number format: float audienceAge: type: string enum: - Generation Z - Younger Generation Y - Older Generation Y - Generation X - Younger Generation B - Older Generation B audienceAgeAffinity: type: number format: float secondaryAudienceAge: type: string enum: - Generation Z - Younger Generation Y - Older Generation Y - Generation X - Younger Generation B - Older Generation B secondaryAudienceAgeAffinity: type: number format: float tertiaryAudienceAge: type: string enum: - Generation Z - Younger Generation Y - Older Generation Y - Generation X - Younger Generation B - Older Generation B tertiaryAudienceAgeAffinity: type: number format: float audienceGender: type: string enum: - male - female - diverse audienceGenderAffinity: type: number format: float audienceRegion: type: string enum: - Australia and New Zealand - Central America and the Caribbean - Central and Southern Asia - Eastern Asia - Eastern Europe - Northern Africa and Western Asia - Northern America - South America - South-Eastern Asia - Southern Europe - Sub-Saharan Africa - Western and Northern Europe audienceRegionAffinity: type: number format: float secondaryAudienceRegion: type: string enum: - Australia and New Zealand - Central America and the Caribbean - Central and Southern Asia - Eastern Asia - Eastern Europe - Northern Africa and Western Asia - Northern America - South America - South-Eastern Asia - Southern Europe - Sub-Saharan Africa - Western and Northern Europe secondaryAudienceRegionAffinity: type: number format: float tertiaryAudienceRegion: type: string enum: - Australia and New Zealand - Central America and the Caribbean - Central and Southern Asia - Eastern Asia - Eastern Europe - Northern Africa and Western Asia - Northern America - South America - South-Eastern Asia - Southern Europe - Sub-Saharan Africa - Western and Northern Europe tertiaryAudienceRegionAffinity: type: number format: float industrySuitability: type: string description: Search for Industry suitability enum: - Automobiles and Parts - Consumer Products and Services - Financial Services - Food, Beverage and Tobacco - Health Care - Insurance - Media - Politics, Government and Organizations - Real Estate - Retail - Technology - Telecommunications - Travel and Leisure industrySuitabilityAffinity: type: number format: float pretzelStationSuitability: type: string description: Search for pretzel station suitability enum: - Afro Beats - Alternative - Ambient - Apex Legends - Baten Kaitos - Blues - Call of Duty - Calming Cinematics - Chess - Chill Bass - Chill EDM - Chill Guitars - Chill Jazz - Chill Piano - Chill Pop - Chill - Chiptune - Classic Rock - Classical - Country - Drum _ Bass - Dungeons _ Dragons - EDM - Electro-Swing - Emo - Epic - Fifa - Final Fantasy - Folk - Fortnite - Forza Horizon - Funk - GTA - Happy EDM - Happy Holidays! - Hard Dance - Hip Hop - House Grooves - Hype Bangers! - Hype Bass! - Indie - Industrial - Jazz - Latin Pop - League of Legends - Lofi - Love Bug - Main Character - Meditation - Melodic Bass - Metal - Minecraft - Polka - Pop - Punk - R_B - Reggae - Rock - Ska - Spooky - Synthwave - Techno - The Elevator - The Lounge - Traditional Latin - Tran - Upbeat Dance - VHS - Valorant - World of Warcraft - World - Yacht Rock - Disco pretzelStationSuitabilityAffinity: type: number format: float primaryMoodCluster: type: string enum: - aggressive - calm - confident - dark - dreamy - driving - energetic - epic - exciting - happy - hopeful - nostalgic - reflective - restless - romantic - sad - scary - sexy - tender - uplifting - warm - whimsical primaryMoodClusterAffinity: type: number format: float secondaryMoodCluster: type: string enum: - aggressive - calm - confident - dark - dreamy - driving - energetic - epic - exciting - happy - hopeful - nostalgic - reflective - restless - romantic - sad - scary - sexy - tender - uplifting - warm - whimsical secondaryMoodClusterAffinity: type: number format: float tertiaryMoodCluster: type: string enum: - aggressive - calm - confident - dark - dreamy - driving - energetic - epic - exciting - happy - hopeful - nostalgic - reflective - restless - romantic - sad - scary - sexy - tender - uplifting - warm - whimsical tertiaryMoodClusterAffinity: type: number format: float originRegion: type: string enum: - Central America and the Caribbean - Central and Southern Asia - Eastern Asia - Eastern Europe - Northern Africa and Western Asia - Northern America - Australia and New Zealand - South America - South-Eastern Asia - Southern Europe - Sub-Saharan Africa - Western and Northern Europe originRegionAffinity: type: number format: float useCase: type: string description: Search for use case enum: - Extreme Sports - Background - Relaxation/Meditation - Halloween - Roadtrip - Party - Winter - Valentine's Day - Christmas - Gaming - Workout/Fitness - Study/Work - Summer - Cooking & Eating - Celebrations useCaseAffinity: type: number format: float secondaryUseCase: type: string description: Search for use case enum: - Extreme Sports - Background - Relaxation/Meditation - Halloween - Roadtrip - Party - Winter - Valentine's Day - Christmas - Gaming - Workout/Fitness - Study/Work - Summer - Cooking & Eating - Celebrations secondaryUseCaseAffinity: type: number format: float valence: type: string description: Search for a valence enum: - negative valence - neutral valence - positive valence valenceAffinity: type: number format: float engagement: type: string description: Search for an engagement enum: - unengaging - neutral engagement - engaging engagementAffinity: type: number format: float grooviness: type: string description: Search for groovyness enum: - steady - moderate rhythm feel - groovy groovinessAffinity: type: number format: float harmony: type: string description: Search for a degree of harmoniousness enum: - dissonant - consonant harmonyAffinity: type: number format: float pleasantness: type: string description: Search for pleasantness enum: - unpleasant - neutral pleasantness - pleasant pleasantnessAffinity: type: number format: float timbre: type: string description: Search for timbre enum: - warm - moderate timbre - bright timbreAffinity: type: number format: float space: type: string description: Search for space enum: - compact - moderate space - wide spaceAffinity: type: number format: float texture: type: string description: Search for texture enum: - thin - moderate texture - full textureAffinity: type: number format: float soundGeneration: type: string description: Search for type of sound generation enum: - acoustic - electric - synthetic soundGenerationAffinity: type: number format: float originDecade: type: string description: Search for origin decade enum: - pre-1950s - 1950s - 1960s - 1970s - 1980s - 1990s - 2000s - 2010s - 2020s originDecadeAffinity: type: number format: float vocals: type: string description: Search for a vocal gender or instrumental songs enum: - instrumental - female vocals - male vocals - mixed vocals - choir vocalsAffinity: type: number format: float curateability: type: string description: Search for curatebility enum: - curateable - uncurateable curateabilityAffinity: type: number format: float arousal: type: string description: Search for an arousal enum: - moderate arousal - low arousal - high arousal arousalAffinity: type: number format: float roughness: type: string description: Search for roughness enum: - clear - moderate roughness - distorted roughnessAffinity: type: number format: float recordingEnvironment: type: string enum: - studio - live recordingEnvironmentAffinity: type: number format: float rhythm: type: string description: Search for rhythm enum: - common time - complex time signature - triplets rhythmAffinity: type: number format: float level1Genre: type: string enum: - Ambient - Blues - Country - Electronic - Folk - Funk, Soul and R&B - Hip Hop - Jazz - Latin - Metal - Orchestral, Score and Classical - Pop - Reggae - Rock - Spoken Word - World level1GenreAffinity: type: number format: float secondaryLevel1Genre: type: string enum: - Ambient - Blues - Country - Electronic - Folk - Funk, Soul and R&B - Hip Hop - Jazz - Latin - Metal - Orchestral, Score and Classical - Pop - Reggae - Rock - Spoken Word - World secondaryLevel1GenreAffinity: type: number format: float tertiaryLevel1Genre: type: string enum: - Ambient - Blues - Country - Electronic - Folk - Funk, Soul and R&B - Hip Hop - Jazz - Latin - Metal - Orchestral, Score and Classical - Pop - Reggae - Rock - Spoken Word - World tertiaryLevel1GenreAffinity: type: number format: float level2Genre: type: string enum: - Acapella - Acid Jazz - Adult Contemporary - Afro Beats - Alternative Hip Hop - Alternative Rock - Ambient House - American Folk - Arabian Folk - Audioplay - Baroque - Bebop - Black Metal - Bluegrass - Blues Rock - Boogie Woogie - Boom Bap - Bossa Nova - Breakbeat - Chinese Folk - Chiptune - Choro - Classic Blues - Classical Period - Contemporary Blues - Contemporary Classical - Contemporary R&B - Cool Jazz - Country Pop - Country Rock - Cumbia - Dance Pop - Dancehall - Death Metal - Deep Ambient - Deep House - Disco - Disco House - Dixieland - Doo Wop - Doom Metal - Drum and Bass - Dub - Dubstep - Early Funk - Easy Listening - Electro House - Electro Pop - Electroclash - Electronica - Eurodance - Experimental Electronic - Film Score - Flamenco - Folk Pop - Folk Rock - Forró - Free Jazz - Funk - Funk Rap - Fusion - Garage Rock - Glam Rock - Gospel - Gothic Rock - Grime - Grind Core - Grunge - Hard Dance - Hard Rock - Heavy Metal - Honky Tonk - House - IDM - Indian Folk - Indie Pop - Indie Rock - Industrial Techno - Irish Folk - Latin Jazz - Latin Pop - Lofi Hip Hop - Mariachi - Math Rock - Mersey Beat - Metalcore - Neo Soul - New Age - New Wave - Noise Rock - Nu Funk - Nu Metal - Old School Hip Hop - Old School Soul - Pop Punk - Pop Rap - Pop Rock - Post Hardcore - Post Metal - Post Punk - Post Rock - Progressive Metal - Progressive Rock - Psychodelic Rock - Psytrance - Punk - Ragtime - Reggaeton - Renaissance - Rhythm and Blues - Rock'n'Roll - Romanticism - Roots Reggae - Salsa - Samba - Sertanejo - Shoegaze - Ska - Ska Punk - Smooth Jazz - Soul - Stoner Rock - Swing - Symphonic Metal - Synth Pop - Synthwave - Tango - Tech House - Techno - Thrash Metal - Trance - Trap - Trip Hop - Urban - Volksmusik level2GenreAffinity: type: number format: float secondaryLevel2Genre: type: string enum: - Acapella - Acid Jazz - Adult Contemporary - Afro Beats - Alternative Hip Hop - Alternative Rock - Ambient House - American Folk - Arabian Folk - Audioplay - Baroque - Bebop - Black Metal - Bluegrass - Blues Rock - Boogie Woogie - Boom Bap - Bossa Nova - Breakbeat - Chinese Folk - Chiptune - Choro - Classic Blues - Classical Period - Contemporary Blues - Contemporary Classical - Contemporary R&B - Cool Jazz - Country Pop - Country Rock - Cumbia - Dance Pop - Dancehall - Death Metal - Deep Ambient - Deep House - Disco - Disco House - Dixieland - Doo Wop - Doom Metal - Drum and Bass - Dub - Dubstep - Early Funk - Easy Listening - Electro House - Electro Pop - Electroclash - Electronica - Eurodance - Experimental Electronic - Film Score - Flamenco - Folk Pop - Folk Rock - Forró - Free Jazz - Funk - Funk Rap - Fusion - Garage Rock - Glam Rock - Gospel - Gothic Rock - Grime - Grind Core - Grunge - Hard Dance - Hard Rock - Heavy Metal - Honky Tonk - House - IDM - Indian Folk - Indie Pop - Indie Rock - Industrial Techno - Irish Folk - Latin Jazz - Latin Pop - Lofi Hip Hop - Mariachi - Math Rock - Mersey Beat - Metalcore - Neo Soul - New Age - New Wave - Noise Rock - Nu Funk - Nu Metal - Old School Hip Hop - Old School Soul - Pop Punk - Pop Rap - Pop Rock - Post Hardcore - Post Metal - Post Punk - Post Rock - Progressive Metal - Progressive Rock - Psychodelic Rock - Psytrance - Punk - Ragtime - Reggaeton - Renaissance - Rhythm and Blues - Rock'n'Roll - Romanticism - Roots Reggae - Salsa - Samba - Sertanejo - Shoegaze - Ska - Ska Punk - Smooth Jazz - Soul - Stoner Rock - Swing - Symphonic Metal - Synth Pop - Synthwave - Tango - Tech House - Techno - Thrash Metal - Trance - Trap - Trip Hop - Urban - Volksmusik secondaryLevel2GenreAffinity: type: number format: float brandAttributes: type: string description: Search for brand attributes enum: - bold - expert - human - innovative - optimistic - trustworthy brandAttributesAffinity: type: number format: float embeddingsV24: type: array items: type: number format: float PartySmallDTO: type: object description: Party (person, group or organization) with a small field-set. properties: id: type: string fullName: type: string required: - fullName - id RecordingGenrePredictionV24DTO: type: object description: AI-predicted Genres for a recording properties: genreName: type: string genreType: type: string enum: - level1Genre - level2Genre probability: type: number format: float required: - genreName - genreType - probability RecordingMediumV24DTO: type: object description: Recording with a mid-sized field set for AI taxonomy version 2.4. properties: recordingPartyEntities: type: array items: $ref: '#/components/schemas/RecordingPartyDTO' uniqueItems: true spotifyId: type: string releaseDate: type: string format: date-time languageOfPerformance: type: string tags: type: array items: $ref: '#/components/schemas/RecordingTagSmallDTO' inferenceUpdatedAt: type: string format: date-time isrc: type: string titles: type: array items: $ref: '#/components/schemas/TitleDTO' uniqueItems: true tracks: type: array items: $ref: '#/components/schemas/TrackDTO' genres: type: array items: $ref: '#/components/schemas/GenreDTO' uniqueItems: true genrePredictions: type: array items: $ref: '#/components/schemas/RecordingGenrePredictionV24DTO' uniqueItems: true musicalFeatures: $ref: '#/components/schemas/MusicalFeaturesV24DTO' required: - isrc RecordingPartyDTO: type: object description: Party (person, group or organization) that contributed to a recording. properties: party: $ref: '#/components/schemas/PartySmallDTO' contributorTypes: type: array items: $ref: '#/components/schemas/ContributorTypeDTO' required: - party RecordingTagSmallDTO: type: object description: Tag information in with a small field-set. properties: tag: $ref: '#/components/schemas/TagDTO' required: - tag TagDTO: type: object description: A tag for recordings. properties: id: type: integer format: int32 categories: type: array items: $ref: '#/components/schemas/CategoryMinimalDTO' name: type: string required: - id - name TitleDTO: type: object description: A Title for recordings or products. properties: titleText: type: string required: - titleText TrackDTO: type: object description: A track that connects from recording to a product with a mid-sized field set. properties: songtradrTrackId: type: string RecordingMinimalWithTagstrengthsDTO: type: object description: Recording in its minimal form, but with AI-predicted musical features. properties: isrc: type: string tagstrengths: type: array items: $ref: '#/components/schemas/TagstrengthDTO' required: - isrc TagstrengthDTO: type: object description: A TaggramDTO for recordings. properties: strength: type: number format: float description: Strength of presence of the corresponding category, tag or genre. categoryName: type: string tagName: type: string genreName: type: string scale: type: array items: type: integer format: int32 required: - categoryName - strength RecordingMinimalWithTaggramsDTO: type: object description: Recording in its minimal form, but with AI-predicted musical features. properties: isrc: type: string timestamps: type: array description: Points in time in seconds. Each value refers to the taggrams values of the same index. items: type: number format: float taggrams: type: array items: $ref: '#/components/schemas/TaggramDTO' required: - isrc TaggramDTO: type: object description: A TaggramDTO for recordings. properties: timeseries: type: array description: Values represent the strength of presence of the corresponding category, tag or genre. items: type: number format: float categoryName: type: string tagName: type: string genreName: type: string scale: type: array items: type: integer format: int32 required: - categoryName - timeseries UserDTO: type: object description: All details on a user. properties: username: type: string emailAddress: type: string companyName: type: string isAdmin: type: boolean fullSearchAllowed: type: boolean recordingDetailAllowed: type: boolean artistDetailAllowed: type: boolean signupAllowed: type: boolean genresAllowed: type: boolean moodsAllowed: type: boolean instrumentationAllowed: type: boolean soundFeaturesAllowed: type: boolean tonalFeaturesAllowed: type: boolean rhythmFeaturesAllowed: type: boolean audienceAllowed: type: boolean originAllowed: type: boolean qualityAllowed: type: boolean reducedMusicalFeatures: type: boolean confirmed: type: boolean language: type: string recordingEndpointsAllowed: type: boolean isAllowedToRequestAllRecordings: type: boolean admin: type: boolean required: - artistDetailAllowed - audienceAllowed - confirmed - emailAddress - fullSearchAllowed - genresAllowed - instrumentationAllowed - isAdmin - isAllowedToRequestAllRecordings - language - moodsAllowed - originAllowed - qualityAllowed - recordingDetailAllowed - recordingEndpointsAllowed - reducedMusicalFeatures - rhythmFeaturesAllowed - signupAllowed - soundFeaturesAllowed - tonalFeaturesAllowed - username FileDTO: type: object description: Details on a file that has been uploaded for auto-tagging or audio-recognition purposes. properties: id: type: integer format: int32 deprecated: true name: type: string objectKey: type: string folder: type: string extension: type: string description: extension of the file enum: - mp3 - wav - flac url: type: string uploadStartTime: type: string format: date-time uploadEndTime: type: string format: date-time fingerprintStatus: type: string description: status of the audio recognition enum: - processing - error - found - not_found - not_started fingerprintStartTime: type: string format: date-time fingerprintEndTime: type: string format: date-time inferenceStatus: type: string description: status of the auto-tagging enum: - processing - error - done - not_started inferenceStartTime: type: string format: date-time inferenceEndTime: type: string format: date-time recording: $ref: '#/components/schemas/RecordingMediumBaseDTO' error_time: type: string format: date-time error_message: type: string required: - extension - folder - id - name - objectKey FileListDTO: type: object description: List of files. properties: files: type: array items: $ref: '#/components/schemas/FileDTO' hasNextPage: type: boolean currentPageNumber: type: integer format: int32 totalResults: type: integer format: int64 required: - currentPageNumber - files - hasNextPage - totalResults RecordingMediumBaseDTO: type: object properties: recordingPartyEntities: type: array items: $ref: '#/components/schemas/RecordingPartyDTO' uniqueItems: true spotifyId: type: string releaseDate: type: string format: date-time languageOfPerformance: type: string tags: type: array items: $ref: '#/components/schemas/RecordingTagSmallDTO' inferenceUpdatedAt: type: string format: date-time isrc: type: string titles: type: array items: $ref: '#/components/schemas/TitleDTO' uniqueItems: true tracks: type: array items: $ref: '#/components/schemas/TrackDTO' genres: type: array items: $ref: '#/components/schemas/GenreDTO' uniqueItems: true required: - isrc FieldSummaryDTO: type: object description: Summary of genres occuring in files. properties: fieldValue: type: string total: type: integer format: int64 fieldName: type: string required: - fieldName - fieldValue - total FilesSummaryDTO: type: object description: Summary of content of files properties: fileDetailsSummary: type: array items: $ref: '#/components/schemas/FieldSummaryDTO' genreSummary: type: array items: $ref: '#/components/schemas/GenresSummaryDTO' tagSummary: type: array items: $ref: '#/components/schemas/TagsSummaryDTO' musicalFeaturesSummary: type: array items: $ref: '#/components/schemas/FieldSummaryDTO' totalFiles: type: integer format: int32 bpmMin: type: number format: float bpmMax: type: number format: float required: - totalFiles GenresSummaryDTO: type: object description: Summary of genres occuring in files. properties: name: type: string total: type: integer format: int64 genreType: type: string required: - name - total TagsSummaryDTO: type: object description: Summary of tags occuring in files. properties: name: type: string categories: type: array items: $ref: '#/components/schemas/CategoryMinimalDTO' total: type: integer format: int32 required: - name - total FileSmallDTO: type: object description: Reduced details on a file that has been uploaded for auto-tagging or audio-recognition purposes. properties: folder: type: string name: type: string id: type: integer format: int32 extension: type: string description: extension of the file enum: - mp3 - wav - flac error_message: type: string objectKey: type: string uploadStartTime: type: string format: date-time uploadEndTime: type: string format: date-time fingerprintStatus: type: string description: status of the audio recognition enum: - processing - error - found - not_found - not_started fingerprintStartTime: type: string format: date-time fingerprintEndTime: type: string format: date-time inferenceStatus: type: string description: status of the auto-tagging enum: - processing - error - done - not_started inferenceStartTime: type: string format: date-time inferenceEndTime: type: string format: date-time error_time: type: string format: date-time required: - extension - folder - id - name - objectKey FileWIthUrlDTO: type: object description: Details on a file that has been uploaded for auto-tagging or audio-recognition purposes. including download path. properties: file: $ref: '#/components/schemas/FileDTO' url: type: string required: - file - url SimilarityVectorDto: type: object description: Similarity vector for a recording. properties: similarityVector: type: array items: type: number format: float isrc: type: string title: type: string artists: type: array items: type: string SearchFilterValuesDTO: type: object description: Categories of musical features that can be used as search filters. properties: primaryMoodCluster: type: array items: type: string secondaryMoodCluster: type: array items: type: string tertiaryMoodCluster: type: array items: type: string valence: type: array items: type: string arousal: type: array items: type: string pleasantness: type: array items: type: string engagement: type: array items: type: string vocals: type: array items: type: string dominantInstrument: type: array items: type: string secondaryInstrument: type: array items: type: string tertiaryInstrument: type: array items: type: string energy: type: array items: type: string soundGeneration: type: array items: type: string tempo: type: array items: type: string scale: type: array items: type: string key: type: array items: type: string rhythm: type: array items: type: string primarySoundCharacter: type: array items: type: string timbre: type: array items: type: string roughness: type: array items: type: string tonality: type: array items: type: string harmony: type: array items: type: string texture: type: array items: type: string groovyness: type: array items: type: string grooviness: type: array items: type: string space: type: array items: type: string loudness: type: array items: type: string productionRating: type: array items: type: string performanceRating: type: array items: type: string songRating: type: array items: type: string audienceAge: type: array items: type: string secondaryAudienceAge: type: array items: type: string tertiaryAudienceAge: type: array items: type: string audienceGender: type: array items: type: string audienceRegion: type: array items: type: string secondaryAudienceRegion: type: array items: type: string tertiaryAudienceRegion: type: array items: type: string originDecade: type: array items: type: string originRegion: type: array items: type: string languageOfPerformance: type: array items: type: string curateability: type: array items: type: string useCase: type: array items: type: string channelSuitability: type: array items: type: string pretzelStationSuitability: type: array items: type: string recordingEnvironment: type: array items: type: string content: type: array items: type: string moodPlayer: type: array items: type: string secondaryMoodPlayer: type: array items: type: string brandAttributes: type: array items: type: string required: - arousal - audienceAge - audienceGender - audienceRegion - brandAttributes - channelSuitability - content - curateability - dominantInstrument - energy - engagement - grooviness - groovyness - harmony - key - languageOfPerformance - loudness - moodPlayer - originDecade - originRegion - performanceRating - pleasantness - pretzelStationSuitability - primaryMoodCluster - primarySoundCharacter - productionRating - recordingEnvironment - rhythm - roughness - scale - secondaryAudienceAge - secondaryAudienceRegion - secondaryInstrument - secondaryMoodCluster - secondaryMoodPlayer - songRating - soundGeneration - space - tempo - tertiaryAudienceAge - tertiaryAudienceRegion - tertiaryInstrument - tertiaryMoodCluster - texture - timbre - tonality - useCase - valence - vocals securitySchemes: bearer-jwt: type: http description: "To authenticate, you have to call POST https://api.songtradr.com/api/v1/user/login \nand use the response's\ \ jwtToken as a bearer Token in all following API calls." name: Authorization in: header scheme: bearer bearerFormat: JWT