openapi: 3.0.1 info: title: Audius API description: | ## Overview The Audius API provides REST access to the world's largest open music catalog, built on the [Open Audio Protocol](https://openaudio.org). Use it to query and stream tracks, users, playlists, and more—perfect for building music players, discovery apps, and audio-native products. ## Key Capabilities - **Users** — Profiles, followers, following, search - **Tracks** — Search, trending, stream, favorites, reposts - **Playlists** — Create, update, browse, curate - **Resolve** — Look up content by Audius canonical URLs (e.g. `audius.co/artist/...`) - **Explore** — Trending content, charts, discovery - **Comments, Tips, Rewards** — Social features and engagement ## Authentication - **Read-only** — Most endpoints work without credentials. Use an API key for higher rate limits. - **Writes** — Upload, favorite, repost, and other mutations require an API key and secret. Get keys at [api.audius.co/plans](https://api.audius.co/plans) or [audius.co/settings](https://audius.co/settings). ## Resources - [API Docs](https://docs.audius.co/api) — Full reference and guides - [API Plans](https://api.audius.co/plans) — Get API keys (free tier available) - [Log in with Audius](https://docs.audius.co/developers/guides/log-in-with-audius) — OAuth for user actions - [JavaScript SDK](https://www.npmjs.com/package/@audius/sdk) — `@audius/sdk` for Node and browser version: "1.0" contact: name: Audius url: https://audius.co x-logo: url: https://audius.co/favicons/favicon.ico servers: - url: https://api.audius.co/v1 description: Production tags: - name: users description: User related operations - name: playlists description: Playlist related operations - name: tracks description: Track related operations - name: challenges description: Challenge related operations - name: tips description: Tip related operations - name: developer_apps description: Developer app related operations - name: dashboard_wallet_users description: Protocol dashboard wallet users related operations - name: resolve description: Audius Canonical URL resolver - name: comments description: Comment related operations - name: events description: Events related operations - name: explore description: Explore related operations - name: rewards description: Rewards related operations - name: prizes description: Prize claiming related operations - name: oauth description: OAuth 2.0 authorization paths: /challenges/undisbursed: get: tags: - challenges description: Get all undisbursed challenges operationId: Get Undisbursed Challenges security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: A User ID to filter the undisbursed challenges to a particular user schema: type: string - name: completed_blocknumber in: query description: Starting blocknumber to retrieve completed undisbursed challenges schema: type: integer - name: challenge_id in: query description: A challenge ID to filter the undisbursed challenges to a particular challenge schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/undisbursed_challenges" "400": description: Bad request content: {} "500": description: Server error content: {} /challenges/undisbursed/{user_id}: get: tags: - challenges description: Get all undisbursed challenges for a user operationId: Get Undisbursed Challenges For User parameters: - name: user_id in: path description: A User ID to filter the undisbursed challenges to a particular user required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: completed_blocknumber in: query description: Starting blocknumber to retrieve completed undisbursed challenges schema: type: integer - name: challenge_id in: query description: A challenge ID to filter the undisbursed challenges to a particular challenge schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/undisbursed_challenges" "400": description: Bad request content: {} "500": description: Server error content: {} /comments/unclaimed_id: get: tags: - comments description: Gets an unclaimed blockchain comment ID operationId: Get unclaimed comment ID responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/unclaimed_id_response" "500": description: Server error content: {} /comments: post: tags: - comments description: Creates a new comment operationId: Create Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/create_comment_request_body" responses: "201": description: Comment created successfully content: application/json: schema: $ref: "#/components/schemas/create_comment_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "500": description: Server error content: {} /comments/{comment_id}: get: tags: - comments description: Gets a comment by ID operationId: Get Comment parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/comment_response" "500": description: Server error content: {} put: tags: - comments description: Updates a comment operationId: Update Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/update_comment_request_body" responses: "200": description: Comment updated successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} delete: tags: - comments description: Deletes a comment operationId: Delete Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Comment deleted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} /comments/{comment_id}/react: post: tags: - comments description: React to a comment operationId: React to Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/react_comment_request_body" required: true x-codegen-request-body-name: metadata responses: "200": description: Comment reacted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} delete: tags: - comments description: Unreact to a comment operationId: Unreact to Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/react_comment_request_body" required: true x-codegen-request-body-name: metadata responses: "200": description: Comment unreacted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} /comments/{comment_id}/pin: post: tags: - comments description: Pin a comment operationId: Pin Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/pin_comment_request_body" required: true x-codegen-request-body-name: metadata responses: "200": description: Comment pinned successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} delete: tags: - comments description: Unpin a comment operationId: Unpin Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: content: application/json: schema: $ref: "#/components/schemas/pin_comment_request_body" required: true x-codegen-request-body-name: metadata responses: "200": description: Comment unpinned successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} /comments/{comment_id}/report: post: tags: - comments description: Report a comment operationId: Report Comment security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Comment reported successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Comment not found content: {} "500": description: Server error content: {} /comments/{comment_id}/replies: get: tags: - comments description: Gets replies to a parent comment operationId: Get Comment Replies security: - {} - OAuth2: - read parameters: - name: comment_id in: path description: A Comment ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/comment_replies_response" "400": description: Bad request content: {} "500": description: Server error content: {} /developer-apps: post: tags: - developer_apps description: Create a new developer app. Indexer validates grants. operationId: Create Developer App parameters: - name: user_id in: query description: The user ID of the user creating the developer app required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/create_developer_app_request_body" responses: "200": description: Developer app created successfully content: application/json: schema: $ref: "#/components/schemas/create_developer_app_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "500": description: Server error content: {} /developer-apps/{address}: get: tags: - developer_apps description: Gets developer app matching given address (API key) operationId: Get Developer App parameters: - name: address in: path description: A developer app address (API Key) required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/developer_app_response" "400": description: Bad request content: {} "404": description: Not found content: {} "500": description: Server error content: {} delete: tags: - developer_apps description: Deletes a developer app. Indexer validates grants. operationId: Delete Developer App parameters: - name: user_id in: query description: The user ID of the user who owns the developer app required: true schema: type: string - name: address in: path description: Developer app address (API Key) required: true schema: type: string responses: "200": description: Developer app deleted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Not found content: {} "500": description: Server error content: {} put: tags: - developer_apps description: Updates a developer app. Indexer validates grants. operationId: Update Developer App parameters: - name: user_id in: query description: The user ID of the user who owns the developer app required: true schema: type: string - name: address in: path description: Developer app address (API Key) required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/update_developer_app_request_body" responses: "200": description: Developer app updated successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "404": description: Developer app not found content: {} "500": description: Server error content: {} /developer-apps/{address}/register-api-key: post: tags: - developer_apps description: Register api_key and api_secret in api_keys table for developer apps created via entity manager transactions. Use when the client sends raw ManageEntity tx instead of POST /developer-apps. Inserts with rps=10, rpm=500000. Requires the app to exist in developer_apps and belong to the authenticated user. operationId: Register Developer App API Key security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: user_id in: query description: The user ID of the user who owns the developer app required: true schema: type: string - name: address in: path description: Developer app address (API key) required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/register_api_key_request_body" responses: "200": description: API key registered successfully content: application/json: schema: $ref: "#/components/schemas/register_api_key_response" "400": description: Bad request (api_secret required) content: {} "401": description: Unauthorized content: {} "404": description: Developer app not found content: {} "500": description: Server error content: {} /developer-apps/{address}/access-keys/deactivate: post: tags: - developer_apps description: Deactivate a bearer token (API access key) for a developer app. Indexer validates grants. operationId: Deactivate Developer App Access Key parameters: - name: user_id in: query description: The user ID of the user who owns the developer app required: true schema: type: string - name: address in: path description: Developer app address (API Key) required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/deactivate_access_key_request_body" responses: "200": description: Access key deactivated successfully content: application/json: schema: $ref: "#/components/schemas/deactivate_access_key_response" "400": description: Bad request (api_access_key required) content: {} "401": description: Unauthorized content: {} "404": description: Developer app or access key not found content: {} "500": description: Server error content: {} /developer-apps/{address}/access-keys: post: tags: - developer_apps description: Create a new bearer token (API access key) for a developer app. Indexer validates grants. operationId: Create Developer App Access Key parameters: - name: user_id in: query description: The user ID of the user who owns the developer app required: true schema: type: string - name: address in: path description: Developer app address (API Key) required: true schema: type: string responses: "200": description: Access key created successfully content: application/json: schema: $ref: "#/components/schemas/create_access_key_response" "401": description: Unauthorized content: {} "404": description: Developer app not found content: {} "500": description: Server error content: {} /dashboard_wallet_users: get: tags: - dashboard_wallet_users description: Gets Audius user profiles connected to given dashboard wallet addresses operationId: Bulk get dashboard wallet users parameters: - name: wallets in: query description: The wallets for which to fetch connected Audius user profiles. required: true style: form explode: false schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/dashboard_wallet_users_response" "400": description: Bad request content: {} "404": description: No such dashboard wallets content: {} "500": description: Server error content: {} /events: get: tags: - events description: Get a list of events by ID operationId: Get Bulk Events security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: id in: query description: The ID of the event(s) to retrieve style: form explode: true schema: type: array items: type: string - name: event_type in: query description: The type of event to filter by schema: type: string enum: - remix_contest - live_event - new_release responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/events_response" "400": description: Bad request content: {} "500": description: Server error content: {} /events/all: get: tags: - events summary: Get all events description: Get all events operationId: Get All Events security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort method schema: type: string default: newest enum: - newest - timestamp - name: event_type in: query description: The type of event to filter by schema: type: string enum: - remix_contest - live_event - new_release responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/events_response" "400": description: Bad request content: {} "500": description: Server error content: {} /events/entity: get: tags: - events summary: Get events for a specific entity description: Get events for a specific entity operationId: Get Entity Events security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: entity_id in: query description: The ID of the entity to get events for required: true style: form explode: true schema: type: array items: type: string - name: entity_type in: query description: The type of entity to get events for schema: type: string enum: - track - collection - user - name: filter_deleted in: query description: Whether to filter deleted events schema: type: boolean default: true responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/events_response" "400": description: Bad request content: {} "500": description: Server error content: {} /events/unclaimed_id: get: tags: - events description: Gets an unclaimed blockchain event ID operationId: Get unclaimed event ID responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/unclaimed_id_response" "500": description: Server error content: {} /explore/best-selling: get: tags: - explore summary: Get best selling tracks and playlists with related entities description: Get best selling tracks and/or albums with related entities operationId: Get Best Selling security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: type in: query description: The type of content to filter by schema: type: string default: all enum: - all - track - album responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/best_selling_response" "400": description: Bad request content: {} "500": description: Server error content: {} /playlists: get: tags: - playlists description: Gets a list of playlists by ID, UPC, or permalink operationId: Get Bulk Playlists security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: id in: query description: The ID of the playlist(s) style: form explode: true schema: type: array items: type: string - name: permalink in: query description: The permalink(s) of the playlist(s) style: form explode: true schema: type: array items: type: string - name: upc in: query description: The UPC of the playlist(s) style: form explode: true schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/playlist_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - playlists description: Creates a new playlist or album operationId: Create Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/create_playlist_request_body" responses: "201": description: Playlist created successfully content: application/json: schema: $ref: "#/components/schemas/create_playlist_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "500": description: Server error content: {} /playlists/search: get: tags: - playlists description: Search for a playlist operationId: Search Playlists parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: query in: query description: The search query schema: type: string - name: genre in: query description: The genres to filter by style: form explode: true schema: type: array items: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - relevant - popular - recent - name: mood in: query description: The moods to filter by style: form explode: true schema: type: array items: type: string - name: includePurchaseable in: query description: Whether or not to include purchaseable content schema: type: string - name: has_downloads in: query description: Only include tracks that have downloads in the track results schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/playlist_search_result" "400": description: Bad request content: {} "500": description: Server error content: {} /playlists/trending: get: tags: - playlists description: Returns trending playlists for a time period operationId: Get Trending Playlists security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime - name: type in: query description: The type of content to filter by schema: type: string default: playlist enum: - playlist - album - name: omit_tracks in: query description: Whether to omit tracks from the response schema: type: boolean default: false responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/trending_playlists_response" "400": description: Bad request content: {} "500": description: Server error content: {} /playlists/{playlist_id}: get: tags: - playlists description: Get a playlist by ID operationId: Get Playlist security: - {} - OAuth2: - read parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/playlist_response" put: tags: - playlists description: Updates an existing playlist or album operationId: Update Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/update_playlist_request_body" responses: "200": description: Playlist updated successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} delete: tags: - playlists description: Deletes a playlist or album operationId: Delete Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Playlist deleted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} /playlists/{playlist_id}/access-info: get: tags: - playlists description: Gets the information necessary to access the playlist and what access the given user has. operationId: Get Playlist Access Info security: - {} - OAuth2: - read parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/access_info_response" /playlists/{playlist_id}/tracks: get: tags: - playlists description: Fetch tracks within a playlist. operationId: Get Playlist Tracks parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/playlist_tracks_response" "400": description: Bad request content: {} "500": description: Server error content: {} /playlists/{playlist_id}/favorites: post: tags: - playlists description: Favorite a playlist operationId: Favorite Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: required: false x-codegen-request-body-name: metadata content: application/json: schema: $ref: "#/components/schemas/favorite_request_body" responses: "200": description: Playlist favorited successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} delete: tags: - playlists description: Unfavorite a playlist operationId: Unfavorite Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Playlist unfavorited successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} get: tags: - playlists description: Get users that favorited a playlist operationId: Get Users From Playlist Favorites security: - {} - OAuth2: - read parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/following_response" "400": description: Bad request content: {} "500": description: Server error content: {} /playlists/{playlist_id}/reposts: post: tags: - playlists description: Repost a playlist operationId: Repost Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: required: false content: application/json: schema: $ref: "#/components/schemas/repost_request_body" responses: "200": description: Playlist reposted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} delete: tags: - playlists description: Unrepost a playlist operationId: Unrepost Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Playlist unreposted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} get: tags: - playlists description: Get users that reposted a playlist operationId: Get Users From Playlist Reposts security: - {} - OAuth2: - read parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/following_response" "400": description: Bad request content: {} "500": description: Server error content: {} /playlists/{playlist_id}/shares: post: tags: - playlists description: Record a playlist share event operationId: Share Playlist security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: playlist_id in: path description: A Playlist ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Playlist share recorded successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Playlist not found content: {} "500": description: Server error content: {} /resolve: get: tags: - resolve summary: Resolves and redirects a provided Audius app URL to the API resource URL it represents description: "This endpoint allows you to lookup and access API resources when you only know the audius.co URL. Tracks, Playlists, and Users are supported." operationId: Resolve parameters: - name: url in: query description: URL to resolve. Either fully formed URL (https://audius.co) or just the absolute path required: true schema: type: string responses: "302": description: Internal redirect content: {} /tips: get: tags: - tips description: Gets the most recent tips on the network operationId: Get Tips security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: receiver_min_followers in: query description: Only include tips to recipients that have this many followers schema: type: integer default: 0 - name: receiver_is_verified in: query description: Only include tips to recipients that are verified schema: type: boolean default: false - name: current_user_follows in: query description: Only include tips involving the user's followers in the given capacity. Requires user_id to be set. schema: type: string enum: - sender - receiver - sender_or_receiver - name: unique_by in: query description: "Only include the most recent tip for a user was involved in\ \ the given capacity.\n\nEg. 'sender' will ensure that each tip returned\ \ has a unique sender, using the most recent tip sent by a user if that\ \ user has sent multiple tips.\n " schema: type: string enum: - sender - receiver - name: min_slot in: query description: The minimum Solana slot to pull tips from schema: type: integer default: 0 - name: max_slot in: query description: The maximum Solana slot to pull tips from schema: type: integer default: 0 - name: tx_signatures in: query description: A list of transaction signatures of tips to fetch style: form explode: false schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/get_tips_response" /tracks: get: tags: - tracks description: Gets a list of tracks using their IDs or permalinks operationId: Get Bulk Tracks security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: permalink in: query description: The permalink of the track(s) style: form explode: true schema: type: array items: type: string - name: id in: query description: The ID of the track(s) style: form explode: true schema: type: array items: type: string - name: isrc in: query description: The ISRC code of the track(s) style: form explode: true schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" post: tags: - tracks description: Creates a new track operationId: Create Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/create_track_request_body" responses: "201": description: Track created successfully content: application/json: schema: $ref: "#/components/schemas/create_track_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "500": description: Server error content: {} /tracks/download_counts: get: tags: - tracks description: Gets download counts for tracks by ID. Use this instead of loading full track objects when only download counts are needed. operationId: Get Track Download Counts security: - {} - OAuth2: - read parameters: - name: id in: query description: Track ID(s) required: true style: form explode: true schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_download_counts_response" /tracks/inspect: get: tags: - tracks summary: Inspects the details of the files for multiple tracks description: Inspect multiple tracks operationId: Inspect Tracks parameters: - name: id in: query description: List of track IDs to inspect required: true style: form explode: true schema: type: array items: type: string - name: original in: query description: Optional - if set to true inspects the original file quality schema: type: boolean default: false responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_inspect_list" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/recent-premium: get: tags: - tracks description: Gets the most recently listed premium tracks operationId: Get Recent Premium Tracks security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/recommended: get: tags: - tracks description: Get recommended tracks operationId: Get Recommended Tracks security: - {} - OAuth2: - read parameters: - name: limit in: query description: The number of items to fetch schema: type: integer - name: genre in: query description: Filter trending to a specified genre schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime - name: exclusion_list in: query description: List of track ids to exclude style: form explode: true schema: type: array items: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/recommended/{version}: get: tags: - tracks description: Get recommended tracks using the given trending strategy version operationId: Get Recommended Tracks With Version security: - {} - OAuth2: - read parameters: - name: version in: path description: The strategy version of trending to use required: true schema: type: string - name: limit in: query description: The number of items to fetch schema: type: integer - name: genre in: query description: Filter trending to a specified genre schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime - name: exclusion_list in: query description: List of track ids to exclude style: form explode: true schema: type: array items: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/feeling-lucky: get: tags: - tracks description: Gets random tracks found on the "Feeling Lucky" smart playlist operationId: Get Feeling Lucky Tracks security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: limit in: query description: Number of tracks to fetch schema: type: integer default: 10 minimum: 1 maximum: 100 - name: with_users deprecated: true in: query description: Boolean to include user info with tracks schema: type: boolean default: false - name: min_followers in: query description: Fetch tracks from users with at least this number of followers schema: type: integer minimum: 1 responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} /tracks/recent-comments: get: tags: - tracks description: Gets the most recent tracks with active discussion operationId: Get Tracks With Recent Comments security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: limit in: query description: Number of tracks to fetch schema: type: integer default: 10 minimum: 1 maximum: 100 - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer default: 0 minimum: 0 responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} /tracks/most-shared: get: tags: - tracks description: Gets the most shared tracks for a given time range operationId: Get Most Shared Tracks security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: limit in: query description: Number of tracks to fetch schema: type: integer default: 10 minimum: 1 maximum: 100 - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer default: 0 minimum: 0 - name: time_range in: query description: The time range to consider schema: type: string default: week enum: - week - month - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/usdc-purchase: get: tags: - tracks description: Gets the top trending (most popular) USDC purchase tracks on Audius operationId: Get Trending USDC Purchase Tracks security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: genre in: query description: Filter trending to a specified genre schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/usdc-purchase/{version}: get: tags: - tracks description: Gets the top trending (most popular) USDC purchase tracks on Audius using a given trending strategy version operationId: Get Trending USDC Purchase Tracks With Version security: - {} - OAuth2: - read parameters: - name: version in: path description: The strategy version of trending to use required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: genre in: query description: Filter trending to a specified genre schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/search: get: tags: - tracks description: Search for a track or tracks operationId: Search Tracks parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: query in: query description: The search query schema: type: string - name: genre in: query description: The genres to filter by style: form explode: true schema: type: array items: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - relevant - popular - recent - name: mood in: query description: The moods to filter by style: form explode: true schema: type: array items: type: string - name: only_downloadable in: query description: Return only downloadable tracks schema: type: string default: "false" - name: includePurchaseable in: query description: Whether or not to include purchaseable content schema: type: string - name: is_purchaseable in: query description: Only include purchaseable tracks and albums in the track and album results schema: type: string - name: has_downloads in: query description: Only include tracks that have downloads in the track results schema: type: string - name: key in: query description: Only include tracks that match the musical key style: form explode: true schema: type: array items: type: string - name: bpm_min in: query description: Only include tracks that have a bpm greater than or equal to schema: type: string - name: bpm_max in: query description: Only include tracks that have a bpm less than or equal to schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_search" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/trending: get: tags: - tracks description: Gets the top 100 trending (most popular) tracks on Audius operationId: Get Trending Tracks security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: genre in: query description: Filter trending to a specified genre schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/trending/winners: get: tags: - tracks description: Gets weekly trending winners from the trending_results table. Returns track objects for the specified week. Defaults to the most recent week with data when no week is provided. operationId: Get Trending Winners security: - {} - OAuth2: - read parameters: - name: week in: query description: Target week in YYYY-MM-DD format. Defaults to the most recent week with data. schema: type: string format: date - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/trending/{version}: get: tags: - tracks description: Gets the top 100 trending (most popular) tracks on Audius using a given trending strategy version operationId: Get Trending Tracks With Version security: - {} - OAuth2: - read parameters: - name: version in: path description: The strategy version of trending to use required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: genre in: query description: Filter trending to a specified genre schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/trending/ids: get: tags: - tracks description: Gets the track IDs of the top trending tracks on Audius operationId: Get Trending Track IDs parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: genre in: query description: Filter trending to a specified genre schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/trending_ids_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/trending/ids/{version}: get: tags: - tracks description: Gets the track IDs of the top trending tracks on Audius based on the given trending strategy version operationId: Get Trending Tracks IDs With Version parameters: - name: version in: path description: The strategy version of trending to use required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: genre in: query description: Filter trending to a specified genre schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/trending_ids_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/trending/underground: get: tags: - tracks description: Gets the top 100 trending underground tracks on Audius operationId: Get Underground Trending Tracks security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/trending/underground/winners: get: tags: - tracks description: Gets weekly trending underground winners from the trending_results table. Returns track objects for the specified week. Defaults to the most recent week with data when no week is provided. operationId: Get Trending Underground Winners security: - {} - OAuth2: - read parameters: - name: week in: query description: Target week in YYYY-MM-DD format. Defaults to the most recent week with data. schema: type: string format: date - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/trending/underground/{version}: get: tags: - tracks description: Gets the top 100 trending underground tracks on Audius using a given trending strategy version operationId: Get Underground Trending Tracks With Version security: - {} - OAuth2: - read parameters: - name: version in: path description: The strategy version of trending to user required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/{track_id}: get: tags: - tracks description: Gets a track by ID. operationId: Get Track security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_response" put: tags: - tracks description: Updates an existing track operationId: Update Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/update_track_request_body" responses: "200": description: Track updated successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} delete: tags: - tracks description: Deletes a track operationId: Delete Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Track deleted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} /tracks/{track_id}/download_count: get: tags: - tracks description: Gets the download count for a single track. Full track + all stems (parent) or stem-only (stem). operationId: Get Track Download Count security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_download_count_response" /tracks/{track_id}/access-info: get: tags: - tracks description: Gets the information necessary to access the track and what access the given user has. operationId: Get Track Access Info security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/access_info_response" /tracks/{track_id}/comment_count: get: tags: - tracks description: Get the comment count for a track operationId: Get Track Comment Count security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_comment_count_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/{track_id}/comment_notification_setting: get: tags: - tracks description: Get the comment notification setting for a track operationId: Get Track Comment Notification Setting security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_comment_notification_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/{track_id}/comments: get: tags: - tracks description: Get a list of comments for a track operationId: Get Track Comments security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort method schema: type: string default: top enum: - top - newest - timestamp responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_comments_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/{track_id}/favorites: get: tags: - tracks description: Get users that favorited a track operationId: Get Users From Favorites security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_favorites_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - tracks description: Favorite a track operationId: Favorite Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: required: false x-codegen-request-body-name: metadata content: application/json: schema: $ref: "#/components/schemas/favorite_request_body" responses: "200": description: Track favorited successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} delete: tags: - tracks description: Unfavorite a track operationId: Unfavorite Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Track unfavorited successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} /tracks/{track_id}/remixes: get: tags: - tracks description: Get all tracks that remix the given track operationId: Get Track Remixes security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort method to use schema: type: string default: recent enum: - likes - plays - recent - name: only_cosigns in: query description: Only remixes cosigned by the original artist schema: type: boolean - name: only_contest_entries in: query description: Only entries to a remix contest schema: type: boolean responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/remixes_response" /tracks/{track_id}/remixing: get: tags: - tracks description: Gets all the tracks that the given track remixes operationId: Get Track Remix Parents security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/remixing_response" /tracks/{track_id}/reposts: get: tags: - tracks description: Get the users that reposted a track operationId: Get Users From Reposts security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_reposts_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - tracks description: Repost a track operationId: Repost Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: required: false content: application/json: schema: $ref: "#/components/schemas/repost_request_body" responses: "200": description: Track reposted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} delete: tags: - tracks description: Unrepost a track operationId: Unrepost Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Track unreposted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} /tracks/{track_id}/download: get: tags: - tracks summary: Download the original or MP3 file of a track description: Download an original or mp3 track operationId: Download Track security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: user_signature in: query description: "Optional - signature from the requesting user's wallet.\n \ \ This is needed to authenticate the user and verify access in case\ \ the track is gated." schema: type: string - name: user_data in: query description: Optional - data which was used to generate the optional signature argument. schema: type: string - name: nft_access_signature in: query description: "Optional - nft access signature for this track which was previously\ \ generated by a registered DN.\n We perform checks on it and pass\ \ it through to CN." schema: type: string - name: filename in: query description: Optional - name of file to download. If not provided, defaults to track original filename or title. schema: type: string responses: "200": description: Success content: {} "216": description: Partial content content: {} "400": description: Bad request content: {} "416": description: Content range invalid content: {} "500": description: Server error content: {} /tracks/{track_id}/inspect: get: tags: - tracks summary: Inspects the details of the file for a track description: Inspect a track operationId: Inspect Track parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: original in: query description: Optional - if set to true inspects the original file quality schema: type: boolean default: false responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_inspect" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/{track_id}/stems: get: tags: - tracks description: Get the remixable stems of a track operationId: Get Track Stems parameters: - name: track_id in: path description: A Track ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/stems_response" /tracks/{track_id}/shares: post: tags: - tracks description: Record a track share event operationId: Share Track security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: User ID required: true schema: type: string responses: "200": description: Track share recorded successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} /tracks/{track_id}/downloads: post: tags: - tracks description: Record a track download event operationId: Record Track Download security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query required: false description: The user ID of the user making the request schema: type: string requestBody: x-codegen-request-body-name: location content: application/json: schema: $ref: "#/components/schemas/track_download_request_body" responses: "200": description: Track download recorded successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: Track not found content: {} "500": description: Server error content: {} /tracks/{track_id}/stream: get: tags: - tracks summary: Get the streamable MP3 file of a track description: "Stream an mp3 track This endpoint accepts the Range header for streaming. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests" operationId: Stream Track security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: preview in: query description: Optional - true if streaming track preview schema: type: boolean default: false - name: user_signature in: query description: "Optional - signature from the requesting user's wallet.\n \ \ This is needed to authenticate the user and verify access in case\ \ the track is gated." schema: type: string - name: user_data in: query description: Optional - data which was used to generate the optional signature argument. schema: type: string - name: nft_access_signature in: query description: "Optional - gated content signature for this track which was\ \ previously generated by a registered DN.\n We perform checks on\ \ it and pass it through to CN." schema: type: string - name: skip_play_count in: query description: Optional - boolean that disables tracking of play counts. schema: type: boolean default: false - name: api_key in: query description: Optional - API key for third party apps. This is required for tracks that only allow specific API keys. schema: type: string - name: skip_check in: query description: Optional - POC to skip node 'double dip' health check schema: type: boolean - name: no_redirect in: query description: Optional - If true will not return a 302 and instead will return the stream url in JSON schema: type: boolean responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/stream_url_response" "216": description: Partial content content: {} "400": description: Bad request content: {} "416": description: Content range invalid content: {} "500": description: Server error content: {} /tracks/{track_id}/top_listeners: get: tags: - tracks description: Get the users that have listened to a track the most operationId: Get Track Top Listeners security: - {} - OAuth2: - read parameters: - name: track_id in: path description: A Track ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/top_listener" "400": description: Bad request content: {} "500": description: Server error content: {} /users: get: tags: - users description: Gets a list of users by ID operationId: Get Bulk Users security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: id in: query description: The ID of the user(s) style: form explode: true schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - users description: Creates a new user operationId: Create User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/create_user_request_body" responses: "201": description: User created successfully content: application/json: schema: $ref: "#/components/schemas/create_user_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "500": description: Server error content: {} /users/address: get: tags: - users description: Gets User IDs from any Ethereum wallet address or Solana account address associated with their Audius account. operationId: Get User IDs by Addresses parameters: - name: address in: query description: Wallet address required: true style: form explode: true example: - "0x1234567890abcdef1234567890abcdef12345678" - E2LCbKdo2L3ikt1gK6pwp1pDLuhAfHBNf6fEQXpAqrf9 schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_ids_addresses_response" /users/handle/{handle}: get: tags: - users description: Gets a single user by their handle operationId: Get User by Handle security: - {} - OAuth2: - read parameters: - name: handle in: path description: A User handle required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_response_single" "400": description: Bad request content: {} "500": description: Server error content: {} /users/handle/{handle}/tracks: get: tags: - users description: Gets the tracks created by a user using the user's handle operationId: Get Tracks by User Handle security: - {} - OAuth2: - read parameters: - name: handle in: path description: A User handle required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort in: query description: "[Deprecated] Field to sort by" schema: type: string default: date enum: - date - plays - name: query in: query description: The filter query schema: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - title - artist_name - release_date - last_listen_date - added_date - plays - reposts - saves - most_listens_by_user - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: filter_tracks in: query description: Filter by public tracks schema: type: string default: all enum: - all - public - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks" "400": description: Bad request content: {} "500": description: Server error content: {} /users/handle/{handle}/tracks/ai_attributed: get: tags: - users description: Gets the AI generated tracks attributed to a user using the user's handle operationId: Get AI Attributed Tracks by User Handle security: - {} - OAuth2: - read parameters: - name: handle in: path description: A User handle required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort in: query description: "[Deprecated] Field to sort by" schema: type: string default: date enum: - date - plays - name: query in: query description: The filter query schema: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - title - artist_name - release_date - last_listen_date - added_date - plays - reposts - saves - most_listens_by_user - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: filter_tracks in: query description: Filter by public tracks schema: type: string default: all enum: - all - public - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks" "400": description: Bad request content: {} "500": description: Server error content: {} /users/search: get: tags: - users description: Search for users that match the given query operationId: Search Users parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: query in: query description: The search query schema: type: string - name: genre in: query description: The genres to filter by style: form explode: true schema: type: array items: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - relevant - popular - recent - name: is_verified in: query description: Only include verified users in the user results schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_search" "400": description: Bad request content: {} "500": description: Server error content: {} /users/verify_token: get: tags: - users description: Verify if the given jwt ID token was signed by the subject (user) in the payload operationId: Verify ID Token parameters: - name: token in: query description: JWT to verify required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/verify_token" "400": description: Bad input content: {} "404": description: ID token not valid content: {} "500": description: Server error content: {} /users/{id}: get: tags: - users description: Gets a single user by their user ID operationId: Get User security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_response_single" "400": description: Bad request content: {} "500": description: Server error content: {} put: tags: - users description: Updates an existing user profile operationId: Update User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string requestBody: x-codegen-request-body-name: metadata required: true content: application/json: schema: $ref: "#/components/schemas/update_user_request_body" responses: "200": description: User updated successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} /users/{id}/albums: get: tags: - users description: Gets the albums created by a user using their user ID operationId: Get Albums by User security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort method schema: type: string default: recent enum: - recent - popular - name: query in: query description: Filter albums by name schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/albums_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/developer-apps: get: tags: - developer_apps description: Get developer apps for the user. operationId: Get Developer Apps parameters: - name: id in: path description: The user ID whose developer apps to list required: true schema: type: string - name: include in: query description: Include metrics when set to "metrics" schema: type: string enum: - metrics responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/developer_apps_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/authorized_apps: get: tags: - users description: Get the apps that user has authorized to write to their account operationId: Get Authorized Apps parameters: - name: id in: path description: A User ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/authorized_apps" "400": description: Bad request content: {} "500": description: Server error content: {} /grantees/{address}/users: get: tags: - users description: Get all users who have authorized a particular grantee (developer app) identified by their wallet address. Supports pagination. operationId: Get Grantee Users parameters: - name: address in: path description: The wallet address of the grantee (developer app) required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: is_approved in: query description: If true, only return users where the grant has been approved. If false, only return users where the grant was not approved. If omitted, returns all users regardless of approval status. schema: type: boolean - name: is_revoked in: query description: If true, only return users where the grant has been revoked. Defaults to false. schema: type: boolean default: false - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/followers_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/balance/history: get: tags: - users description: Get the user's historical portfolio balance data operationId: Get User Balance History security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: start_time in: query description: Start time for the balance history query (ISO 8601 format). Defaults to 7 days ago. required: false schema: type: string format: date-time - name: end_time in: query description: End time for the balance history query (ISO 8601 format). Defaults to now. required: false schema: type: string format: date-time - name: granularity in: query description: Data granularity. 'hourly' returns hourly data points, 'daily' returns daily aggregated data. Defaults to 'hourly'. required: false schema: type: string enum: - hourly - daily default: hourly - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/balance_history_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/challenges: get: tags: - users description: Gets all challenges for the given user operationId: Get User Challenges parameters: - name: id in: path description: A User ID required: true schema: type: string - name: show_historical in: query description: Whether to show challenges that are inactive but completed schema: type: boolean default: false responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/get_challenges" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/coins: get: tags: - users description: Gets a list of the coins owned by the user and their balances parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer default: 0 minimum: 0 - name: limit in: query description: The number of items to fetch schema: type: integer default: 50 minimum: 1 maximum: 100 operationId: Get User Coins responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_coins_response" /users/{id}/coins/{mint}: get: tags: - users description: Gets information about a specific coin owned by the user and their wallets parameters: - name: id in: path description: A User ID required: true schema: type: string - name: mint in: path description: The mint address of the coin required: true schema: type: string example: Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z operationId: Get User Coin responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_coin_response" /wallet/{walletId}/coins: get: tags: - wallet description: Gets a list of the coins held by a wallet address and their balances parameters: - name: walletId in: path description: A Solana wallet address required: true schema: type: string example: Dez1g5f3h4j5k6l7m8n9o0p1q2r3s4t5u6v7w8x9y0z - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer default: 0 minimum: 0 - name: limit in: query description: The number of items to fetch schema: type: integer default: 50 minimum: 1 maximum: 100 operationId: Get Wallet Coins responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_coins_response" /users/{id}/collectibles: get: tags: - users description: Get the User's indexed collectibles data operationId: Get User Collectibles parameters: - name: id in: path description: A User ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/collectibles_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/comments: get: tags: - users description: Get user comment history operationId: Get User Comments security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_comments_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/connected_wallets: get: tags: - users description: Get the User's ERC and SPL connected wallets operationId: Get connected wallets parameters: - name: id in: path description: A User ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/connected_wallets_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/favorites: get: tags: - users description: Gets a user's favorite tracks operationId: Get User Favorites parameters: - name: id in: path description: A User ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/favorites_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/followers: get: tags: - users description: All users that follow the provided user operationId: Get Followers security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/followers_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/follow: post: tags: - users description: Follow a user operationId: Follow User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: User followed successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} delete: tags: - users description: Unfollow a user operationId: Unfollow User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: User unfollowed successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} /users/{id}/grants: post: tags: - users description: Create a grant (authorize an app to act on the user's behalf) operationId: Create Grant security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: The user ID (grantor) required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/create_grant_request_body" responses: "200": description: Grant created successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden (user ID does not match) content: {} "500": description: Server error content: {} /users/{id}/grants/{address}: delete: tags: - users description: Revoke a grant (remove app authorization) operationId: Revoke Grant security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: The user ID (grantor) required: true schema: type: string - name: address in: path description: The app API key (grantee address) to revoke required: true schema: type: string responses: "200": description: Grant revoked successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/grants/approve: post: tags: - users description: Approve a manager request (manager approves being added by the child user) operationId: Approve Grant security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: The user ID of the manager (grantee) approving the request required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/approve_grant_request_body" responses: "200": description: Grant approved successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/managers: post: tags: - users description: Add a manager (authorize another user to act on your behalf) operationId: Add Manager security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: The user ID (child user adding the manager) required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/add_manager_request_body" responses: "200": description: Manager added successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} get: tags: - users description: Gets a list of users managing the given user operationId: Get Managers parameters: - name: id in: path description: An id for the managed user required: true schema: type: string - name: is_approved in: query description: If true, only show users where the management request has been accepted. If false, only show those where the request was rejected. If omitted, shows all users regardless of approval status. schema: type: boolean - name: is_revoked in: query description: If true, only show users where the management request has been revoked. If false, only show those with a pending or accepted request. Defaults to false. schema: type: boolean default: false - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/managers_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/managers/{managerUserId}: delete: tags: - users description: Remove a manager (revoke user-to-user grant). Can be called by the child user or the manager. operationId: Remove Manager security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: The user ID (child user whose manager is being removed) required: true schema: type: string - name: managerUserId in: path description: The user ID of the manager to remove required: true schema: type: string responses: "200": description: Manager removed successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/following: get: tags: - users description: All users that the provided user follows operationId: Get Following security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/following_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/history/tracks: get: tags: - users description: Get the tracks the user recently listened to. operationId: Get User's Track History security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: query in: query description: The filter query schema: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - title - artist_name - release_date - last_listen_date - added_date - plays - reposts - saves - most_listens_by_user - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/history_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/listen_counts_monthly: get: tags: - users description: Gets the listen data for a user by month and track within a given time frame. operationId: Get User Monthly Track Listens parameters: - name: id in: path description: A User ID required: true schema: type: string - name: start_time in: query description: Start time from which to start results for user listen count data (inclusive). required: true schema: type: string - name: end_time in: query description: End time until which to cut off results of listen count data (not inclusive). required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_track_listen_counts_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/muted: get: tags: - users description: Gets users muted by the given user operationId: Get Muted Users parameters: - name: id in: path description: A User ID required: true schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - users description: Mute a user operationId: Mute User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: User muted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} delete: tags: - users description: Unmute a user operationId: Unmute User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: User unmuted successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} /users/{id}/mutuals: get: tags: - users description: Get intersection of users that follow followeeUserId and users that are followed by followerUserId operationId: Get Mutual Followers security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/mutual_followers_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/playlists: get: tags: - users description: Gets the playlists created by a user using their user ID operationId: Get Playlists by User security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort method schema: type: string default: recent enum: - recent - popular - name: query in: query description: Filter playlists by name schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/playlists_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/purchasers: get: tags: - users description: Gets the list of unique users who have purchased content by the given user operationId: Get purchasers security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: content_type in: query description: Type of content to filter by (track or album) schema: type: string - name: content_id in: query description: Filters for users who have purchased the given track or album ID schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/purchasers_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/purchases/download: get: tags: - users description: Downloads the purchases the user has made as a CSV file operationId: Download Purchases as CSV security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: {} /users/{id}/recommended-tracks: get: tags: - users description: Gets the recommended tracks for the user operationId: Get User Recommended Tracks security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: time_range in: query description: The time range for the recommended tracks schema: type: string default: week enum: - week - month - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/related: get: tags: - users description: Gets a list of users that might be of interest to followers of this user. operationId: Get Related Users security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: filter_followed in: query description: If true, filters out artists that the current user already follows schema: type: boolean default: false responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/related_artist_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/remixers: get: tags: - users description: Gets the list of unique users who have remixed tracks by the given user, or a specific track by that user if provided operationId: Get remixers security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: track_id in: query description: Filters for remixers who have remixed the given track ID schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/remixers_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/reposts: get: tags: - users description: Gets the given user's reposts operationId: Get Reposts security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/reposts" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/sales/aggregate: get: tags: - users description: Gets the aggregated sales data for the user operationId: Get Sales Aggregate security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/sales_aggregate_response" /users/{id}/sales/download: get: tags: - users description: Downloads the sales the user has made as a CSV file operationId: Download Sales as CSV security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: {} /users/{id}/sales/download/json: get: tags: - users description: Gets the sales data for the user in JSON format operationId: Download Sales as JSON security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: grantee_user_id in: query description: Optional receiving user ID for email decryption schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/sales_json_response" /users/{id}/subscribers: get: tags: - users description: All users that subscribe to the provided user operationId: Get Subscribers security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/subscribers_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - users description: Subscribe to a user operationId: Subscribe to User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Subscribed successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} delete: tags: - users description: Unsubscribe from a user operationId: Unsubscribe from User security: - BearerAuth: [] - BasicAuth: [] - OAuth2: - write parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Unsubscribed successfully content: application/json: schema: $ref: "#/components/schemas/write_response" "401": description: Unauthorized content: {} "404": description: User not found content: {} "500": description: Server error content: {} /users/{id}/supporters: get: tags: - users description: Gets the supporters of the given user operationId: Get Supporters security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/get_supporters" /users/{id}/supporting: get: tags: - users description: Gets the users that the given user supports operationId: Get Supported Users security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/get_supported_users" /users/{id}/tags: get: tags: - users summary: Fetch most used tags in a user's tracks description: Gets the most used track tags by a user. operationId: Get Top Track Tags security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tags_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/tracks: get: tags: - users description: Gets the tracks created by a user using their user ID operationId: Get Tracks by User security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort in: query description: "[Deprecated] Field to sort by" schema: type: string default: date enum: - date - plays - name: query in: query description: The filter query schema: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - title - artist_name - release_date - last_listen_date - added_date - plays - reposts - saves - most_listens_by_user - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: filter_tracks in: query description: Filter by public tracks schema: type: string default: all enum: - all - public - name: gate_condition in: query description: Filter by gate conditions (can be repeated) style: form explode: true schema: type: array items: type: string enum: - ungated - usdc_purchase - follow - tip - nft - token - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/tracks/count: get: tags: - users description: Gets the count of tracks created by a user operationId: Get Tracks Count by User security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: filter_tracks in: query description: Filter by public tracks schema: type: string default: all enum: - all - public - name: gate_condition in: query description: Filter by gate conditions (can be repeated) style: form explode: true schema: type: array items: type: string enum: - ungated - usdc_purchase - follow - tip - nft - token - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_count_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/tracks/download_count: get: tags: - users description: Gets the total download count for all tracks (and stems) owned by the user. Use for dashboard "Downloads" tile. operationId: Get User Tracks Download Count security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_tracks_download_count_response" "500": description: Server error content: {} /users/{id}/tracks/remixed: get: tags: - users description: Gets tracks owned by the user which have been remixed by another track operationId: Get User Tracks Remixed security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: default: 0 type: integer minimum: 0 - name: limit in: query description: The number of items to fetch schema: type: integer default: 10 minimum: 1 maximum: 100 - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_tracks_remixed_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/withdrawals/download: get: tags: - users description: Downloads the USDC withdrawals the user has made as a CSV file operationId: Download USDC Withdrawals as CSV security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: {} /users/{receiving_user_id}/emails/{grantor_user_id}/key: get: tags: - users description: Gets the encrypted key for email access between the receiving user and granting user. operationId: Get User Email Key parameters: - name: receiving_user_id in: path description: ID of user receiving email access required: true schema: type: string - name: grantor_user_id in: path description: ID of user granting email access required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/email_access_response" "400": description: Bad request content: {} "500": description: Server error content: {} /coins: get: tags: - coins operationId: Get Coins description: Gets a list of coins with optional filtering parameters: - name: ticker in: query description: Filter by coin ticker(s) schema: type: array items: type: string style: form explode: true - name: mint in: query description: Filter by coin mint address(es) schema: type: array items: type: string style: form explode: true - name: owner_id in: query description: Filter by owner user ID(s) schema: type: array items: type: string style: form explode: true - name: limit in: query description: Maximum number of results to return schema: type: integer minimum: 1 maximum: 100 default: 50 - name: offset in: query description: Number of results to skip schema: type: integer minimum: 0 default: 0 - name: query in: query description: Search query for ticker, name, or handle schema: type: string - name: sort_method in: query description: Sort method schema: type: string enum: - market_cap - price - volume - created_at - holder default: market_cap - name: sort_direction in: query description: Sort direction schema: type: string enum: - asc - desc default: desc responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coins_response" post: tags: - coins operationId: Create Coin description: Creates a new artist coin parameters: - name: user_id in: query description: The user ID to create a coin required: true schema: type: string example: 7eP5n requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/create_coin_request" responses: "201": description: Success - Coin created content: application/json: schema: $ref: "#/components/schemas/create_coin_response" "400": description: Bad request - Invalid parameters content: {} "500": description: Server error content: {} /coins/{mint}: get: tags: - coins operationId: Get Coin description: Gets information about a specific coin by its mint address parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coin_response" post: tags: - coins operationId: Update Coin description: Updates information about a specific coin by its mint address parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj - name: user_id in: query description: The user ID making the update (must be the coin owner) required: true schema: type: string example: 7eP5n requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/update_coin_request" responses: "200": description: Success - Coin updated content: application/json: schema: $ref: "#/components/schemas/update_coin_response" "400": description: Bad request - Invalid parameters or no fields provided content: {} "403": description: Forbidden - User does not own the coin content: {} "404": description: Not found - Coin does not exist content: {} "500": description: Server error content: {} /coins/ticker/{ticker}: get: tags: - coins operationId: Get Coin By Ticker description: Gets information about a specific coin by its ticker parameters: - name: ticker in: path description: The ticker symbol of the coin required: true schema: type: string example: $AUDIO responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coin_response" /coins/{mint}/insights: get: tags: - coins operationId: Get Coin Insights description: Gets insights about a specific coin by its mint address parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coin_insights_response" /coins/{mint}/members: get: tags: - coins operationId: Get Coin Members description: Gets a list of Audius users with a non-zero balance of a specific coin parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer default: 0 minimum: 0 - name: limit in: query description: The number of items to fetch schema: type: integer default: 10 minimum: 1 maximum: 100 - name: sort_direction in: query description: The sort direction for the results schema: type: string enum: - asc - desc default: desc responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coin_members_response" /coins/{mint}/members/count: get: tags: - coins operationId: Get Coin Members Count description: Gets the total number of Audius users with a non-zero balance of a specific coin parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coin_members_count_response" /coins/volume-leaders: get: tags: - coins operationId: Get Volume Leaders description: Gets top coin<>AUDIO trading addresses by volume parameters: - name: from in: query description: Beginning of time range to query over (RFC3339 format) schema: type: string example: "2006-01-02T15:04:05Z" default: (most recent midnight UTC) - name: to in: query description: End of time range to query over (RFC3339 format) schema: type: string example: "2006-01-02T15:04:05Z" default: (most recent midnight UTC + 24hrs) - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer default: 0 minimum: 0 maximum: 500 - name: limit in: query description: The number of items to fetch schema: type: integer default: 20 minimum: 1 maximum: 100 responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/coins_volume_leaders_response" "400": description: Bad Request /coins/{mint}/redeem: get: tags: - coins operationId: Get Coin Redeem Amount description: Gets the availability indicator for reward codes for a specific coin parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/redeem_amount_response" post: tags: - coins operationId: Claim Coin Reward description: Claims a coin reward for a given mint parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/claim_rewards_response" "400": description: Bad request - No coin reward available or already claimed content: application/json: schema: $ref: "#/components/schemas/reward_code_error_response" "500": description: Server error content: {} /coins/{mint}/redeem/{code}: get: tags: - coins operationId: Get Reward Code description: Gets information about a specific reward code for a coin parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - name: code in: path description: The reward code to retrieve required: true schema: type: string example: XYZ123 responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/reward_code_response" "400": description: Bad request - Code is invalid or already used content: application/json: schema: $ref: "#/components/schemas/reward_code_error_response" post: tags: - coins operationId: Claim Coin Reward Code description: Claims a coin reward using a given code parameters: - name: mint in: path description: The mint address of the coin required: true schema: type: string example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM - name: code in: path description: The reward code to claim required: true schema: type: string example: XYZ123 - name: user_id in: query description: The user ID of the user making the request required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/claim_rewards_response" "400": description: Bad request - Code is invalid or already used content: application/json: schema: $ref: "#/components/schemas/reward_code_error_response" "500": description: Server error content: {} /rewards/claim: post: tags: - rewards description: Claims all the filtered undisbursed rewards for a user operationId: Claim Rewards requestBody: x-codegen-request-body-name: reward required: true content: application/json: schema: $ref: "#/components/schemas/claim_rewards_request_body" responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/claim_rewards_response" "400": description: Bad request - No rewards to claim or invalid parameters content: {} "500": description: Server error content: {} /rewards/code: post: tags: - rewards description: Creates a new reward code with Solana signature verification operationId: Create Reward Code requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/create_reward_code_request" responses: "201": description: Created - Reward code successfully created content: application/json: schema: $ref: "#/components/schemas/create_reward_code_response" "400": description: Bad request - Invalid signature format or missing required fields content: {} "403": description: Forbidden - Signature verification failed content: {} "500": description: Server error content: {} /prizes: get: tags: - prizes operationId: Get Prizes description: Gets a list of active prizes available for claiming. Excludes sensitive information like download URLs. responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/prizes_response" "500": description: Server error content: {} /prizes/claim: post: tags: - prizes operationId: Claim Prize description: Claims a prize by verifying a Solana transaction. User must send exactly 2 YAK to the prize receiver address. Returns the prize won and any redeem codes/URLs. requestBody: x-codegen-request-body-name: claim required: true content: application/json: schema: $ref: "#/components/schemas/prize_claim_request_body" responses: "200": description: Success - Prize claimed content: application/json: schema: $ref: "#/components/schemas/prize_claim_response" "400": description: Bad request - Transaction not found, invalid, or signature already used content: {} "500": description: Server error content: {} /wallet/{wallet}/prizes: get: tags: - prizes operationId: Get Wallet Prizes description: Gets all claimed prizes for a wallet. Public endpoint - no authentication required. Excludes sensitive action_data for security. parameters: - name: wallet in: path description: The wallet address to get prizes for required: true schema: type: string example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/claimed_prizes_response" "400": description: Bad request - Missing wallet parameter content: {} "500": description: Server error content: {} /challenges/{challenge_id}/attest: get: tags: - challenges description: Produces an attestation that a given user has completed a challenge, or errors. operationId: Get Challenge Attestation security: - {} - OAuth2: - read parameters: - name: challenge_id in: path description: The challenge ID of the user challenge requiring the attestation required: true schema: type: string - name: oracle in: query description: The address of a valid, registered Anti-Abuse Oracle required: true schema: type: string - name: specifier in: query description: The specifier of the user challenge requiring the attestation required: true schema: type: string - name: user_id in: query description: The user ID of the user challenge requiring the attestation required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/attestation_reponse" "400": description: The attestation request was invalid (eg. The user didn't complete that challenge yet) content: {} "500": description: Server error content: {} /cid_data/{metadata_id}: get: tags: - cid_data description: Get a metadata by CID operationId: Get Metadata parameters: - name: metadata_id in: path description: A Metdata CID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/cid_data_response" "400": description: Bad request content: {} "500": description: Server error content: {} /notifications/{user_id}: get: tags: - notifications description: Get notifications for user ID operationId: Get Notifications parameters: - name: user_id in: path description: A User ID required: true schema: type: string - name: timestamp in: query description: The timestamp from which to paginate schema: type: integer - name: group_id in: query description: The group_id form which to paginate schema: type: string - name: limit in: query description: The number of notifications to return schema: type: integer - name: types in: query description: Additional valid notification types to return style: form explode: true schema: type: array items: type: string enum: - announcement - follow - repost - save - remix - cosign - create - tip_receive - tip_send - challenge_reward - repost_of_repost - save_of_repost - tastemaker - reaction - supporter_dethroned - supporter_rank_up - supporting_rank_up - milestone - track_milestone - track_added_to_playlist - playlist_milestone - tier_change - trending - trending_playlist - trending_underground - usdc_purchase_buyer - usdc_purchase_seller - track_added_to_purchased_album - request_manager - approve_manager_request - claimable_reward - comment - comment_thread - comment_mention - comment_reaction - listen_streak_reminder - fan_remix_contest_started - fan_remix_contest_ended - fan_remix_contest_ending_soon - fan_remix_contest_winners_selected - artist_remix_contest_ended - artist_remix_contest_ending_soon - artist_remix_contest_submissions responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/notifications_response" /notifications/{user_id}/playlist_updates: get: tags: - notifications description: Get playlists the user has saved that have been updated for user ID operationId: Get Playlist Updates parameters: - name: user_id in: path description: A User ID required: true schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/playlist_updates_response" /playlists/trending/{version}: get: tags: - playlists description: Returns trending playlists for a time period based on the given trending version operationId: Get Trending Playlists With Version security: - {} - OAuth2: - read parameters: - name: version in: path description: The strategy version of trending to use required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: time in: query description: Calculate trending over a specified time range schema: type: string enum: - week - month - year - allTime responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/trending_playlists_response" "400": description: Bad request content: {} "500": description: Server error content: {} /reactions: get: tags: - reactions description: Gets reactions by reacted_to_id and type operationId: Bulk get Reactions parameters: - name: type in: query description: The type of reactions for which to query. schema: type: string - name: reacted_to_ids in: query description: The `reacted_to` transaction id(s) of the reactions in question. required: true style: form explode: false schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/reactions" "400": description: Bad request content: {} "404": description: No such reaction content: {} "500": description: Server error content: {} /search/autocomplete: get: tags: - search summary: Get Users/Tracks/Playlists/Albums that best match the search query description: Same as search but optimized for quicker response at the cost of some entity information. operationId: Search Autocomplete security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The search query schema: type: string - name: kind in: query description: "The type of response, one of: all, users, tracks, playlists, or albums" schema: type: string default: all enum: - all - users - tracks - playlists - albums - name: includePurchaseable in: query description: Whether or not to include purchaseable content schema: type: boolean - name: genre in: query description: The genres to filter by style: form explode: true schema: type: array items: type: string - name: mood in: query description: The moods to filter by style: form explode: true schema: type: array items: type: string - name: is_verified in: query description: Only include verified users in the user results schema: type: boolean - name: has_downloads in: query description: Only include tracks that have downloads in the track results schema: type: boolean - name: is_purchaseable in: query description: Only include purchaseable tracks and albums in the track and album results schema: type: boolean - name: key in: query description: Only include tracks that match the musical key style: form explode: true schema: type: array items: type: string - name: bpm_min in: query description: Only include tracks that have a bpm greater than or equal to schema: type: number - name: bpm_max in: query description: Only include tracks that have a bpm less than or equal to schema: type: number - name: sort_method in: query description: The sort method schema: type: string enum: - relevant - popular - recent responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/search_autocomplete_response" "400": description: Bad request content: {} "500": description: Server error content: {} /search/full: get: tags: - search description: Get Users/Tracks/Playlists/Albums that best match the search query operationId: Search security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The search query schema: type: string - name: kind in: query description: "The type of response, one of: all, users, tracks, playlists, or albums" schema: type: string default: all enum: - all - users - tracks - playlists - albums - name: includePurchaseable in: query description: Whether or not to include purchaseable content schema: type: boolean - name: genre in: query description: The genres to filter by style: form explode: true schema: type: array items: type: string - name: mood in: query description: The moods to filter by style: form explode: true schema: type: array items: type: string - name: is_verified in: query description: Only include verified users in the user results schema: type: boolean - name: has_downloads in: query description: Only include tracks that have downloads in the track results schema: type: boolean - name: is_purchaseable in: query description: Only include purchaseable tracks and albums in the track and album results schema: type: boolean - name: key in: query description: Only include tracks that match the musical key style: form explode: true schema: type: array items: type: string - name: bpm_min in: query description: Only include tracks that have a bpm greater than or equal to schema: type: number - name: bpm_max in: query description: Only include tracks that have a bpm less than or equal to schema: type: number - name: sort_method in: query description: The sort method schema: type: string enum: - relevant - popular - recent responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/search_response" "400": description: Bad request content: {} "500": description: Server error content: {} /search/tags: get: tags: - search description: Get Users/Tracks/Playlists/Albums that best match the provided tag operationId: SearchTags security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The search query schema: type: string - name: kind in: query description: "The type of response, one of: all, users, tracks, playlists, or albums" schema: type: string default: all enum: - all - users - tracks - playlists - albums - name: includePurchaseable in: query description: Whether or not to include purchaseable content schema: type: boolean - name: genre in: query description: The genres to filter by style: form explode: true schema: type: array items: type: string - name: mood in: query description: The moods to filter by style: form explode: true schema: type: array items: type: string - name: is_verified in: query description: Only include verified users in the user results schema: type: boolean - name: has_downloads in: query description: Only include tracks that have downloads in the track results schema: type: boolean - name: is_purchaseable in: query description: Only include purchaseable tracks and albums in the track and album results schema: type: boolean - name: key in: query description: Only include tracks that match the musical key style: form explode: true schema: type: array items: type: string - name: bpm_min in: query description: Only include tracks that have a bpm greater than or equal to schema: type: number - name: bpm_max in: query description: Only include tracks that have a bpm less than or equal to schema: type: number - name: sort_method in: query description: The sort method schema: type: string enum: - relevant - popular - recent responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/search_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/best_new_releases: get: tags: - tracks description: Gets the tracks found on the "Best New Releases" smart playlist operationId: Get Best New Releases security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: window in: query description: The window from now() to look back over required: true schema: type: string enum: - week - month - year - name: limit in: query description: The number of tracks to get schema: type: integer default: 25 - name: with_users in: query description: Boolean to include user info with tracks schema: type: boolean responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/most_loved: get: tags: - tracks description: Gets the tracks found on the "Most Loved" smart playlist operationId: Get Most Loved Tracks security: - {} - OAuth2: - read parameters: - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: limit in: query description: Number of tracks to fetch schema: type: integer default: 25 - name: with_users in: query description: Boolean to include user info with tracks schema: type: boolean responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /tracks/remixables: get: tags: - tracks description: Gets a list of tracks that have stems available for remixing operationId: Get Remixable Tracks security: - {} - OAuth2: - read parameters: - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: with_users in: query description: Boolean to include user info with tracks schema: type: boolean responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/remixables_response" "400": description: Bad request content: {} "500": description: Server error content: {} /tracks/under_the_radar: get: tags: - tracks description: Gets the tracks found on the "Under the Radar" smart playlist operationId: Get Under the Radar Tracks security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: filter in: query description: Filters for activity that is original vs reposts schema: type: string default: all enum: - all - repost - original - name: tracks_only in: query description: Whether to only include tracks schema: type: boolean - name: with_users in: query description: Boolean to include user info with tracks schema: type: boolean responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/tracks_response" /transactions: get: tags: - transactions summary: Gets the user's $AUDIO transaction history within the App description: "Deprecated: Use `/users/{id}/transactions/audio` or `sdk.full.users.getAudioTransactions()` instead." operationId: Get Audio Transaction History parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: sort_method in: query description: The sort method schema: type: string default: date enum: - date - transaction_type - name: sort_direction in: query description: The sort direction schema: type: string default: desc enum: - asc - desc - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/transaction_history_response" deprecated: true /transactions/count: get: tags: - transactions summary: Gets the count of the user's $AUDIO transaction history within the App description: "Deprecated: Use `/users/{id}/transactions/audio/count` or `sdk.full.users.getAudioTransactionCount()` instead." operationId: Get Audio Transaction History Count parameters: - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/transaction_history_count_response" deprecated: true /users/account/{wallet}: get: tags: - users description: Gets the account for a given user operationId: Get User Account parameters: - name: wallet in: path description: Wallet address for the account required: true schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_account_response" "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "404": description: Not Found content: {} "500": description: Server error content: {} /users/genre/top: get: tags: - users description: Get the Top Users for a Given Genre operationId: Get Top Users In Genre parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: genre in: query description: List of Genres style: form explode: true schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/top_genre_users_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/handle/{handle}/reposts: get: tags: - users description: Gets the user's reposts by the user handle operationId: Get Reposts by Handle security: - {} - OAuth2: - read parameters: - name: handle in: path description: A User handle required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/reposts" "400": description: Bad request content: {} "500": description: Server error content: {} /users/subscribers: get: tags: - users description: All users that subscribe to the provided users operationId: Bulk Get Subscribers parameters: - name: ids in: query description: User IDs to fetch subscribers for required: true style: form explode: false schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/bulk_subscribers_response" "400": description: Bad request content: {} "500": description: Server error content: {} post: tags: - users description: Get all users that subscribe to the users listed in the JSON request operationId: Bulk Get Subscribers via JSON request parameters: - name: ids in: query description: User IDs to fetch subscribers for required: true style: form explode: false schema: type: array items: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/bulk_subscribers_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/top: get: tags: - users description: Get the Top Users having at least one track by follower count operationId: Get Top Users security: - {} - OAuth2: - read parameters: - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/top_users_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/favorites/tracks: get: tags: - users description: Gets a user's favorite tracks operationId: Get User Favorite Tracks security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The filter query schema: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - title - artist_name - release_date - last_listen_date - added_date - plays - reposts - saves - most_listens_by_user - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_library_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/feed: get: tags: - users description: Gets the feed for the user operationId: Get User Feed security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: filter in: query description: Controls whether the feed is limited to reposts, original content, or all items schema: type: string default: all enum: - all - repost - original - name: tracks_only in: query description: Limit feed to only tracks schema: type: boolean - name: with_users in: query description: Include user data with feed items schema: type: boolean - name: followee_user_id in: query description: A list of followed users to prioritize in feed generation style: form explode: true schema: type: array items: type: integer - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_feed_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/library/albums: get: tags: - users summary: Fetch a user's full library playlists description: Gets a user's saved/reposted/purchased/all albums operationId: Get User Library Albums security: - {} - OAuth2: - read parameters: - name: id in: path description: A user ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The filter query schema: type: string - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: type in: query description: "The type of entity to return: favorited, reposted, purchased, or all. Defaults to favorite" schema: type: string default: favorite enum: - all - repost - favorite - purchase - name: sort_method in: query description: The sort method schema: type: string enum: - added_date - reposts - saves - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/collection_library_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/library/playlists: get: tags: - users summary: Fetch a user's full library playlists description: Gets a user's saved/reposted/purchased/all playlists operationId: Get User Library Playlists security: - {} - OAuth2: - read parameters: - name: id in: path description: A user ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The filter query schema: type: string - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: type in: query description: "The type of entity to return: favorited, reposted, purchased, or all. Defaults to favorite" schema: type: string default: favorite enum: - all - repost - favorite - purchase - name: sort_method in: query description: The sort method schema: type: string enum: - added_date - reposts - saves - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/collection_library_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/library/tracks: get: tags: - users summary: Fetch a user's full library tracks description: Gets a user's saved/reposted/purchased/all tracks operationId: Get User Library Tracks security: - {} - OAuth2: - read parameters: - name: id in: path description: A user ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: query in: query description: The filter query schema: type: string - name: sort_method in: query description: The sort method schema: type: string enum: - title - artist_name - release_date - last_listen_date - added_date - plays - reposts - saves - most_listens_by_user - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: type in: query description: "The type of entity to return: favorited, reposted, purchased, or all. Defaults to favorite" schema: type: string default: favorite enum: - all - repost - favorite - purchase - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/track_library_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/managed_users: get: tags: - users description: Gets a list of users managed by the given user operationId: Get Managed Users parameters: - name: id in: path description: A user id for the manager required: true schema: type: string - name: is_approved in: query description: If true, only show users where the management request has been accepted. If false, only show those where the request was rejected. If omitted, shows all users regardless of approval status. schema: type: boolean - name: is_revoked in: query description: If true, only show users where the management request has been revoked. If false, only show those with a pending or accepted request. Defaults to false. schema: type: boolean default: false - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/managed_users_response" "400": description: Bad request content: {} "401": description: Unauthorized content: {} "403": description: Forbidden content: {} "500": description: Server error content: {} /users/{id}/purchasers/count: get: tags: - users description: Gets the list of users who have purchased content by the given user operationId: Get purchasers count security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: content_type in: query description: Type of content to filter by (track or album) schema: type: string - name: content_id in: query description: Filters for users who have purchased the given track or album ID schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/purchasers_count_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/purchases: get: tags: - users description: Gets the purchases the user has made operationId: Get Purchases security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort direction schema: type: string enum: - content_title - artist_name - buyer_name - date - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: content_ids in: query description: Filters purchases by track or album IDs style: form explode: true schema: type: array items: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/purchases_response" /users/{id}/purchases/count: get: tags: - users description: Gets the count of purchases the user has made operationId: Get Purchases Count security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: content_ids in: query description: Filters purchases by track or album IDs style: form explode: true schema: type: array items: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/purchases_count_response" /users/{id}/remixers/count: get: tags: - users description: Gets the count of unique users who have remixed tracks by the given user, or a specific track by that user if provided operationId: Get remixers count security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: track_id in: query description: Filters for remixers who have remixed the given track ID schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/remixers_count_response" "400": description: Bad request content: {} "500": description: Server error content: {} /users/{id}/sales: get: tags: - users description: Gets the sales the user has made operationId: Get Sales security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: sort_method in: query description: The sort direction schema: type: string enum: - content_title - artist_name - buyer_name - date - name: sort_direction in: query description: The sort direction schema: type: string enum: - asc - desc - name: content_ids in: query description: Filters purchases by track or album IDs style: form explode: true schema: type: array items: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/purchases_response" /users/{id}/sales/count: get: tags: - users description: Gets the count of sales the user has made operationId: Get Sales Count security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string - name: content_ids in: query description: Filters purchases by track or album IDs style: form explode: true schema: type: array items: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/purchases_count_response" /users/{id}/supporters/{supporter_user_id}: get: tags: - users description: Gets the specified supporter of the given user operationId: Get Supporter security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: supporter_user_id in: path description: A User ID of a supporter required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/get_supporter" /users/{id}/supporting/{supported_user_id}: get: tags: - users description: Gets the support from the given user to the supported user operationId: Get Supporting security: - {} - OAuth2: - read parameters: - name: id in: path description: A User ID required: true schema: type: string - name: supported_user_id in: path description: A User ID of a supported user required: true schema: type: string - name: user_id in: query description: The user ID of the user making the request schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/get_supporting" /users/{id}/transactions/audio: get: tags: - users description: Gets the user's $AUDIO transaction history within the App operationId: Get Audio Transactions parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: sort_method in: query description: The sort method schema: type: string default: date enum: - date - transaction_type - name: sort_direction in: query description: The sort direction schema: type: string default: desc enum: - asc - desc - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/transaction_history_response" /users/{id}/transactions/audio/count: get: tags: - users description: Gets the count of the user's $AUDIO transaction history within the App operationId: Get Audio Transaction Count parameters: - name: id in: path description: A User ID required: true schema: type: string - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/transaction_history_count_response" /users/{id}/transactions/usdc: get: tags: - users description: Gets the user's $USDC transaction history within the App operationId: Get USDC Transactions parameters: - name: id in: path description: A User ID required: true schema: type: string - name: offset in: query description: The number of items to skip. Useful for pagination (page number * limit) schema: type: integer - name: limit in: query description: The number of items to fetch schema: type: integer - name: sort_method in: query description: The sort method schema: type: string default: date enum: - date - transaction_type - name: sort_direction in: query description: The sort direction schema: type: string default: desc enum: - asc - desc - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string - name: type in: query description: Filters the type of transactions to show style: form explode: true schema: type: array items: type: string enum: - purchase_content - transfer - internal_transfer - prepare_withdrawal - recover_withdrawal - withdrawal - purchase_stripe - name: include_system_transactions in: query description: Include intermediate system transactions in the results schema: type: boolean default: false - name: method in: query description: Filters the method (sent/received) of transactions to show schema: type: string enum: - send - receive responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/transaction_history_response" /users/{id}/transactions/usdc/count: get: tags: - users description: Gets the count of the user's $USDC transaction history within the App operationId: Get USDC Transaction Count parameters: - name: id in: path description: A User ID required: true schema: type: string - name: type in: query description: Filters the type of transactions to show style: form explode: true schema: type: array items: type: string enum: - purchase_content - transfer - internal_transfer - prepare_withdrawal - recover_withdrawal - withdrawal - purchase_stripe - name: include_system_transactions in: query description: Include intermediate system transactions in the results schema: type: boolean default: false - name: method in: query description: Filters the method (sent/received) of transactions to show schema: type: string enum: - send - receive - name: Encoded-Data-Message in: header description: The data that was signed by the user for signature recovery schema: type: string - name: Encoded-Data-Signature in: header description: The signature of data, used for signature recovery schema: type: string responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/transaction_history_count_response" /me: get: tags: - users summary: Get authenticated user description: Returns the full profile of the currently authenticated user based on the Bearer access token obtained via OAuth. operationId: Get Me security: - OAuth2: - read responses: "200": description: Success content: application/json: schema: $ref: "#/components/schemas/user_response_single" "401": description: Missing or invalid access token content: {} "404": description: User not found content: {} "500": description: Server error content: {} components: schemas: create_access_key_response: type: object required: - api_access_key properties: api_access_key: type: string description: The newly created bearer token (API access key) track_library_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track_activity" purchases_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/purchase" create_playlist_request_body: type: object required: - playlist_name properties: playlist_id: type: string description: Optional playlist ID (will be generated if not provided) example: x5pJ3Az playlist_name: type: string minLength: 1 description: Playlist or album name example: My New Playlist description: type: string description: Playlist description maxLength: 1000 is_private: type: boolean description: Whether the playlist is private is_album: type: boolean description: Whether this is an album genre: $ref: "#/components/schemas/genre" mood: allOf: - $ref: "#/components/schemas/mood" tags: type: string description: Comma-separated tags license: type: string description: License type upc: type: string description: Universal Product Code (for albums) release_date: type: string format: date description: Release date playlist_image_sizes_multihash: type: string description: CID for the playlist cover art playlist_contents: type: array description: Array of tracks in the playlist items: $ref: "#/components/schemas/playlist_added_timestamp" is_stream_gated: type: boolean nullable: true description: Whether streaming is restricted behind an access gate is_scheduled_release: type: boolean nullable: true description: Whether the playlist/album is a scheduled release stream_conditions: nullable: true allOf: - $ref: "#/components/schemas/access_gate" ddex_app: type: string description: DDEX application identifier ddex_release_ids: type: object nullable: true additionalProperties: type: string description: DDEX release identifiers artists: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" description: DDEX resource contributors / artists copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" description: DDEX copyright line producer_copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" description: DDEX producer copyright line parental_warning_type: type: string nullable: true description: Parental warning type is_image_autogenerated: type: boolean nullable: true description: Whether the image is autogenerated user_tracks_remixed_response: type: object properties: data: type: array items: $ref: "#/components/schemas/remixed_track_aggregate" cid_data_response: type: object properties: data: $ref: "#/components/schemas/data_and_type" ddex_copyright: type: object required: - year - text properties: year: type: string minLength: 4 maxLength: 4 description: Copyright year (4 characters) text: type: string minLength: 1 description: Copyright text ddex_rights_controller: type: object description: DDEX rights controller required: - name - roles properties: name: type: string minLength: 1 roles: type: array minItems: 1 items: type: string minLength: 1 rights_share_unknown: type: string description: Optional claimed_prizes_response: type: object required: - data properties: data: type: array items: $ref: "#/components/schemas/claimed_prize" description: List of claimed prizes for the wallet (action_data excluded for security) undisbursed_challenges: type: object properties: data: type: array items: $ref: "#/components/schemas/undisbursed_challenge" pin_comment_request_body: type: object required: - entityType - entityId properties: entityType: allOf: - $ref: "#/components/schemas/comment_entity_type" example: Track entityId: type: integer description: ID of the entity (track) the comment is on example: 12345 claim_rewards_request_body: type: object required: - userId properties: challengeId: type: string description: The challenge ID to filter rewards (optional) example: u specifier: type: string description: The specifier to filter rewards (optional) example: 7eP5n userId: type: string description: The user ID to claim rewards for example: 7eP5n bulk_subscribers_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user_subscribers" track_comment_count_response: type: object properties: data: type: integer coin_response: type: object properties: data: $ref: "#/components/schemas/coin" purchasers_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" prize_claim_request_body: type: object required: - signature - wallet properties: signature: type: string description: The Solana transaction signature for the 2 YAK payment example: 5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA wallet: type: string description: The wallet address that sent the transaction example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC create_reward_code_request: type: object required: - signature - mint - amount properties: signature: type: string description: Base64-encoded Solana Ed25519 signature of the string "code" example: 3fG7xQh2L8vK9pN4mR5sT6uW7vX8yZ1aB2cD3eF4gH5iJ6kL7mN8oP9qR0sT1uV2wX3yZ4aB5cD6eF7gH8iJ9k= mint: type: string description: The coin mint address example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM amount: type: integer description: The reward amount (must be greater than 0) minimum: 1 example: 100 playlist_tracks_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track" prize_claim_response: type: object required: - prize_id - prize_name - wallet properties: prize_id: type: string description: The unique identifier of the prize won example: prize_1_yak_airdrop prize_name: type: string description: The name of the prize won example: 1 YAK Airdrop wallet: type: string description: The wallet address that claimed the prize example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC prize_type: type: string description: The type of prize (e.g., "coin_airdrop", "download") example: coin_airdrop action_data: type: object description: Prize-specific action data (e.g., redeem code/URL for coin airdrops, download URL for downloads) additionalProperties: true example: code: aB3d5F url: /coins/YAK/redeem/aB3d5F trending_playlists_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/playlist" create_track_request_body: type: object required: - title - genre - track_cid properties: track_id: type: string description: Optional track ID (will be generated if not provided) example: x5pJ3Az title: type: string description: Track title example: My New Track genre: $ref: "#/components/schemas/genre" description: type: string nullable: true description: Track description maxLength: 1000 mood: nullable: true allOf: - $ref: "#/components/schemas/mood" bpm: type: number nullable: true description: Beats per minute (tempo) musical_key: type: string nullable: true description: Musical key of the track tags: type: string nullable: true description: Comma-separated tags license: type: string nullable: true description: License type isrc: type: string nullable: true description: International Standard Recording Code iswc: type: string nullable: true description: International Standard Musical Work Code release_date: type: string format: date description: Release date track_cid: type: string description: CID for the track audio file (required) orig_file_cid: type: string description: CID for the original track file orig_filename: type: string description: Original filename of the track cover_art_sizes: type: string description: CID for the track cover art preview_cid: type: string description: CID for the track preview preview_start_seconds: type: number format: float description: Preview start time in seconds minimum: 0 duration: type: number format: float description: Track duration in seconds minimum: 0 is_downloadable: type: boolean description: Whether the track is downloadable is_unlisted: type: boolean description: Whether the track is unlisted is_stream_gated: type: boolean nullable: true description: Whether streaming is restricted behind an access gate access_authorities: type: array nullable: true items: type: string description: Wallet addresses that can sign to authorize stream access (programmable distribution). When empty or omitted, the track is public and validator/creator nodes can serve it. stream_conditions: nullable: true allOf: - $ref: "#/components/schemas/access_gate" download_conditions: nullable: true allOf: - $ref: "#/components/schemas/access_gate" field_visibility: $ref: "#/components/schemas/field_visibility" placement_hosts: type: string description: Placement hosts for the track stem_of: $ref: "#/components/schemas/stem_parent" remix_of: $ref: "#/components/schemas/remix_parent_write" ddex_app: type: string nullable: true description: DDEX application identifier ddex_release_ids: type: object nullable: true description: DDEX release identifiers artists: type: array nullable: true items: type: object description: DDEX resource contributors / artists resource_contributors: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" description: DDEX resource contributors indirect_resource_contributors: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" description: DDEX indirect resource contributors rights_controller: nullable: true $ref: "#/components/schemas/ddex_rights_controller" description: DDEX rights controller copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" description: DDEX copyright line producer_copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" description: DDEX producer copyright line parental_warning_type: type: string nullable: true description: Parental warning type cover_original_song_title: type: string nullable: true description: Original song title for cover tracks cover_original_artist: type: string nullable: true description: Original artist for cover tracks is_owned_by_user: type: boolean description: Whether the track is owned by the user territory_codes: type: array nullable: true items: type: string description: Territory codes for distribution no_ai_use: type: boolean description: Whether AI use is prohibited collectibles_response: type: object properties: data: $ref: "#/components/schemas/collectibles" create_comment_request_body: type: object required: - entityType - entityId - body properties: entityType: allOf: - $ref: "#/components/schemas/comment_entity_type" example: Track entityId: type: integer description: ID of the entity being commented on example: 12345 body: type: string description: Comment text maxLength: 500 example: Great track! commentId: type: integer description: Optional ID for the comment (will be generated if not provided) example: 98765 parentId: type: integer description: Parent comment ID if this is a reply example: 54321 trackTimestampS: type: integer description: Timestamp in the track where the comment was made (in seconds) minimum: 0 mentions: type: array description: Array of user IDs mentioned in the comment (max 10) maxItems: 10 items: type: integer example: 67890 dashboard_wallet_users_response: type: object properties: data: type: array items: $ref: "#/components/schemas/dashboard_wallet_user" access_gate: oneOf: - $ref: "#/components/schemas/tip_gate" - $ref: "#/components/schemas/follow_gate" - $ref: "#/components/schemas/purchase_gate" - $ref: "#/components/schemas/token_gate" update_track_request_body: type: object description: Request body for updating track information. All fields are optional. properties: title: type: string description: Track title genre: $ref: "#/components/schemas/genre" description: type: string nullable: true description: Track description maxLength: 1000 mood: nullable: true allOf: - $ref: "#/components/schemas/mood" bpm: type: number nullable: true description: Beats per minute (tempo) musical_key: type: string nullable: true description: Musical key of the track tags: type: string nullable: true description: Comma-separated tags license: type: string nullable: true description: License type isrc: type: string nullable: true description: International Standard Recording Code iswc: type: string nullable: true description: International Standard Musical Work Code release_date: type: string format: date description: Release date track_cid: type: string description: CID for the track audio file orig_file_cid: type: string description: CID for the original track file orig_filename: type: string description: Original filename of the track cover_art_sizes: type: string description: CID for the track cover art preview_cid: type: string description: CID for the track preview preview_start_seconds: type: number format: float description: Preview start time in seconds minimum: 0 duration: type: number format: float description: Track duration in seconds minimum: 0 is_downloadable: type: boolean description: Whether the track is downloadable is_unlisted: type: boolean description: Whether the track is unlisted is_stream_gated: type: boolean description: Whether streaming is restricted behind an access gate access_authorities: type: array nullable: true items: type: string description: Wallet addresses that can sign to authorize stream access (programmable distribution). When empty or omitted, the track is public and validator/creator nodes can serve it. stream_conditions: nullable: true allOf: - $ref: "#/components/schemas/access_gate" download_conditions: nullable: true allOf: - $ref: "#/components/schemas/access_gate" field_visibility: $ref: "#/components/schemas/field_visibility" placement_hosts: type: string description: Placement hosts for the track stem_of: $ref: "#/components/schemas/stem_parent" remix_of: $ref: "#/components/schemas/remix_parent_write" ddex_app: type: string nullable: true description: DDEX application identifier parental_warning_type: type: string nullable: true description: Parental warning type authorized_apps: type: object properties: data: type: array items: $ref: "#/components/schemas/authorized_app" reposts: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/activity" developer_apps_response: type: object properties: data: type: array items: $ref: "#/components/schemas/developer_app" playlist: required: - access - added_timestamps - blocknumber - created_at - favorite_count - followee_favorites - followee_reposts - has_current_user_reposted - has_current_user_saved - id - is_album - is_delete - is_image_autogenerated - is_private - is_scheduled_release - is_stream_gated - permalink - playlist_contents - playlist_name - repost_count - total_play_count - track_count - updated_at - user - user_id type: object properties: artwork: $ref: "#/components/schemas/playlist_artwork" description: type: string permalink: type: string id: type: string is_album: type: boolean is_image_autogenerated: type: boolean playlist_name: type: string playlist_contents: type: array items: $ref: "#/components/schemas/playlist_added_timestamp" repost_count: type: integer favorite_count: type: integer total_play_count: type: integer user: $ref: "#/components/schemas/user" ddex_app: type: string access: $ref: "#/components/schemas/access" upc: type: string track_count: type: integer blocknumber: type: integer created_at: type: string followee_reposts: type: array items: $ref: "#/components/schemas/repost" followee_favorites: type: array items: $ref: "#/components/schemas/favorite" has_current_user_reposted: type: boolean has_current_user_saved: type: boolean is_delete: type: boolean is_private: type: boolean updated_at: type: string added_timestamps: type: array description: DEPRECATED. Use playlist_contents instead. items: $ref: "#/components/schemas/playlist_added_timestamp" user_id: type: string tracks: type: array items: $ref: "#/components/schemas/track" cover_art: type: string cover_art_sizes: type: string cover_art_cids: $ref: "#/components/schemas/playlist_artwork" is_stream_gated: type: boolean stream_conditions: type: object description: How to unlock stream access to the track allOf: - $ref: "#/components/schemas/access_gate" is_scheduled_release: type: boolean release_date: type: string format: date ddex_release_ids: type: object properties: {} artists: type: array items: type: object properties: {} copyright_line: type: object properties: {} producer_copyright_line: type: object properties: {} parental_warning_type: type: string nullable: true track_comments_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/comment" related: $ref: "#/components/schemas/related" search_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/search_model" stem_parent: required: - category - parent_track_id type: object properties: category: type: string parent_track_id: type: integer coin: type: object description: A coin object required: - mint - ticker - decimals - name - created_at properties: mint: type: string description: The mint address of the coin example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj ticker: type: string description: The coin symbol/ticker example: BEAR decimals: type: integer description: The number of decimals for the coin example: 9 name: type: string description: The coin name example: BEAR logo_uri: type: string description: The URI for the coin's logo image example: https://example.com/logo.png banner_image_url: type: string description: The URI for the coin's banner image example: https://example.com/banner.png description: type: string description: The description of the coin example: A majestic bear token for wildlife conservation x_handle: type: string description: X (Twitter) handle for the coin example: bear_token instagram_handle: type: string description: Instagram handle for the coin example: bear_token tiktok_handle: type: string description: TikTok handle for the coin example: bear_token website: type: string description: Website URL for the coin example: https://bear-token.com link_1: type: string description: Generic link URL for the coin example: https://x.com/bear_token link_2: type: string description: Generic link URL for the coin example: https://instagram.com/bear_token link_3: type: string description: Generic link URL for the coin example: https://tiktok.com/@bear_token link_4: type: string description: Generic link URL for the coin example: https://bear-token.com has_discord: type: boolean description: Whether the coin has a Discord server example: false created_at: type: string format: date-time description: The date and time when the coin was created example: "2024-01-15T10:30:00Z" updated_at: type: string format: date-time description: The date and time when the coin was last updated example: "2024-01-15T10:30:00Z" owner_id: type: string description: The user ID of the coin owner example: 7eP5n escrow_recipient: type: string description: The escrow recipient address for custom-created coins without DBCs example: DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 dynamicBondingCurve: $ref: "#/components/schemas/dynamic_bonding_curve_insights" artist_locker: $ref: "#/components/schemas/artist_locker" artist_fees: $ref: "#/components/schemas/artist_coin_fees" reward_pool: $ref: "#/components/schemas/reward_pool" price: type: number description: Current price in USD marketCap: type: number description: Market capitalization in USD totalVolumeUSD: type: number description: Total volume traded in USD (all time) holder: type: integer description: Number of holders totalSupply: type: number description: Total supply of the token liquidity: type: number description: Current liquidity in USD circulatingSupply: type: number description: Circulating supply of the token priceChange24hPercent: type: number description: 24h price change in percent displayPrice: type: number description: Display price (client-computed, e.g. for display formatting) displayMarketCap: type: number description: Display market cap (client-computed) artist_coin_fees: type: object description: Artist coin fee info (unclaimed/total) properties: unclaimed_fees: type: number description: Unclaimed fees total_fees: type: number description: Total fees reward_pool: type: object description: Reward pool for the coin properties: address: type: string description: Reward pool contract address balance: type: number description: Reward pool balance dynamic_bonding_curve_insights: type: object description: Information about the dynamic bonding curve if one exists for the coin properties: address: type: string description: Address of the bonding curve pool price: type: number description: Current price in the pool's quote token (e.g., AUDIO) priceUSD: type: number description: Current price in USD curveProgress: type: number description: Progress along the bonding curve (0.0 - 1.0) isMigrated: type: boolean description: Whether the bonding curve has been migrated creatorQuoteFee: type: number description: Creator quote fee for the bonding curve totalTradingQuoteFee: type: number description: Total trading quote fee accumulated creatorWalletAddress: type: string description: Address of the pool creator's wallet artist_locker: type: object description: Artist locker balance and claimable info for the coin properties: address: type: string description: Locker contract/pool address locked: type: number description: Locked amount unlocked: type: number description: Unlocked amount claimable: type: number description: Claimable amount user_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" tip_gate: required: - tip_user_id type: object properties: tip_user_id: type: integer description: Must tip the given user ID to unlock track_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/track" track_download_count_response: type: object required: - data properties: data: type: object required: - id - download_count properties: id: type: string description: Track ID (hash) download_count: type: integer description: Full track + all stems (parent) or stem-only (stem) track_download_counts_response: type: object required: - data properties: data: type: array items: type: object required: - id - download_count properties: id: type: string description: Track ID (hash) download_count: type: integer description: Full track + all stems (parent) or stem-only (stem) user_tracks_download_count_response: type: object required: - data properties: data: type: integer format: int64 description: Total download count for all tracks (and stems) owned by the user create_user_response: type: object properties: transaction_hash: type: string description: The blockchain transaction hash block_hash: type: string description: The blockchain block hash block_number: type: integer format: int64 description: The blockchain block number/height user_id: type: string description: The ID of the created user tracks_count_response: type: object required: - data properties: data: type: integer description: The total number of tracks matching the filter criteria example: 15 events_response: type: object properties: data: type: array items: $ref: "#/components/schemas/event" version_metadata: required: - service - version type: object properties: service: type: string version: type: string following_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" playlist_search_result: type: object properties: data: type: array items: $ref: "#/components/schemas/playlist" tags_response: type: object properties: data: type: array items: type: string track_activity: allOf: - $ref: "#/components/schemas/activity" - required: - item - item_type type: object properties: item_type: type: string example: track enum: - track item: $ref: "#/components/schemas/track" top_users_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" trending_ids_response: type: object properties: data: $ref: "#/components/schemas/trending_times_ids" purchases_count_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: integer email_access_response: type: object properties: data: $ref: "#/components/schemas/email_access" add_manager_request_body: type: object required: - manager_user_id properties: manager_user_id: type: string description: The user ID of the user to add as manager attestation_reponse: type: object properties: data: $ref: "#/components/schemas/attestation" user_coin_response: type: object properties: data: $ref: "#/components/schemas/user_coin_with_accounts" create_comment_response: type: object properties: transaction_hash: type: string description: The blockchain transaction hash block_hash: type: string description: The blockchain block hash block_number: type: integer format: int64 description: The blockchain block number/height comment_id: type: string description: The ID of the created comment repost_request_body: type: object description: Optional metadata for repost operations properties: is_repost_of_repost: type: boolean description: Set to true when reposting an item that was reposted (used for notifications) coins_volume_leaders_response: type: object required: - data properties: data: type: array items: type: object required: - address - volume properties: address: type: string volume: type: number user: $ref: "#/components/schemas/user" dashboard_wallet_user: required: - user - wallet type: object properties: wallet: type: string user: $ref: "#/components/schemas/user" write_response: type: object properties: transaction_hash: type: string description: The blockchain transaction hash block_hash: type: string description: The blockchain block hash block_number: type: integer format: int64 description: The blockchain block number/height playlist_artwork: type: object properties: 150x150: type: string 480x480: type: string 1000x1000: type: string mirrors: type: array items: type: string data_and_type: type: object properties: type: type: string data: $ref: "#/components/schemas/cid_data" search_autocomplete_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/search_model" track_inspect: type: object properties: data: $ref: "#/components/schemas/blob_info" repost: required: - repost_item_id - repost_type - user_id type: object properties: repost_item_id: type: string repost_type: type: string user_id: type: string comment_response: type: object properties: data: type: array items: $ref: "#/components/schemas/comment" user_ids_addresses_response: type: object properties: data: type: array items: $ref: "#/components/schemas/user_id_address" access_info_response: type: object properties: data: $ref: "#/components/schemas/track_access_info" user_account_response: type: object properties: data: $ref: "#/components/schemas/account" balance_history_response: type: object required: - data properties: data: type: array items: $ref: "#/components/schemas/balance_history_data_point" stems_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/stem" history_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track_activity" authorized_app: required: - address - grant_created_at - grant_updated_at - grantor_user_id - name type: object properties: address: type: string name: type: string description: type: string image_url: type: string grantor_user_id: type: string grant_created_at: type: string grant_updated_at: type: string purchase_gate: required: - usdc_purchase type: object properties: usdc_purchase: type: object description: Must pay the total price and split to the given addresses to unlock allOf: - $ref: "#/components/schemas/usdc_gate" purchase: required: - access - amount - buyer_user_id - content_id - content_type - created_at - extra_amount - seller_user_id - signature - slot - splits - updated_at type: object properties: slot: type: integer signature: type: string seller_user_id: type: string buyer_user_id: type: string amount: type: string extra_amount: type: string content_type: type: string content_id: type: string created_at: type: string updated_at: type: string access: type: string splits: type: array items: $ref: "#/components/schemas/purchase_split" discriminator: propertyName: content_type playlists_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/playlist_without_tracks" prizes_response: type: object required: - data properties: data: type: array items: $ref: "#/components/schemas/prize_public" description: List of active prizes available for claiming create_coin_response: type: object properties: data: type: object required: - mint - ticker - user_id - decimals - name - created_at properties: mint: type: string description: The mint address of the coin example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj ticker: type: string description: The coin symbol/ticker example: BEAR user_id: type: integer description: The user ID who created the coin example: 1 decimals: type: integer description: The number of decimals for the coin example: 9 name: type: string description: The coin name example: BEAR logo_uri: type: string description: The URI for the coin's logo image example: https://example.com/logo.png banner_image_url: type: string description: The URI for the coin's banner image example: https://example.com/banner.png description: type: string description: The description of the coin example: A majestic bear token for wildlife conservation link_1: type: string description: Generic link URL for the coin example: https://x.com/bear_token link_2: type: string description: Generic link URL for the coin example: https://instagram.com/bear_token link_3: type: string description: Generic link URL for the coin example: https://tiktok.com/@bear_token link_4: type: string description: Generic link URL for the coin example: https://bear-token.com created_at: type: string format: date-time description: The date and time when the coin was created example: "2024-01-15T10:30:00Z" unclaimed_id_response: type: object properties: data: type: string tracks_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track" managed_users_response: type: object properties: data: type: array items: $ref: "#/components/schemas/managed_user" reactions: type: object properties: data: type: array items: $ref: "#/components/schemas/reaction" user_search: type: object properties: data: type: array items: $ref: "#/components/schemas/user" remixers_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" purchasers_count_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: integer create_developer_app_response: type: object properties: api_key: type: string description: The API key (address) for the developer app api_secret: type: string description: The private key for the developer app (for signing) bearer_token: type: string description: The bearer token for API authentication (use in Authorization header) transaction_hash: type: string description: Transaction hash of the creation block_hash: type: string description: The blockchain block hash block_number: type: integer format: int64 description: The blockchain block number/height playlist_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/playlist" coin_members_response: type: object required: - data properties: data: type: array items: $ref: "#/components/schemas/coin_member" access: required: - download - stream type: object properties: stream: type: boolean download: type: boolean search_model: required: - albums - playlists - tracks - users type: object properties: users: type: array items: $ref: "#/components/schemas/user" followed_users: type: array items: $ref: "#/components/schemas/user" tracks: type: array items: $ref: "#/components/schemas/search_track" saved_tracks: type: array items: $ref: "#/components/schemas/search_track" playlists: type: array items: $ref: "#/components/schemas/search_playlist" saved_playlists: type: array items: $ref: "#/components/schemas/search_playlist" albums: type: array items: $ref: "#/components/schemas/search_playlist" saved_albums: type: array items: $ref: "#/components/schemas/search_playlist" track_inspect_list: type: object properties: data: type: array items: $ref: "#/components/schemas/blob_info" developer_app: required: - address - name - user_id type: object properties: address: type: string user_id: type: string name: type: string description: type: string image_url: type: string redirect_uris: type: array maxItems: 50 items: type: string maxLength: 2000 description: Pre-registered OAuth callback URLs for this app attestation: required: - attestation - owner_wallet type: object properties: owner_wallet: type: string attestation: type: string favorite_request_body: type: object description: Optional metadata for favorite/save operations properties: is_save_of_repost: type: boolean description: Set to true when favoriting a reposted item (used for notifications) track_download_request_body: type: object properties: city: type: string description: City where the download occurred region: type: string description: Region where the download occurred country: type: string description: Country where the download occurred remix_parent_write: type: object required: - tracks properties: tracks: type: array items: $ref: "#/components/schemas/track_element_write" user: required: - album_count - allow_ai_attribution - artist_coin_badge - associated_sol_wallets_balance - associated_wallets_balance - balance - blocknumber - created_at - current_user_followee_follow_count - does_current_user_follow - does_current_user_subscribe - does_follow_current_user - erc_wallet - followee_count - follower_count - handle - handle_lc - has_collectibles - id - is_available - is_deactivated - is_storage_v2 - is_verified - name - playlist_count - repost_count - spl_wallet - spl_usdc_wallet - supporter_count - supporting_count - total_audio_balance - total_balance - track_count - updated_at - verified_with_instagram - verified_with_tiktok - verified_with_twitter - wallet - waudio_balance type: object properties: album_count: type: integer artist_pick_track_id: type: string artist_coin_badge: type: object properties: mint: type: string logo_uri: type: string banner_image_url: type: string ticker: type: string description: The coin symbol/ticker coin_flair_mint: type: string bio: type: string cover_photo: $ref: "#/components/schemas/cover_photo" followee_count: type: integer follower_count: type: integer handle: type: string id: type: string is_verified: type: boolean twitter_handle: type: string instagram_handle: type: string tiktok_handle: type: string verified_with_twitter: type: boolean verified_with_instagram: type: boolean verified_with_tiktok: type: boolean website: type: string donation: type: string location: type: string name: type: string playlist_count: type: integer profile_picture: $ref: "#/components/schemas/profile_picture" repost_count: type: integer track_count: type: integer is_deactivated: type: boolean is_available: type: boolean erc_wallet: type: string spl_wallet: type: string spl_usdc_wallet: type: string spl_usdc_payout_wallet: type: string supporter_count: type: integer supporting_count: type: integer total_audio_balance: type: integer wallet: type: string description: The user's Ethereum wallet address for their account balance: type: string associated_wallets_balance: type: string total_balance: type: string waudio_balance: type: string associated_sol_wallets_balance: type: string blocknumber: type: integer created_at: type: string is_storage_v2: type: boolean creator_node_endpoint: type: string current_user_followee_follow_count: type: integer does_current_user_follow: type: boolean does_current_user_subscribe: type: boolean does_follow_current_user: type: boolean handle_lc: type: string updated_at: type: string cover_photo_sizes: type: string cover_photo_cids: $ref: "#/components/schemas/cover_photo" cover_photo_legacy: type: string profile_picture_sizes: type: string profile_picture_cids: $ref: "#/components/schemas/profile_picture" profile_picture_legacy: type: string has_collectibles: type: boolean playlist_library: $ref: "#/components/schemas/playlist_library" allow_ai_attribution: type: boolean profile_type: type: string playlist_updates_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/playlist_updates" update_user_request_body: type: object description: Request body for updating user profile. All fields are optional. properties: handle: type: string description: User handle. Can only be set if the user does not already have a handle. name: type: string description: Display name bio: type: string description: User bio maxLength: 256 location: type: string description: User location website: type: string description: Website URL format: uri donation: type: string description: Donation link twitter_handle: type: string description: Twitter handle (without @) instagram_handle: type: string description: Instagram handle (without @) tiktok_handle: type: string description: TikTok handle (without @) profile_picture: type: string description: Profile picture CID or URL profile_picture_sizes: type: string description: Profile picture sizes metadata cover_photo: type: string description: Cover photo CID or URL cover_photo_sizes: type: string description: Cover photo sizes metadata profile_type: type: string nullable: true enum: - label description: Type of profile (e.g., 'label' for record labels) is_deactivated: type: boolean description: Whether the user is deactivated artist_pick_track_id: type: string description: Track hash ID to feature as artist pick example: x5pJ3Az allow_ai_attribution: type: boolean description: Whether to allow AI attribution spl_usdc_payout_wallet: type: string description: Solana USDC payout wallet address coin_flair_mint: type: string description: Coin flair mint address playlist_library: $ref: "#/components/schemas/user_playlist_library" events: type: object description: User events for tracking referrals and mobile users properties: referrer: type: string description: Hash ID of the user who referred this user example: k9Xm5Pz is_mobile_user: type: boolean description: Whether the user is on mobile update_comment_request_body: type: object required: - entityType - entityId - body properties: entityType: allOf: - $ref: "#/components/schemas/comment_entity_type" example: Track entityId: type: integer description: ID of the entity being commented on example: 12345 body: type: string description: The updated comment text maxLength: 500 mentions: type: array description: Array of user IDs mentioned in the comment (max 10) maxItems: 10 items: type: integer example: 67890 related: type: object properties: users: type: array items: $ref: "#/components/schemas/user" tracks: type: array items: $ref: "#/components/schemas/track" playlists: type: array items: $ref: "#/components/schemas/playlist" coin_insights_response: type: object properties: data: $ref: "#/components/schemas/coin_insights" collection_library_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/collection_activity_without_tracks" track_favorites_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" ddex_resource_contributor: type: object required: - name - roles properties: name: type: string minLength: 1 description: Contributor name roles: type: array minItems: 1 items: type: string minLength: 1 description: Contributor roles sequence_number: type: integer minimum: 0 description: Sequence number for ordering get_supporter: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/supporter" playlist_added_timestamp: required: - timestamp - track_id type: object properties: metadata_timestamp: type: integer description: Optional. Metadata timestamp for when the track was added to the playlist. timestamp: type: integer track_id: type: string balance_history_data_point: type: object required: - timestamp - balance_usd properties: timestamp: type: integer format: int64 description: Unix timestamp in seconds example: 1704067200 balance_usd: type: number format: double description: Total portfolio balance in USD at this timestamp example: 1234.56 remixed_track_aggregate: required: - remix_count - title - track_id type: object properties: track_id: type: string title: type: string remix_count: type: integer update_coin_request: type: object description: Request body for updating coin information properties: description: type: string description: The description of the coin (max 2500 characters) example: Updated description for the bear token maxLength: 2500 banner_image_url: type: string description: URL for the coin's banner image example: https://example.com/banner.png format: uri link_1: type: string description: Generic link URL for the coin example: https://x.com/bear_token format: uri link_2: type: string description: Generic link URL for the coin example: https://instagram.com/bear_token format: uri link_3: type: string description: Generic link URL for the coin example: https://tiktok.com/@bear_token format: uri link_4: type: string description: Generic link URL for the coin example: https://bear-token.com format: uri create_reward_code_response: type: object required: - code - mint - reward_address - amount properties: code: type: string description: The generated 6-character alphanumeric reward code example: aB3d5F mint: type: string description: The coin mint address example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM reward_address: type: string description: The reward address (authorized public key) example: 9XeZbswbSSUU4AHVArQbTQjAEjAPhVweGU5cogBVkvh4 amount: type: integer description: The reward amount example: 100 sales_aggregate_response: type: object properties: data: type: array items: $ref: "#/components/schemas/sales_aggregate" related_artist_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" field_visibility: required: - genre - mood - play_count - remixes - share - tags type: object properties: mood: type: boolean tags: type: boolean genre: type: boolean share: type: boolean play_count: type: boolean remixes: type: boolean user_coin_with_accounts: type: object required: - mint - ticker - decimals - balance - balance_usd - accounts properties: mint: type: string description: The coin mint address example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM ticker: type: string description: The coin symbol example: $AUDIO decimals: type: integer description: The number of decimals for the coin example: 8 logo_uri: type: string nullable: true description: URL to the coin's logo image example: https://example.com/logo.png balance: type: integer description: The total balance of the coin in the user's account (in wei) example: 1000000000 balance_usd: type: number description: The total balance of the coin in the user's account in USD example: 1.23 accounts: type: array items: $ref: "#/components/schemas/user_coin_account" managers_response: type: object properties: data: type: array items: $ref: "#/components/schemas/user_manager" event: required: - created_at - event_data - event_id - event_type - updated_at - user_id type: object properties: event_id: type: string event_type: type: string example: remix_contest enum: - remix_contest - live_event - new_release user_id: type: string entity_type: type: string example: track enum: - track - collection - user entity_id: type: string end_date: type: string is_deleted: type: boolean created_at: type: string updated_at: type: string event_data: type: object properties: {} create_user_request_body: type: object required: - handle - wallet properties: user_id: type: string description: Optional user hash ID (will be generated if not provided) example: p9Km2Lx handle: type: string description: User handle (unique username) example: newartist wallet: type: string description: Wallet address (required) example: 0x1234... name: type: string description: Display name example: New Artist bio: type: string description: User bio maxLength: 256 location: type: string description: User location website: type: string description: Website URL format: uri donation: type: string description: Donation link twitter_handle: type: string description: Twitter handle (without @) instagram_handle: type: string description: Instagram handle (without @) tiktok_handle: type: string description: TikTok handle (without @) profile_picture: type: string description: Profile picture CID or URL profile_picture_sizes: type: string description: Profile picture sizes metadata cover_photo: type: string description: Cover photo CID or URL cover_photo_sizes: type: string description: Cover photo sizes metadata profile_type: type: string nullable: true enum: - label description: Type of profile (e.g., 'label' for record labels) allow_ai_attribution: type: boolean description: Whether to allow AI attribution spl_usdc_payout_wallet: type: string description: Solana USDC payout wallet address playlist_library: $ref: "#/components/schemas/user_playlist_library" events: type: object description: User events for tracking referrals and mobile users properties: referrer: type: string description: Hash ID of the user who referred this user example: k9Xm5Pz is_mobile_user: type: boolean description: Whether the user is on mobile coin_member: type: object required: - balance - user_id properties: balance: type: integer description: The user's balance of the specific coin (in wei) example: 100000 user_id: type: string description: The ID of the user with a non-zero balance example: 7eP5n register_api_key_request_body: type: object required: - api_secret properties: api_secret: type: string description: The API secret (private key hex) for the developer app register_api_key_response: type: object properties: success: type: boolean description: Whether the registration was successful deactivate_access_key_request_body: type: object required: - api_access_key properties: api_access_key: type: string description: The bearer token (API access key) to deactivate get_supporting: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/supporting" sales_json_response: type: object properties: data: $ref: "#/components/schemas/sales_json_content" react_comment_request_body: type: object required: - entityType - entityId properties: entityType: allOf: - $ref: "#/components/schemas/comment_entity_type" example: Track entityId: type: integer description: ID of the entity (track) being commented on example: 12345 comment_replies_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/reply_comment" related: $ref: "#/components/schemas/related" transaction_history_count_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: integer undisbursed_challenge: required: - amount - challenge_id - completed_at - completed_blocknumber - created_at - handle - specifier - user_id - wallet type: object properties: challenge_id: type: string user_id: type: string specifier: type: string amount: type: string completed_blocknumber: type: integer handle: type: string wallet: type: string created_at: type: string completed_at: type: string cooldown_days: type: integer create_playlist_response: type: object properties: transaction_hash: type: string description: The blockchain transaction hash block_hash: type: string description: The blockchain block hash block_number: type: integer format: int64 description: The blockchain block number/height playlist_id: type: string description: The ID of the created playlist track_comment_notification_response: type: object properties: data: $ref: "#/components/schemas/comment_notification_setting" verify_token: type: object properties: data: $ref: "#/components/schemas/decoded_user_token" claimed_prize: type: object required: - id - wallet - signature - mint - amount - prize_id - prize_name - created_at properties: id: type: integer description: The unique identifier of the claimed prize record example: 1 wallet: type: string description: The wallet address that claimed the prize example: HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC signature: type: string description: The transaction signature used to claim the prize example: 5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA mint: type: string description: The coin mint address used for the claim example: ZDaUDL4XFdEct7UgeztrFQAptsvh4ZdhyZDZ1RpxYAK amount: type: integer description: The amount paid to claim the prize (in smallest unit, e.g., lamports) example: 2000000000 prize_id: type: string description: The unique identifier of the prize won example: prize_1_yak_airdrop prize_name: type: string description: The name of the prize won example: 1 YAK Airdrop prize_type: type: string description: The type of prize (e.g., "coin_airdrop", "download") example: coin_airdrop created_at: type: string format: date-time description: When the prize was claimed example: "2024-01-15T10:30:00Z" collectibles: type: object properties: data: type: object properties: {} description: Raw collectibles JSON structure generated by client prize_public: type: object required: - prize_id - name - weight properties: prize_id: type: string description: The unique identifier of the prize example: prize_1_yak_airdrop name: type: string description: The name of the prize example: 1 YAK Airdrop description: type: string description: Description of the prize example: Win 1 YAK coin airdrop weight: type: integer description: Weight for random selection (higher = more likely) example: 1 metadata: type: object description: Sanitized metadata (excludes sensitive URLs) additionalProperties: true example: type: coin_airdrop amount: 1000000000 purchase_split: required: - amount - payout_wallet type: object properties: user_id: type: integer payout_wallet: type: string amount: type: string remixers_count_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: integer claim_rewards_response: type: object required: - data properties: data: type: array items: type: object required: - challengeId - specifier properties: challengeId: type: string description: The challenge ID example: u specifier: type: string description: The challenge specifier example: 7eP5n amount: type: string description: The reward amount example: "1000000000" signatures: type: array items: type: string description: Transaction signatures example: - 5j7s1QjmRKFuDbCWMRVRNibSV2VAAEcNKP6HWU7GwPdXkBZvhz8n4vQl7bBq8tN4Rz9x1Kj3mP5wQ8rT2Y6zA error: type: string description: Error message if claim failed example: Insufficient balance update_developer_app_request_body: type: object required: - name properties: name: type: string description: Developer app name description: type: string description: App description image_url: type: string description: App logo/image URL redirect_uris: type: array maxItems: 50 items: type: string maxLength: 2000 description: Pre-registered OAuth redirect/callback URIs playlist_without_tracks: required: - access - added_timestamps - blocknumber - created_at - favorite_count - followee_favorites - followee_reposts - has_current_user_reposted - has_current_user_saved - id - is_album - is_delete - is_image_autogenerated - is_private - is_scheduled_release - is_stream_gated - permalink - playlist_contents - playlist_name - repost_count - total_play_count - track_count - updated_at - user - user_id type: object properties: artwork: $ref: "#/components/schemas/playlist_artwork" description: type: string permalink: type: string id: type: string is_album: type: boolean is_image_autogenerated: type: boolean playlist_name: type: string playlist_contents: type: array items: $ref: "#/components/schemas/playlist_added_timestamp" repost_count: type: integer favorite_count: type: integer total_play_count: type: integer user: $ref: "#/components/schemas/user" ddex_app: type: string access: $ref: "#/components/schemas/access" upc: type: string track_count: type: integer blocknumber: type: integer created_at: type: string followee_reposts: type: array items: $ref: "#/components/schemas/repost" followee_favorites: type: array items: $ref: "#/components/schemas/favorite" has_current_user_reposted: type: boolean has_current_user_saved: type: boolean is_delete: type: boolean is_private: type: boolean updated_at: type: string added_timestamps: type: array description: DEPRECATED. Use playlist_contents instead. items: $ref: "#/components/schemas/playlist_added_timestamp" user_id: type: string tracks: type: array items: $ref: "#/components/schemas/track" cover_art: type: string cover_art_sizes: type: string cover_art_cids: $ref: "#/components/schemas/playlist_artwork" is_stream_gated: type: boolean stream_conditions: type: object description: How to unlock stream access to the track allOf: - $ref: "#/components/schemas/access_gate" is_scheduled_release: type: boolean release_date: type: string ddex_release_ids: type: object properties: {} artists: type: array items: type: object properties: {} copyright_line: type: object properties: {} producer_copyright_line: type: object properties: {} parental_warning_type: type: string nullable: true get_tips_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/tip" user_coins_response: type: object required: - data properties: data: type: array items: $ref: "#/components/schemas/user_coin" create_coin_request: type: object required: - mint - ticker - decimals - name properties: mint: type: string description: The mint address of the coin example: bearR26zyyB3fNQm5wWv1ZfN8MPQDUMwaAuoG79b1Yj ticker: type: string description: The coin symbol/ticker example: BEAR decimals: type: integer description: The number of decimals for the coin (0-18) minimum: 0 maximum: 18 example: 9 name: type: string description: The coin name example: BEAR logo_uri: type: string description: The URI for the coin's logo image example: https://example.com/logo.png banner_image_url: type: string description: The URI for the coin's banner image example: https://example.com/banner.png format: uri description: type: string description: The description of the coin example: A majestic bear token for wildlife conservation link_1: type: string description: Generic link URL for the coin example: https://x.com/bear_token format: uri link_2: type: string description: Generic link URL for the coin example: https://instagram.com/bear_token format: uri link_3: type: string description: Generic link URL for the coin example: https://tiktok.com/@bear_token format: uri link_4: type: string description: Generic link URL for the coin example: https://bear-token.com format: uri favorites_response: type: object properties: data: type: array items: $ref: "#/components/schemas/favorite" remixables_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track" reward_code_error_response: type: object properties: error: type: string description: Error message indicating why the code cannot be redeemed example: used enum: - used - invalid create_grant_request_body: type: object required: - app_api_key properties: app_api_key: type: string description: The developer app address (API key) to grant authorization to follow_gate: required: - follow_user_id type: object properties: follow_user_id: type: integer description: Must follow the given user ID to unlock user_subscribers: required: - user_id type: object properties: user_id: type: string subscriber_ids: type: array items: type: string deactivate_access_key_response: type: object properties: success: type: boolean description: Whether the deactivation was successful user_comments_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/comment" related: $ref: "#/components/schemas/related" coin_members_count_response: type: object required: - data properties: data: type: integer description: The total number of users with a non-zero balance of the specific coin example: 42 user_manager: required: - grant - manager type: object properties: manager: $ref: "#/components/schemas/user" grant: $ref: "#/components/schemas/grant" genre: type: string description: Music genre enum: - Electronic - Rock - Metal - Alternative - Hip-Hop/Rap - Experimental - Punk - Folk - Pop - Ambient - Soundtrack - World - Jazz - Acoustic - Funk - R&B/Soul - Devotional - Classical - Reggae - Podcasts - Country - Spoken Word - Comedy - Blues - Kids - Audiobooks - Latin - Lo-Fi - Hyperpop - Dancehall - Techno - Trap - House - Tech House - Deep House - Disco - Electro - Jungle - Progressive House - Hardstyle - Glitch Hop - Trance - Future Bass - Future House - Tropical House - Downtempo - Drum & Bass - Dubstep - Jersey Club - Vaporwave - Moombahton albums_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/playlist_without_tracks" favorite: required: - created_at - favorite_item_id - favorite_type - user_id type: object properties: favorite_item_id: type: string favorite_type: type: string user_id: type: string created_at: type: string approve_grant_request_body: type: object required: - grantor_user_id properties: grantor_user_id: type: string description: The user ID of the child user who proposed the manager (grantor) user_feed_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user_feed_item" remixing_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track" track_reposts_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" top_genre_users_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" grant: required: - created_at - grantee_address - is_approved - is_revoked - updated_at - user_id type: object properties: grantee_address: type: string user_id: type: string is_revoked: type: boolean is_approved: type: boolean created_at: type: string updated_at: type: string mutual_followers_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" redeem_amount_response: type: object required: - amount properties: amount: type: integer description: Static amount indicator (always 1) example: 1 create_developer_app_request_body: type: object required: - name properties: name: type: string description: Developer app name example: My API Key description: type: string description: App description image_url: type: string description: App logo/image URL redirect_uris: type: array maxItems: 50 items: type: string maxLength: 2000 description: Pre-registered OAuth redirect/callback URIs coins_response: type: object required: - data properties: data: type: array items: $ref: "#/components/schemas/coin" update_coin_response: type: object properties: success: type: boolean description: Indicates if the update was successful example: true create_track_response: type: object properties: transaction_hash: type: string description: The blockchain transaction hash block_hash: type: string description: The blockchain block hash block_number: type: integer format: int64 description: The blockchain block number/height track_id: type: string description: The ID of the created track get_supporters: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/supporter" blob_info: required: - content_type - size type: object properties: size: type: integer content_type: type: string reward_code_response: type: object required: - code - amount properties: code: type: string description: The reward code example: XYZ123 amount: type: integer description: The amount of coins rewarded by this code example: 100 update_playlist_request_body: type: object description: Request body for updating playlist information. All fields are optional. properties: playlist_name: type: string minLength: 1 description: Playlist or album name description: type: string description: Playlist description maxLength: 1000 is_private: type: boolean description: Whether the playlist is private is_album: type: boolean description: Whether this is an album genre: $ref: "#/components/schemas/genre" mood: allOf: - $ref: "#/components/schemas/mood" tags: type: string description: Comma-separated tags license: type: string description: License type upc: type: string description: Universal Product Code (for albums) release_date: type: string format: date description: Release date playlist_image_sizes_multihash: type: string description: CID for the playlist cover art playlist_contents: type: array description: Array of track IDs to include in the playlist items: $ref: "#/components/schemas/playlist_added_timestamp" is_stream_gated: type: boolean nullable: true description: Whether streaming is restricted behind an access gate is_scheduled_release: type: boolean nullable: true description: Whether the playlist/album is a scheduled release stream_conditions: nullable: true allOf: - $ref: "#/components/schemas/access_gate" ddex_app: type: string description: DDEX application identifier ddex_release_ids: type: object nullable: true additionalProperties: type: string description: DDEX release identifiers artists: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" description: DDEX resource contributors / artists copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" description: DDEX copyright line producer_copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" description: DDEX producer copyright line parental_warning_type: type: string nullable: true description: Parental warning type is_image_autogenerated: type: boolean nullable: true description: Whether the image is autogenerated tracks: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/track" developer_app_response: type: object properties: data: $ref: "#/components/schemas/developer_app" remixes_response: type: object properties: data: type: object required: - count properties: count: type: integer tracks: type: array items: $ref: "#/components/schemas/track" track: required: - access - artwork - blocknumber - comment_count - cover_art_sizes - created_at - download - duration - favorite_count - field_visibility - followee_favorites - followee_reposts - genre - has_current_user_reposted - has_current_user_saved - id - is_available - is_delete - is_download_gated - is_downloadable - is_original_available - is_owned_by_user - is_scheduled_release - is_stream_gated - is_unlisted - permalink - play_count - preview - remix_of - repost_count - route_id - stream - title - track_segments - updated_at - user - user_id type: object properties: artwork: $ref: "#/components/schemas/track_artwork" description: type: string genre: type: string id: type: string track_cid: type: string preview_cid: type: string orig_file_cid: type: string orig_filename: type: string is_original_available: type: boolean mood: type: string release_date: type: string format: date remix_of: $ref: "#/components/schemas/remix_parent" repost_count: type: integer favorite_count: type: integer comment_count: type: integer tags: type: string title: type: string user: $ref: "#/components/schemas/user" duration: type: integer is_downloadable: type: boolean play_count: type: integer permalink: type: string is_streamable: type: boolean ddex_app: type: string playlists_containing_track: type: array items: type: integer pinned_comment_id: type: integer album_backlink: $ref: "#/components/schemas/album_backlink" access: type: object description: Describes what access the given user has allOf: - $ref: "#/components/schemas/access" blocknumber: type: integer description: The blocknumber this track was last updated create_date: type: string cover_art_sizes: type: string cover_art_cids: $ref: "#/components/schemas/cover_art" created_at: type: string credits_splits: type: string isrc: type: string license: type: string iswc: type: string field_visibility: $ref: "#/components/schemas/field_visibility" followee_reposts: type: array items: $ref: "#/components/schemas/repost" has_current_user_reposted: type: boolean is_scheduled_release: type: boolean is_unlisted: type: boolean has_current_user_saved: type: boolean followee_favorites: type: array items: $ref: "#/components/schemas/favorite" route_id: type: string stem_of: $ref: "#/components/schemas/stem_parent" track_segments: type: array items: $ref: "#/components/schemas/track_segment" updated_at: type: string user_id: type: string is_delete: type: boolean cover_art: type: string is_available: type: boolean ai_attribution_user_id: type: integer allowed_api_keys: type: array items: type: string audio_upload_id: type: string preview_start_seconds: type: number bpm: type: number is_custom_bpm: type: boolean musical_key: type: string is_custom_musical_key: type: boolean audio_analysis_error_count: type: integer comments_disabled: type: boolean ddex_release_ids: type: object properties: {} artists: type: array items: type: object properties: {} resource_contributors: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" indirect_resource_contributors: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" rights_controller: nullable: true $ref: "#/components/schemas/ddex_rights_controller" copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" producer_copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" parental_warning_type: type: string nullable: true is_stream_gated: type: boolean description: Whether or not the owner has restricted streaming behind an access gate access_authorities: type: array nullable: true items: type: string description: Wallet addresses that can sign to authorize stream access (programmable distribution). When empty or omitted, the track is public and validator/creator nodes can serve it. stream_conditions: type: object description: How to unlock stream access to the track allOf: - $ref: "#/components/schemas/access_gate" is_download_gated: type: boolean description: Whether or not the owner has restricted downloading behind an access gate download_conditions: type: object description: How to unlock the track download allOf: - $ref: "#/components/schemas/access_gate" cover_original_song_title: type: string cover_original_artist: type: string is_owned_by_user: type: boolean description: Indicates whether the track is owned by the user for MRI sake stream: $ref: "#/components/schemas/url_with_mirrors" download: $ref: "#/components/schemas/url_with_mirrors" preview: $ref: "#/components/schemas/url_with_mirrors" stream_url_response: required: - data type: object properties: data: type: string followers_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" get_supported_users: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/supporting" notifications_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: $ref: "#/components/schemas/notifications" connected_wallets_response: type: object properties: data: $ref: "#/components/schemas/connected_wallets" best_selling_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/best_selling_item" related: $ref: "#/components/schemas/related" track_search: type: object properties: data: type: array items: $ref: "#/components/schemas/track" user_track_listen_counts_response: type: object properties: data: $ref: "#/components/schemas/wild_month_model" subscribers_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/user" transaction_history_response: required: - latest_chain_block - latest_chain_slot_plays - latest_indexed_block - latest_indexed_slot_plays - signature - timestamp - version type: object properties: latest_chain_block: type: integer latest_indexed_block: type: integer latest_chain_slot_plays: type: integer latest_indexed_slot_plays: type: integer signature: type: string timestamp: type: string version: $ref: "#/components/schemas/version_metadata" data: type: array items: $ref: "#/components/schemas/transaction_details" mood: type: string description: Music mood enum: - Peaceful - Romantic - Sentimental - Tender - Easygoing - Yearning - Sophisticated - Sensual - Cool - Gritty - Melancholy - Serious - Brooding - Fiery - Defiant - Aggressive - Rowdy - Excited - Energizing - Empowering - Stirring - Upbeat - Other get_challenges: type: object properties: data: type: array items: $ref: "#/components/schemas/challenge_response" sales_aggregate: required: - content_id - content_type - purchase_count type: object properties: content_type: type: string content_id: type: string purchase_count: type: integer connected_wallets: required: - erc_wallets - spl_wallets type: object properties: erc_wallets: type: array items: type: string spl_wallets: type: array items: type: string comment_entity_type: type: string description: Type of entity that can be commented on enum: - Track top_listener: type: object properties: data: type: array items: $ref: "#/components/schemas/top_listener" collection_activity_without_tracks: allOf: - $ref: "#/components/schemas/activity" - required: - item - item_type type: object properties: item_type: type: string example: playlist enum: - playlist item: $ref: "#/components/schemas/playlist_without_tracks" comment: required: - created_at - entity_id - entity_type - id - is_edited - message - react_count - reply_count type: object properties: id: type: string entity_id: type: string entity_type: $ref: "#/components/schemas/comment_entity_type" user_id: type: string message: type: string mentions: type: array items: $ref: "#/components/schemas/comment_mention" track_timestamp_s: type: integer react_count: type: integer reply_count: type: integer is_edited: type: boolean is_current_user_reacted: type: boolean is_artist_reacted: type: boolean is_tombstone: type: boolean is_muted: type: boolean created_at: type: string updated_at: type: string replies: type: array items: $ref: "#/components/schemas/reply_comment" parent_comment_id: type: integer reaction: required: - reacted_to - reaction_type - reaction_value - sender_user_id type: object properties: reaction_value: type: string reaction_type: type: string sender_user_id: type: string reacted_to: type: string stem: required: - blocknumber - category - cid - id - orig_filename - parent_id - user_id type: object properties: id: type: string parent_id: type: string category: type: string cid: type: string user_id: type: string blocknumber: type: integer orig_filename: type: string user_id_address: type: object required: - user_id - address properties: user_id: type: string address: type: string album_backlink: required: - permalink - playlist_id - playlist_name type: object properties: playlist_id: type: integer playlist_name: type: string permalink: type: string challenge_response: required: - amount - challenge_id - challenge_type - disbursed_amount - is_active - is_complete - is_disbursed - metadata - user_id type: object properties: challenge_id: type: string user_id: type: string specifier: type: string is_complete: type: boolean is_active: type: boolean is_disbursed: type: boolean current_step_count: type: integer max_steps: type: integer challenge_type: type: string amount: type: string disbursed_amount: type: integer cooldown_days: type: integer metadata: type: object properties: {} email_access: required: - created_at - email_owner_user_id - encrypted_key - grantor_user_id - id - is_initial - receiving_user_id - updated_at type: object properties: id: type: integer email_owner_user_id: type: integer receiving_user_id: type: integer grantor_user_id: type: integer encrypted_key: type: string is_initial: type: boolean created_at: type: string updated_at: type: string track_access_info: required: - blocknumber - user_id type: object properties: access: type: object description: Describes what access the given user has allOf: - $ref: "#/components/schemas/access" user_id: type: string description: The user ID of the owner of this track blocknumber: type: integer description: The blocknumber this track was last updated is_stream_gated: type: boolean description: Whether or not the owner has restricted streaming behind an access gate stream_conditions: type: object description: How to unlock stream access to the track allOf: - $ref: "#/components/schemas/extended_access_gate" is_download_gated: type: boolean description: Whether or not the owner has restricted downloading behind an access gate download_conditions: type: object description: How to unlock the track download allOf: - $ref: "#/components/schemas/extended_access_gate" activity: required: - class - item - item_type - timestamp type: object properties: timestamp: type: string item_type: type: string example: track enum: - track - playlist item: type: object properties: {} class: type: string discriminator: propertyName: class token_gate: required: - token_gate type: object properties: token_gate: type: object description: Must hold an NFT of the given collection to unlock allOf: - $ref: "#/components/schemas/extended_token_gate" cover_photo: type: object properties: 640x: type: string 2000x: type: string mirrors: type: array items: type: string nft_gate: required: - nft_collection type: object properties: nft_collection: type: object description: Must hold an NFT of the given collection to unlock allOf: - $ref: "#/components/schemas/nft_collection" cid_data: type: object properties: collectibles: type: object properties: {} associated_sol_wallets: type: object properties: {} associated_wallets: type: object properties: {} trending_times_ids: type: object properties: week: type: array items: $ref: "#/components/schemas/track_id" month: type: array items: $ref: "#/components/schemas/track_id" year: type: array items: $ref: "#/components/schemas/track_id" account: required: - playlists - track_save_count - user type: object properties: user: $ref: "#/components/schemas/user" playlists: type: array items: $ref: "#/components/schemas/account_collection" playlist_library: $ref: "#/components/schemas/playlist_library" track_save_count: type: integer search_playlist: required: - access - added_timestamps - blocknumber - created_at - favorite_count - has_current_user_reposted - has_current_user_saved - id - is_album - is_delete - is_image_autogenerated - is_private - is_scheduled_release - is_stream_gated - permalink - playlist_contents - playlist_name - repost_count - total_play_count - track_count - updated_at - user - user_id type: object properties: artwork: $ref: "#/components/schemas/playlist_artwork" description: type: string permalink: type: string id: type: string is_album: type: boolean is_image_autogenerated: type: boolean playlist_name: type: string playlist_contents: type: array items: $ref: "#/components/schemas/playlist_added_timestamp" repost_count: type: integer favorite_count: type: integer total_play_count: type: integer user: $ref: "#/components/schemas/user" ddex_app: type: string access: $ref: "#/components/schemas/access" upc: type: string track_count: type: integer blocknumber: type: integer created_at: type: string followee_reposts: type: array items: $ref: "#/components/schemas/repost" followee_favorites: type: array items: $ref: "#/components/schemas/favorite" has_current_user_reposted: type: boolean has_current_user_saved: type: boolean is_delete: type: boolean is_private: type: boolean updated_at: type: string added_timestamps: type: array description: DEPRECATED. Use playlist_contents instead. items: $ref: "#/components/schemas/playlist_added_timestamp" user_id: type: string tracks: type: array items: $ref: "#/components/schemas/track" cover_art: type: string cover_art_sizes: type: string cover_art_cids: $ref: "#/components/schemas/playlist_artwork" is_stream_gated: type: boolean stream_conditions: type: object description: How to unlock stream access to the track allOf: - $ref: "#/components/schemas/access_gate" is_scheduled_release: type: boolean release_date: type: string ddex_release_ids: type: object properties: {} artists: type: array items: type: object properties: {} copyright_line: type: object properties: {} producer_copyright_line: type: object properties: {} parental_warning_type: type: string nullable: true best_selling_item: required: - content_id - owner_id - title type: object properties: content_id: type: string content_type: type: string example: track enum: - track - album title: type: string owner_id: type: string comment_mention: required: - handle - user_id type: object properties: user_id: type: integer handle: type: string user_feed_item: oneOf: - $ref: "#/components/schemas/track_feed_item" - $ref: "#/components/schemas/playlist_feed_item" discriminator: propertyName: type mapping: track: "#/components/schemas/track_feed_item" playlist: "#/components/schemas/playlist_feed_item" cover_art: type: object properties: 150x150: type: string 480x480: type: string 1000x1000: type: string mirrors: type: array items: type: string track_segment: required: - duration - multihash type: object properties: duration: type: number multihash: type: string transaction_details: required: - balance - change - metadata - method - signature - transaction_date - transaction_type - user_bank type: object properties: transaction_date: type: string transaction_type: type: string method: type: string signature: type: string user_bank: type: string change: type: string balance: type: string metadata: type: object properties: {} discriminator: propertyName: transaction_type playlist_updates: type: object properties: playlist_updates: type: array items: $ref: "#/components/schemas/playlist_update" playlist_library: type: object properties: contents: type: array items: type: object properties: {} profile_picture: type: object properties: 150x150: type: string 480x480: type: string 1000x1000: type: string mirrors: type: array items: type: string remix_parent: type: object properties: tracks: type: array items: $ref: "#/components/schemas/remix" extended_access_gate: oneOf: - $ref: "#/components/schemas/tip_gate" - $ref: "#/components/schemas/follow_gate" - $ref: "#/components/schemas/extended_purchase_gate" - $ref: "#/components/schemas/token_gate" coin_insights: type: object description: "Additional token information from Birdeye's defi token overview API. Includes price, volume, supply, market cap, and other on-chain and market data. " required: - mint - marketCap - fdv - liquidity - lastTradeUnixTime - lastTradeHumanTime - price - history24hPrice - priceChange24hPercent - uniqueWallet24h - uniqueWalletHistory24h - uniqueWallet24hChangePercent - totalSupply - circulatingSupply - holder - trade24h - tradeHistory24h - trade24hChangePercent - sell24h - sellHistory24h - sell24hChangePercent - buy24h - buyHistory24h - buy24hChangePercent - v24h - v24hUSD - vHistory24h - totalVolume - totalVolumeUSD - volumeBuy - volumeBuyUSD - volumeSell - volumeSellUSD - totalTrade - buy - sell - dynamicBondingCurve properties: address: type: string description: The SPL token mint address example: DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 decimals: type: integer description: Number of decimals for the token example: 5 symbol: type: string description: The token symbol example: BONK name: type: string description: The token name example: Bonk marketCap: type: number description: Market capitalization in USD example: 2625779824.994664 fdv: type: number description: Fully diluted valuation in USD example: 2625779824.994664 extensions: type: object description: Token metadata and links properties: coingeckoId: type: string description: CoinGecko ID example: bonk description: type: string description: Token description example: The Official Bonk Inu token twitter: type: string description: Twitter URL example: https://twitter.com/bonk_inu website: type: string description: Website URL example: https://www.bonkcoin.com/ discord: type: string description: Discord invite URL example: https://discord.gg/ubqvDDFUhf liquidity: type: number description: Current liquidity in USD example: 18977326.389274083 lastTradeUnixTime: type: integer description: Unix timestamp of the last trade example: 1752620592 lastTradeHumanTime: type: string description: ISO8601 time of the last trade example: "2025-07-15T23:03:12" price: type: number description: Current price in USD example: 2.9571022098881748e-05 history24hPrice: type: number description: Price 24 hours ago in USD example: 2.7195701160436288e-05 priceChange24hPercent: type: number description: 24h price change in percent example: 8.73417796596848 uniqueWallet24h: type: integer description: Unique wallets traded in last 24h example: 20242 uniqueWalletHistory24h: type: integer description: Unique wallets traded in previous 24h example: 21155 uniqueWallet24hChangePercent: type: number description: 24h change in unique wallets (percent) example: -4.315764594658473 totalSupply: type: number description: Total supply of the token example: 88795707372386.03 circulatingSupply: type: number description: Circulating supply of the token example: 88795707372386.03 holder: type: integer description: Number of holders example: 957291 trade24h: type: integer description: Number of trades in last 24h example: 449987 tradeHistory24h: type: integer description: Number of trades in previous 24h example: 390400 trade24hChangePercent: type: number description: 24h change in trade count (percent) example: 15.263063524590164 sell24h: type: integer description: Number of sell trades in last 24h example: 223845 sellHistory24h: type: integer description: Number of sell trades in previous 24h example: 191979 sell24hChangePercent: type: number description: 24h change in sell trades (percent) example: 16.598690481771445 buy24h: type: integer description: Number of buy trades in last 24h example: 226142 buyHistory24h: type: integer description: Number of buy trades in previous 24h example: 198421 buy24hChangePercent: type: number description: 24h change in buy trades (percent) example: 13.970799461750522 v24h: type: number description: 24h trading volume (token units) example: 2456470915352.043 v24hUSD: type: number description: 24h trading volume in USD example: 69961943.60091284 vHistory24h: type: number description: Previous 24h trading volume (token units) example: 1849367819551.6223 vHistory24hUSD: type: number description: Previous 24h trading volume in USD example: 49529721.91224754 v24hChangePercent: type: number description: 24h change in volume (percent) example: 32.82760137718911 vBuy24h: type: number description: 24h buy volume (token units) example: 1267704208631.2197 vBuy24hUSD: type: number description: 24h buy volume in USD example: 35985775.23314727 vBuyHistory24h: type: number description: Previous 24h buy volume (token units) example: 926415751610.5529 vBuyHistory24hUSD: type: number description: Previous 24h buy volume in USD example: 24916558.31987226 vBuy24hChangePercent: type: number description: 24h change in buy volume (percent) example: 36.83966474310746 vSell24h: type: number description: 24h sell volume (token units) example: 1188766706720.8232 vSell24hUSD: type: number description: 24h sell volume in USD example: 33976168.367765576 vSellHistory24h: type: number description: Previous 24h sell volume (token units) example: 922952067941.0695 vSellHistory24hUSD: type: number description: Previous 24h sell volume in USD example: 24613163.592375275 vSell24hChangePercent: type: number description: 24h change in sell volume (percent) example: 28.800481413161105 numberMarkets: type: integer description: Number of markets the token is traded on example: 317 totalVolume: type: number description: Total volume of coin traded (all time) example: 158766463.26959822 totalVolumeUSD: type: number description: Total volume of coin traded in USD (all time) example: 20188521260.405678 volumeBuy: type: number description: Total volume bought (all time) example: 78227859.16098201 volumeBuyUSD: type: number description: Total volume bought in USD (all time) example: 20188521260.405678 volumeSell: type: number description: Total volume sold (all time) example: 80538604.1086162 volumeSellUSD: type: number description: Total volume sold in USD (all time) example: 20188521260.405678 totalTrade: type: integer description: Total number of trades (all time) example: 258522892 buy: type: integer description: Total number of buys (all time) example: 87829497 sell: type: integer description: Total number of sells (all time) example: 170693395 dynamicBondingCurve: type: object description: Information about the dynamic bonding curve if one exists for the Coin required: - address - price - priceUSD - curveProgress - creatorQuoteFee - totalTradingQuoteFee - creatorWalletAddress properties: address: type: string description: Address of the bonding curve pool example: 2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN price: type: number description: Current price in the pool's quote token (e.g., AUDIO) example: 0.0028402095736478586 priceUSD: type: number description: Current price in USD example: 2.9571022098881748e-05 curveProgress: type: number description: Progress along the bonding curve (0.0 - 1.0) example: 0.75 isMigrated: type: boolean description: Whether the bonding curve has been migrated example: false creatorQuoteFee: type: number description: Creator quote fee for the bonding curve example: 0.05 totalTradingQuoteFee: type: number description: Total trading quote fee accumulated example: 0.001 creatorWalletAddress: type: string description: Address of the pool creator's wallet example: 2AAsAwNPTNBk5N466xyPiwqdgbc5WLbDTdnn9gVuDKaN usdc_gate: required: - price - splits type: object properties: price: type: integer description: The price in USDC needed to unlock splits: type: array items: $ref: "#/components/schemas/payment_split" payment_split: required: - user_id - percentage type: object properties: user_id: type: integer example: 1234 percentage: type: number search_track: required: - access - artwork - blocknumber - comment_count - cover_art_sizes - created_at - download - duration - favorite_count - field_visibility - genre - has_current_user_reposted - has_current_user_saved - id - is_available - is_delete - is_download_gated - is_downloadable - is_original_available - is_owned_by_user - is_scheduled_release - is_stream_gated - is_unlisted - permalink - play_count - preview - remix_of - repost_count - route_id - stream - title - track_segments - updated_at - user - user_id type: object properties: artwork: $ref: "#/components/schemas/track_artwork" description: type: string genre: type: string id: type: string track_cid: type: string preview_cid: type: string orig_file_cid: type: string orig_filename: type: string is_original_available: type: boolean mood: type: string release_date: type: string format: date remix_of: $ref: "#/components/schemas/remix_parent" repost_count: type: integer favorite_count: type: integer comment_count: type: integer tags: type: string title: type: string user: $ref: "#/components/schemas/user" duration: type: integer is_downloadable: type: boolean play_count: type: integer permalink: type: string is_streamable: type: boolean ddex_app: type: string playlists_containing_track: type: array items: type: integer pinned_comment_id: type: integer album_backlink: $ref: "#/components/schemas/album_backlink" access: type: object description: Describes what access the given user has allOf: - $ref: "#/components/schemas/access" blocknumber: type: integer description: The blocknumber this track was last updated create_date: type: string cover_art_sizes: type: string cover_art_cids: $ref: "#/components/schemas/cover_art" created_at: type: string credits_splits: type: string isrc: type: string license: type: string iswc: type: string field_visibility: $ref: "#/components/schemas/field_visibility" followee_reposts: type: array items: $ref: "#/components/schemas/repost" has_current_user_reposted: type: boolean is_scheduled_release: type: boolean is_unlisted: type: boolean has_current_user_saved: type: boolean followee_favorites: type: array items: $ref: "#/components/schemas/favorite" route_id: type: string stem_of: $ref: "#/components/schemas/stem_parent" track_segments: type: array items: $ref: "#/components/schemas/track_segment" updated_at: type: string user_id: type: string is_delete: type: boolean cover_art: type: string is_available: type: boolean ai_attribution_user_id: type: integer allowed_api_keys: type: array items: type: string audio_upload_id: type: string preview_start_seconds: type: number bpm: type: number is_custom_bpm: type: boolean musical_key: type: string is_custom_musical_key: type: boolean audio_analysis_error_count: type: integer comments_disabled: type: boolean ddex_release_ids: type: object properties: {} artists: type: array items: type: object properties: {} resource_contributors: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" indirect_resource_contributors: type: array nullable: true items: $ref: "#/components/schemas/ddex_resource_contributor" rights_controller: nullable: true $ref: "#/components/schemas/ddex_rights_controller" copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" producer_copyright_line: nullable: true allOf: - $ref: "#/components/schemas/ddex_copyright" parental_warning_type: type: string nullable: true is_stream_gated: type: boolean description: Whether or not the owner has restricted streaming behind an access gate stream_conditions: type: object description: How to unlock stream access to the track allOf: - $ref: "#/components/schemas/access_gate" is_download_gated: type: boolean description: Whether or not the owner has restricted downloading behind an access gate download_conditions: type: object description: How to unlock the track download allOf: - $ref: "#/components/schemas/access_gate" cover_original_song_title: type: string cover_original_artist: type: string is_owned_by_user: type: boolean description: Indicates whether the track is owned by the user for MRI sake stream: $ref: "#/components/schemas/url_with_mirrors" download: $ref: "#/components/schemas/url_with_mirrors" preview: $ref: "#/components/schemas/url_with_mirrors" managed_user: required: - grant - user type: object properties: user: $ref: "#/components/schemas/user" grant: $ref: "#/components/schemas/grant" wild_month_model: type: object additionalProperties: $ref: "#/components/schemas/monthly_aggregate_play" url_with_mirrors: required: - mirrors type: object properties: url: type: string mirrors: type: array items: type: string extended_token_gate: required: - token_mint - token_amount type: object properties: token_mint: type: string description: The mint of the token needed to unlock token_amount: type: integer description: The amount of the token needed to unlock nft_collection: required: - address - chain - name type: object properties: chain: type: string example: eth enum: - eth - sol standard: type: string example: ERC721 enum: - ERC721 - ERC1155 address: type: string name: type: string imageUrl: type: string externalLink: type: string supporting: required: - amount - rank - receiver type: object properties: rank: type: integer amount: type: string receiver: $ref: "#/components/schemas/user" track_element_write: required: - parent_track_id type: object properties: parent_track_id: type: string example: x5pJ3Az extended_purchase_gate: required: - usdc_purchase type: object properties: usdc_purchase: type: object description: Must pay the total price and split to the given addresses to unlock allOf: - $ref: "#/components/schemas/extended_usdc_gate" comment_notification_setting: required: - is_muted type: object properties: is_muted: type: boolean extended_usdc_gate: required: - price - splits type: object properties: price: type: integer splits: type: array items: $ref: "#/components/schemas/extended_payment_split" track_artwork: type: object properties: 150x150: type: string 480x480: type: string 1000x1000: type: string mirrors: type: array items: type: string reply_comment: required: - created_at - entity_id - entity_type - id - is_edited - message - react_count - user_id type: object properties: id: type: string entity_id: type: string entity_type: $ref: "#/components/schemas/comment_entity_type" user_id: type: string message: type: string mentions: type: array items: $ref: "#/components/schemas/comment_mention" track_timestamp_s: type: integer react_count: type: integer is_edited: type: boolean is_current_user_reacted: type: boolean is_artist_reacted: type: boolean created_at: type: string updated_at: type: string parent_comment_id: type: integer user_playlist_library: type: object description: User's playlist library with support for folders and playlists required: - contents properties: contents: type: array description: Array of folders and playlist identifiers items: oneOf: - $ref: "#/components/schemas/playlist_library_folder" - $ref: "#/components/schemas/playlist_library_playlist_identifier" - $ref: "#/components/schemas/playlist_library_explore_playlist_identifier" notifications: required: - unread_count type: object properties: notifications: type: array items: $ref: "#/components/schemas/notification" unread_count: type: integer wild_card_split: type: object additionalProperties: type: integer supporter: required: - amount - rank - sender type: object properties: rank: type: integer amount: type: string sender: $ref: "#/components/schemas/user" decoded_user_token: required: - apiKey - email - handle - iat - name - sub - userId - verified type: object properties: apiKey: type: string userId: type: string email: type: string name: type: string handle: type: string verified: type: boolean profile_picture: $ref: "#/components/schemas/profile_picture" sub: type: string iat: type: string user_coin_account: type: object required: - account - owner - balance - balance_usd - is_in_app_wallet properties: account: type: string description: The token account address example: CTyFguG69kwYrzk24P3UuBvY1rR5atu9kf2S6XEwAU8X owner: type: string description: The owner wallet of the token account example: HzZ3EKACbH6XEHs59Rt1adVzUKv5cTDE9o9YWFaMhwpF balance: type: integer description: The balance of the coin in the user's account (in wei) example: 1000000000 balance_usd: type: number description: The balance of the coin in the user's account in USD example: 1.23 is_in_app_wallet: type: boolean description: Whether the account is in the user's in-app wallet example: true sales_json_content: type: object properties: sales: type: array items: $ref: "#/components/schemas/sale_json" tip: required: - amount - created_at - followee_supporters - receiver - sender - slot - tx_signature type: object properties: amount: type: string sender: $ref: "#/components/schemas/user" receiver: $ref: "#/components/schemas/user" created_at: type: string slot: type: integer followee_supporters: type: array items: $ref: "#/components/schemas/supporter_reference" tx_signature: type: string track_id: required: - id type: object properties: id: type: string user_coin: required: - mint - ticker - decimals - owner_id - balance - has_discord - balance_usd type: object properties: mint: type: string description: The coin mint address example: 9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM ticker: type: string description: The coin symbol example: $AUDIO decimals: type: integer description: The number of decimals for the coin example: 8 owner_id: type: string description: The ID of the user associated with the coin example: 7eP5n logo_uri: type: string nullable: true description: URL to the coin's logo image example: https://example.com/logo.png banner_image_url: type: string nullable: true description: URL to the coin's banner image example: https://example.com/banner.png has_discord: type: boolean description: Whether the coin has a Discord server example: true balance: type: integer description: The balance of the coin in the user's account (in wei) example: 1000000000 balance_usd: type: number description: The balance of the coin in the user's account in USD example: 1.23 track_feed_item: required: - item - type type: object properties: type: type: string item: $ref: "#/components/schemas/track" remix: required: - has_remix_author_reposted - has_remix_author_saved - parent_track_id - user type: object properties: parent_track_id: type: string user: $ref: "#/components/schemas/user" has_remix_author_reposted: type: boolean has_remix_author_saved: type: boolean account_collection: required: - id - is_album - name - permalink - user type: object properties: id: type: string is_album: type: boolean name: type: string permalink: type: string user: $ref: "#/components/schemas/account_collection_user" playlist_update: required: - playlist_id - updated_at type: object properties: playlist_id: type: string updated_at: type: integer last_seen_at: type: integer supporter_reference: required: - user_id type: object properties: user_id: type: string notification: oneOf: - $ref: "#/components/schemas/follow_notification" - $ref: "#/components/schemas/save_notification" - $ref: "#/components/schemas/repost_notification" - $ref: "#/components/schemas/repost_of_repost_notification" - $ref: "#/components/schemas/save_of_repost_notification" - $ref: "#/components/schemas/tastemaker_notification" - $ref: "#/components/schemas/remix_notification" - $ref: "#/components/schemas/cosign_notification" - $ref: "#/components/schemas/create_notification" - $ref: "#/components/schemas/send_tip_notification" - $ref: "#/components/schemas/receive_tip_notification" - $ref: "#/components/schemas/supporter_dethroned_notification" - $ref: "#/components/schemas/supporter_rank_up_notification" - $ref: "#/components/schemas/supporter_rank_up_notification" - $ref: "#/components/schemas/challenge_reward_notification" - $ref: "#/components/schemas/claimable_reward_notification" - $ref: "#/components/schemas/reaction_notification" - $ref: "#/components/schemas/milestone_notification" - $ref: "#/components/schemas/tier_change_notification" - $ref: "#/components/schemas/track_added_to_playlist_notification" - $ref: "#/components/schemas/track_added_to_purchased_album_notification" - $ref: "#/components/schemas/usdc_purchase_seller_notification" - $ref: "#/components/schemas/usdc_purchase_buyer_notification" - $ref: "#/components/schemas/request_manager_notification" - $ref: "#/components/schemas/approve_manager_request_notification" - $ref: "#/components/schemas/trending_notification" - $ref: "#/components/schemas/trending_playlist_notification" - $ref: "#/components/schemas/trending_underground_notification" - $ref: "#/components/schemas/announcement_notification" - $ref: "#/components/schemas/comment_notification" - $ref: "#/components/schemas/comment_thread_notification" - $ref: "#/components/schemas/comment_mention_notification" - $ref: "#/components/schemas/comment_reaction_notification" - $ref: "#/components/schemas/listen_streak_reminder_notification" - $ref: "#/components/schemas/fan_remix_contest_started_notification" - $ref: "#/components/schemas/fan_remix_contest_ended_notification" - $ref: "#/components/schemas/fan_remix_contest_ending_soon_notification" - $ref: "#/components/schemas/artist_remix_contest_ended_notification" - $ref: "#/components/schemas/artist_remix_contest_ending_soon_notification" - $ref: "#/components/schemas/artist_remix_contest_submissions_notification" - $ref: "#/components/schemas/fan_remix_contest_winners_selected_notification" discriminator: propertyName: type mapping: follow: "#/components/schemas/follow_notification" save: "#/components/schemas/save_notification" repost: "#/components/schemas/repost_notification" repost_of_repost: "#/components/schemas/repost_of_repost_notification" save_of_repost: "#/components/schemas/save_of_repost_notification" tastemaker: "#/components/schemas/tastemaker_notification" remix: "#/components/schemas/remix_notification" cosign: "#/components/schemas/cosign_notification" create: "#/components/schemas/create_notification" tip_send: "#/components/schemas/send_tip_notification" tip_receive: "#/components/schemas/receive_tip_notification" supporter_dethroned: "#/components/schemas/supporter_dethroned_notification" supporter_rank_up: "#/components/schemas/supporter_rank_up_notification" supporting_rank_up: "#/components/schemas/supporter_rank_up_notification" challenge_reward: "#/components/schemas/challenge_reward_notification" claimable_reward: "#/components/schemas/claimable_reward_notification" reaction: "#/components/schemas/reaction_notification" milestone: "#/components/schemas/milestone_notification" tier_change: "#/components/schemas/tier_change_notification" track_added_to_playlist: "#/components/schemas/track_added_to_playlist_notification" track_added_to_purchased_album: "#/components/schemas/track_added_to_purchased_album_notification" usdc_purchase_seller: "#/components/schemas/usdc_purchase_seller_notification" usdc_purchase_buyer: "#/components/schemas/usdc_purchase_buyer_notification" request_manager: "#/components/schemas/request_manager_notification" approve_manager_request: "#/components/schemas/approve_manager_request_notification" trending: "#/components/schemas/trending_notification" trending_playlist: "#/components/schemas/trending_playlist_notification" trending_underground: "#/components/schemas/trending_underground_notification" announcement: "#/components/schemas/announcement_notification" comment: "#/components/schemas/comment_notification" comment_thread: "#/components/schemas/comment_thread_notification" comment_mention: "#/components/schemas/comment_mention_notification" comment_reaction: "#/components/schemas/comment_reaction_notification" listen_streak_reminder: "#/components/schemas/listen_streak_reminder_notification" fan_remix_contest_started: "#/components/schemas/fan_remix_contest_started_notification" fan_remix_contest_ended: "#/components/schemas/fan_remix_contest_ended_notification" fan_remix_contest_ending_soon: "#/components/schemas/fan_remix_contest_ending_soon_notification" artist_remix_contest_ended: "#/components/schemas/artist_remix_contest_ended_notification" artist_remix_contest_ending_soon: "#/components/schemas/artist_remix_contest_ending_soon_notification" artist_remix_contest_submissions: "#/components/schemas/artist_remix_contest_submissions_notification" fan_remix_contest_winners_selected: "#/components/schemas/fan_remix_contest_winners_selected_notification" save_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/save_notification_action" sale_json: type: object properties: title: type: string description: Title of the content (track/album/playlist) link: type: string description: URL link to the content purchased_by: type: string description: Name of the buyer buyer_user_id: type: integer description: User ID of the buyer date: type: string description: ISO format date string of when the sale occurred sale_price: type: number description: Base sale price in USDC network_fee: type: number description: Network fee deducted from sale in USDC pay_extra: type: number description: Extra amount paid by buyer in USDC total: type: number description: Total amount received by seller in USDC country: type: string description: Country code where purchase was made encrypted_email: type: string description: Encrypted email of buyer if available encrypted_key: type: string description: Encrypted key for decrypting the buyer's email is_initial: type: boolean description: Whether this is an initial encryption from the backfill pubkey_base64: type: string description: Base64 encoded public key of the buyer playlist_feed_item: required: - item - type type: object properties: type: type: string item: $ref: "#/components/schemas/playlist" playlist_library_playlist_identifier: type: object description: Reference to a playlist required: - type - playlist_id properties: type: type: string enum: - playlist playlist_id: type: integer description: Playlist ID example: 1234 extended_payment_split: required: - amount - payout_wallet - percentage type: object properties: user_id: type: integer example: 1234 percentage: type: number eth_wallet: type: string payout_wallet: type: string amount: type: integer fan_remix_contest_ended_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/fan_remix_contest_ended_notification_action" fan_remix_contest_winners_selected_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/fan_remix_contest_winners_selected_notification_action" tier_change_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/tier_change_notification_action" cosign_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/cosign_notification_action" comment_reaction_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/comment_reaction_notification_action" approve_manager_request_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/approve_manager_request_notification_action" fan_remix_contest_ended_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/fan_remix_contest_ended_notification_action_data" monthly_aggregate_play: type: object properties: totalListens: type: integer trackIds: type: array items: type: integer listenCounts: type: array items: $ref: "#/components/schemas/listen_count" save_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/save_notification_action_data" save_of_repost_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/save_of_repost_notification_action" approve_manager_request_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/approve_manager_request_notification_action_data" comment_mention_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/comment_mention_notification_action" fan_remix_contest_ended_notification_action_data: required: - entity_id - entity_user_id type: object properties: entity_user_id: type: string entity_id: type: string playlist_library_folder: type: object description: Folder containing nested playlists and folders required: - id - type - name - contents properties: id: type: string description: Unique folder identifier type: type: string enum: - folder name: type: string description: Folder name contents: type: array description: Nested folders and playlist identifiers items: oneOf: - $ref: "#/components/schemas/playlist_library_folder" - $ref: "#/components/schemas/playlist_library_playlist_identifier" - $ref: "#/components/schemas/playlist_library_explore_playlist_identifier" playlist_library_explore_playlist_identifier: type: object description: Reference to an explore playlist required: - type - playlist_id properties: type: type: string enum: - explore_playlist playlist_id: type: string description: Explore playlist identifier send_tip_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/send_tip_notification_action" comment_reaction_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/comment_reaction_notification_action_data" comment_thread_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/comment_thread_notification_action" reaction_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/reaction_notification_action" account_collection_user: required: - handle - id type: object properties: id: type: string handle: type: string is_deactivated: type: boolean remix_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/remix_notification_action" cosign_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/cosign_notification_action_data" announcement_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/announcement_notification_action" listen_streak_reminder_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/listen_streak_reminder_notification_action" comment_thread_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/comment_thread_notification_action_data" fan_remix_contest_winners_selected_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/fan_remix_contest_winners_selected_notification_action_data" send_tip_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/send_tip_notification_action_data" supporter_dethroned_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/supporter_dethroned_notification_action" reaction_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/reaction_notification_action_data" receive_tip_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/receive_tip_notification_action" tastemaker_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/tastemaker_notification_action" track_added_to_purchased_album_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/track_added_to_purchased_album_notification_action" track_added_to_playlist_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/track_added_to_playlist_notification_action" receive_tip_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/receive_tip_notification_action_data" trending_underground_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/trending_underground_notification_action" listen_count: type: object properties: trackId: type: integer date: type: string listens: type: integer cosign_notification_action_data: required: - parent_track_id - track_id - track_owner_id type: object properties: parent_track_id: type: string track_id: type: string track_owner_id: type: string receive_tip_notification_action_data: required: - amount - reaction_value - receiver_user_id - sender_user_id - tip_tx_signature type: object properties: amount: type: string sender_user_id: type: string receiver_user_id: type: string tip_tx_signature: type: string reaction_value: type: integer challenge_reward_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/challenge_reward_notification_action" usdc_purchase_seller_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/usdc_purchase_seller_notification_action" supporter_rank_up_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/supporter_rank_up_notification_action" fan_remix_contest_started_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/fan_remix_contest_started_notification_action" track_added_to_purchased_album_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/track_added_to_purchased_album_notification_action_data" remix_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/remix_notification_action_data" request_manager_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/request_manager_notification_action" comment_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/comment_notification_action" claimable_reward_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/claimable_reward_notification_action" create_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/create_notification_action" milestone_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/milestone_notification_action" fan_remix_contest_ending_soon_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/fan_remix_contest_ending_soon_notification_action" trending_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/trending_notification_action" tastemaker_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/tastemaker_notification_action_data" comment_mention_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/comment_mention_notification_action_data" claimable_reward_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/claimable_reward_notification_action_data" announcement_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/announcement_notification_action_data" usdc_purchase_seller_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/usdc_purchase_seller_notification_action_data" fan_remix_contest_winners_selected_notification_action_data: required: - entity_id - entity_user_id type: object properties: entity_user_id: type: string entity_id: type: string trending_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/trending_notification_action_data" request_manager_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/request_manager_notification_action_data" repost_of_repost_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/repost_of_repost_notification_action" trending_playlist_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/trending_playlist_notification_action" follow_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/follow_notification_action" comment_thread_notification_action_data: required: - comment_user_id - entity_id - entity_user_id - type type: object properties: type: type: string example: Track enum: - Track - Playlist - Album entity_id: type: string entity_user_id: type: string comment_user_id: type: string comment_id: type: string create_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/create_notification_action_data" trending_underground_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/trending_underground_notification_action_data" repost_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/repost_notification_action" artist_remix_contest_submissions_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/artist_remix_contest_submissions_notification_action" artist_remix_contest_ending_soon_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/artist_remix_contest_ending_soon_notification_action" usdc_purchase_buyer_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/usdc_purchase_buyer_notification_action" artist_remix_contest_ended_notification: required: - actions - group_id - is_seen - type type: object properties: type: type: string group_id: type: string is_seen: type: boolean seen_at: type: integer actions: type: array items: $ref: "#/components/schemas/artist_remix_contest_ended_notification_action" approve_manager_request_notification_action_data: required: - grantee_address - grantee_user_id - user_id type: object properties: user_id: type: string grantee_user_id: type: string grantee_address: type: string save_of_repost_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/save_of_repost_notification_action_data" supporter_dethroned_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/supporter_dethroned_notification_action_data" claimable_reward_notification_action_data: required: - amount - challenge_id - specifier type: object properties: amount: type: string specifier: type: string challenge_id: type: string save_notification_action_data: required: - save_item_id - type - user_id type: object properties: type: type: string example: track enum: - track - playlist - album user_id: type: string save_item_id: type: string tier_change_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/tier_change_notification_action_data" trending_underground_notification_action_data: required: - genre - rank - time_range - track_id type: object properties: rank: type: integer genre: type: string track_id: type: string time_range: type: string example: week enum: - week - month - year challenge_reward_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/challenge_reward_notification_action_data" artist_remix_contest_submissions_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/artist_remix_contest_submissions_notification_action_data" create_notification_action_data: oneOf: - $ref: "#/components/schemas/create_playlist_notification_action_data" - $ref: "#/components/schemas/create_track_notification_action_data" tastemaker_notification_action_data: required: - action - tastemaker_item_id - tastemaker_item_owner_id - tastemaker_item_type - tastemaker_user_id type: object properties: tastemaker_item_owner_id: type: string tastemaker_item_id: type: string action: type: string tastemaker_item_type: type: string tastemaker_user_id: type: string tier_change_notification_action_data: required: - current_value - new_tier - new_tier_value type: object properties: new_tier: type: string current_value: type: string new_tier_value: type: integer remix_notification_action_data: required: - parent_track_id - track_id type: object properties: parent_track_id: type: string track_id: type: string artist_remix_contest_ended_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/artist_remix_contest_ended_notification_action_data" fan_remix_contest_ending_soon_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/fan_remix_contest_ending_soon_notification_action_data" save_of_repost_notification_action_data: required: - save_of_repost_item_id - type - user_id type: object properties: type: type: string example: track enum: - track - playlist - album user_id: type: string save_of_repost_item_id: type: string reaction_notification_action_data: required: - reacted_to - reaction_type - reaction_value - receiver_user_id - sender_user_id - sender_wallet - tip_amount type: object properties: reacted_to: type: string reaction_type: type: string reaction_value: type: integer receiver_user_id: type: string sender_user_id: type: string sender_wallet: type: string tip_amount: type: string listen_streak_reminder_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/listen_streak_reminder_notification_action_data" comment_reaction_notification_action_data: required: - entity_id - entity_user_id - reacter_user_id - type type: object properties: type: type: string example: Track enum: - Track - Playlist - Album entity_id: type: string entity_user_id: type: string reacter_user_id: type: string comment_id: type: string supporter_dethroned_notification_action_data: required: - dethroned_user_id - receiver_user_id - sender_user_id type: object properties: dethroned_user_id: type: string sender_user_id: type: string receiver_user_id: type: string repost_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/repost_notification_action_data" challenge_reward_notification_action_data: required: - amount - challenge_id - specifier type: object properties: amount: type: string specifier: type: string challenge_id: type: string listen_streak: type: integer comment_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/comment_notification_action_data" repost_notification_action_data: required: - repost_item_id - type - user_id type: object properties: type: type: string example: track enum: - track - playlist - album user_id: type: string repost_item_id: type: string repost_of_repost_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/repost_of_repost_notification_action_data" trending_playlist_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/trending_playlist_notification_action_data" request_manager_notification_action_data: required: - grantee_address - grantee_user_id - user_id type: object properties: user_id: type: string grantee_user_id: type: string grantee_address: type: string follow_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/follow_notification_action_data" artist_remix_contest_ending_soon_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/artist_remix_contest_ending_soon_notification_action_data" comment_mention_notification_action_data: required: - comment_user_id - entity_id - entity_user_id - type type: object properties: type: type: string example: Track enum: - Track - Playlist - Album entity_id: type: string entity_user_id: type: string comment_user_id: type: string comment_id: type: string track_added_to_purchased_album_notification_action_data: required: - playlist_id - playlist_owner_id - track_id type: object properties: track_id: type: string playlist_id: type: string playlist_owner_id: type: string comment_notification_action_data: required: - comment_user_id - entity_id - type type: object properties: type: type: string example: Track enum: - Track - Playlist - Album entity_id: type: string comment_user_id: type: string comment_id: type: string trending_notification_action_data: required: - genre - rank - time_range - track_id type: object properties: rank: type: integer genre: type: string track_id: type: string time_range: type: string example: week enum: - week - month - year milestone_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/milestone_notification_action_data" follow_notification_action_data: required: - followee_user_id - follower_user_id type: object properties: follower_user_id: type: string followee_user_id: type: string announcement_notification_action_data: required: - long_description - push_body - short_description - title - route type: object properties: title: type: string push_body: type: string short_description: type: string long_description: type: string route: type: string supporter_rank_up_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/supporter_rank_up_notification_action_data" repost_of_repost_notification_action_data: required: - repost_of_repost_item_id - type - user_id type: object properties: type: type: string example: track enum: - track - playlist - album user_id: type: string repost_of_repost_item_id: type: string send_tip_notification_action_data: required: - amount - receiver_user_id - sender_user_id - tip_tx_signature type: object properties: amount: type: string sender_user_id: type: string receiver_user_id: type: string tip_tx_signature: type: string trending_playlist_notification_action_data: required: - genre - playlist_id - rank - time_range type: object properties: rank: type: integer genre: type: string playlist_id: type: string time_range: type: string example: week enum: - week - month - year usdc_purchase_buyer_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/usdc_purchase_buyer_notification_action_data" fan_remix_contest_ending_soon_notification_action_data: required: - entity_id - entity_user_id type: object properties: entity_user_id: type: string entity_id: type: string usdc_purchase_seller_notification_action_data: required: - amount - buyer_user_id - content_id - content_type - extra_amount - seller_user_id type: object properties: content_type: type: string buyer_user_id: type: string seller_user_id: type: string amount: type: string extra_amount: type: string content_id: type: string create_track_notification_action_data: required: - track_id type: object properties: track_id: type: string create_playlist_notification_action_data: required: - is_album - playlist_id type: object properties: is_album: type: boolean playlist_id: type: string track_added_to_playlist_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/track_added_to_playlist_notification_action_data" fan_remix_contest_started_notification_action: required: - data - specifier - timestamp - type type: object properties: specifier: type: string type: type: string timestamp: type: integer data: $ref: "#/components/schemas/fan_remix_contest_started_notification_action_data" listen_streak_reminder_notification_action_data: required: - streak type: object properties: streak: type: integer artist_remix_contest_submissions_notification_action_data: required: - entity_id - event_id - milestone type: object properties: event_id: type: string milestone: type: integer entity_id: type: string artist_remix_contest_ended_notification_action_data: required: - entity_id type: object properties: entity_id: type: string artist_remix_contest_ending_soon_notification_action_data: required: - entity_id - entity_user_id type: object properties: entity_user_id: type: string entity_id: type: string fan_remix_contest_started_notification_action_data: required: - entity_id - entity_user_id type: object properties: entity_user_id: type: string entity_id: type: string supporter_rank_up_notification_action_data: required: - rank - receiver_user_id - sender_user_id type: object properties: rank: type: integer sender_user_id: type: string receiver_user_id: type: string track_added_to_playlist_notification_action_data: required: - playlist_id - playlist_owner_id - track_id type: object properties: track_id: type: string playlist_id: type: string playlist_owner_id: type: string milestone_notification_action_data: oneOf: - $ref: "#/components/schemas/user_milestone_notification_action_data" - $ref: "#/components/schemas/track_milestone_notification_action_data" - $ref: "#/components/schemas/playlist_milestone_notification_action_data" user_milestone_notification_action_data: required: - threshold - type - user_id type: object properties: type: type: string threshold: type: integer user_id: type: string playlist_milestone_notification_action_data: required: - is_album - playlist_id - threshold - type type: object properties: type: type: string threshold: type: integer playlist_id: type: string is_album: type: boolean track_milestone_notification_action_data: required: - threshold - track_id - type type: object properties: type: type: string threshold: type: integer track_id: type: string usdc_purchase_buyer_notification_action_data: required: - amount - buyer_user_id - content_id - content_type - extra_amount - seller_user_id type: object properties: content_type: type: string buyer_user_id: type: string seller_user_id: type: string amount: type: string extra_amount: type: string content_id: type: string user_response_single: type: object properties: data: $ref: "#/components/schemas/user" responses: ParseError: description: When a mask can't be parsed content: {} MaskError: description: When any error occurs on mask content: {} securitySchemes: OAuth2: type: oauth2 description: "OAuth 2.0 Authorization Code flow with PKCE for third-party applications. Allows apps to authenticate users and obtain access tokens scoped to read or read+write permissions on behalf of the user. **Scopes:** - `read` — Read-only access to the user's public and private data. - `write` — Read and write access, allowing mutations on behalf of the user. **PKCE Required:** All authorization code requests must include `code_challenge` and `code_challenge_method=S256` parameters. " flows: authorizationCode: authorizationUrl: /v1/oauth/authorize tokenUrl: /v1/oauth/token scopes: read: Read-only access to user data write: Read and write access on behalf of the user BasicAuth: type: http scheme: basic description: "HTTP Basic Authentication with Ethereum private key for write operations. **Authentication** Use HTTP Basic Authentication where the password field contains your Ethereum private key: ``` Authorization: Basic ``` The username can be any value. The password must be your Ethereum private key in hex format (with or without 0x prefix). Example: ``` Authorization: Basic dXNlcm5hbWU6MHgxMjM0NTY3ODkwYWJjZGVmLi4u ``` **How it works:** 1. The API decodes the Basic Auth credentials 2. Extracts the private key from the password field 3. Derives the Ethereum address from the private key 4. Uses this address for authorization checks **Authorization** The derived wallet address must be either: - The wallet of the user being acted upon (direct ownership) - A wallet with an approved, non-revoked grant for the user (manager mode) " BearerAuth: type: http scheme: bearer bearerFormat: JWT description: "The API bearer token or OAuth JWT token for the user. " x-original-swagger-version: "2.0"