Audiomack Data API
The Audiomack Data API provides programmatic access to Audiomack's music catalog and social graph: songs, albums, artists, playlists, charts by genre and timeframe (daily/weekly/monthly/yearly/total), full-text search and autosuggest, streaming URL issuance (short-lived, ~10 second TTL), favorites, reposts, follows, ad and view/play stats reporting, and the authenticated user's feed, uploads, playlists, favorites, and notifications. Requests are signed with OAuth 1.0a; access tokens are valid for one year. List endpoints support page-based pagination, the `fields` parameter for sparse fieldsets, and a configurable `limit`.
Audiomack Data API is published by Audiomack on the APIs.io network, described by a machine-readable OpenAPI specification.
Tagged areas include Music, Streaming, Catalog, Artists, and Playlists. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, code examples, and authentication docs.
Documentation
Specifications
Code Examples
openapi: 3.0.3
info:
title: Audiomack Data API
version: '1.0'
description: >-
The Audiomack Data API provides programmatic access to Audiomack's music
streaming catalog, artists, playlists, charts, search, and authenticated
user resources. All requests use HTTPS against https://api.audiomack.com/v1
and authenticated requests are signed with OAuth 1.0a. Response payloads
are JSON and most list endpoints support page-based pagination, the
`fields` parameter for sparse fieldsets, and a `limit` parameter.
contact:
name: Audiomack Business
url: https://creators.audiomack.com/contact-us
license:
name: Audiomack Terms of Service
url: https://audiomack.com/about/terms-of-service
servers:
- url: https://api.audiomack.com/v1
description: Production
security:
- oauth1: []
tags:
- name: Music
description: Songs, albums, streaming, favorites, reposts, and metrics.
- name: Artist
description: Artist profiles, uploads, favorites, followers, and pinned items.
- name: Playlist
description: Playlist creation, editing, favoriting, and discovery.
- name: Chart
description: Aggregate song, album, and playlist charts across timeframes and genres.
- name: Search
description: Free-text search and autosuggest across music, albums, and artists.
- name: Stats
description: Tokenised view and play event reporting.
- name: User
description: Authenticated user profile, feed, uploads, playlists, and notifications.
- name: OAuth
description: OAuth 1.0a request-token and access-token exchanges.
paths:
/request_token:
post:
tags: [OAuth]
summary: Obtain Request Token
description: Issue an unauthorised OAuth 1.0a request token. Supply an `oauth_callback` parameter. Request tokens are valid for one hour.
operationId: postRequestToken
responses:
'200':
description: Request token issued.
/access_token:
post:
tags: [OAuth]
summary: Exchange Access Token
description: Exchange an authorised OAuth request token for a long-lived access token. Access tokens expire one year after issuance.
operationId: postAccessToken
responses:
'200':
description: Access token issued.
/music/{id}:
get:
tags: [Music]
summary: Get Music By Id
description: Retrieve song or album metadata by Audiomack music ID.
operationId: getMusicById
parameters:
- $ref: '#/components/parameters/MusicId'
- $ref: '#/components/parameters/Key'
responses:
'200':
description: Music object.
/music/{type}/{artist}/{slug}:
get:
tags: [Music]
summary: Get Music By Slug
description: Retrieve a song or album by artist slug and music slug.
operationId: getMusicBySlug
parameters:
- in: path
name: type
required: true
schema:
type: string
enum: [song, album]
- $ref: '#/components/parameters/ArtistSlug'
- in: path
name: slug
required: true
schema:
type: string
- $ref: '#/components/parameters/Key'
responses:
'200':
description: Music object.
patch:
tags: [Music]
summary: Flag Music Unplayable
description: Report a song or album as unplayable.
operationId: patchMusicBySlug
parameters:
- in: path
name: type
required: true
schema:
type: string
enum: [song, album]
- $ref: '#/components/parameters/ArtistSlug'
- in: path
name: slug
required: true
schema:
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
status:
type: string
enum: [unplayable]
responses:
'200':
description: Status updated.
/music/preview/{id}:
get:
tags: [Music]
summary: Get Music Preview
description: Fetch the preview audio resource for a given music ID.
operationId: getMusicPreview
parameters:
- $ref: '#/components/parameters/MusicId'
responses:
'200':
description: Preview metadata.
/music/recent:
get:
tags: [Music]
summary: List Recent Music
description: List most recently uploaded music.
operationId: getRecentMusic
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Music collection.
/music/{genre}/recent:
get:
tags: [Music]
summary: List Recent Music By Genre
description: List most recently uploaded music for a specific genre (e.g. `hip-hop-rap`, `afrobeats`).
operationId: getRecentMusicByGenre
parameters:
- $ref: '#/components/parameters/Genre'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Music collection.
/music/trending:
get:
tags: [Music]
summary: List Trending Music
description: List trending music across all genres.
operationId: getTrendingMusic
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Music collection.
/music/{genre}/trending:
get:
tags: [Music]
summary: List Trending Music By Genre
description: List trending music for a specific genre.
operationId: getTrendingMusicByGenre
parameters:
- $ref: '#/components/parameters/Genre'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Music collection.
/music/{id}/play:
post:
tags: [Music]
summary: Get Music Stream Url
description: Request a streaming URL for a music resource. The returned URL is valid for approximately 10 seconds.
operationId: postMusicPlay
parameters:
- $ref: '#/components/parameters/MusicId'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
session:
type: string
album_id:
type: string
playlist_id:
type: string
hq:
type: boolean
key:
type: string
responses:
'200':
description: Stream URL response.
/music/{id}/ads:
post:
tags: [Music]
summary: Record Music Ad Event
description: Track an advertisement event for a music resource.
operationId: postMusicAd
parameters:
- $ref: '#/components/parameters/MusicId'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
status:
type: string
responses:
'200':
description: Ad event recorded.
/music/{id}/favorite:
put:
tags: [Music]
summary: Favorite Music
operationId: favoriteMusic
parameters:
- $ref: '#/components/parameters/MusicId'
responses:
'200':
description: Favorited.
delete:
tags: [Music]
summary: Unfavorite Music
operationId: unfavoriteMusic
parameters:
- $ref: '#/components/parameters/MusicId'
responses:
'200':
description: Unfavorited.
/music/{id}/repost:
put:
tags: [Music]
summary: Repost Music
operationId: repostMusic
parameters:
- $ref: '#/components/parameters/MusicId'
responses:
'200':
description: Reposted.
delete:
tags: [Music]
summary: Remove Music Repost
operationId: deleteMusicRepost
parameters:
- $ref: '#/components/parameters/MusicId'
responses:
'200':
description: Repost removed.
/music/{id}/metrics:
get:
tags: [Music]
summary: Get Music Metrics
description: Retrieve play and engagement metrics for a music resource.
operationId: getMusicMetrics
parameters:
- $ref: '#/components/parameters/MusicId'
responses:
'200':
description: Metrics response.
/artist/{slug}:
get:
tags: [Artist]
summary: Get Artist
description: Retrieve artist profile and aggregate statistics.
operationId: getArtist
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Artist object.
/artist/{slug}/uploads:
get:
tags: [Artist]
summary: List Artist Uploads
operationId: getArtistUploads
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Uploads collection.
/artist/{slug}/favorites:
get:
tags: [Artist]
summary: List Artist Favorites
operationId: getArtistFavorites
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- in: query
name: show
schema:
type: string
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Favorites collection.
/artist/{slug}/favorites/search:
get:
tags: [Artist]
summary: Search Artist Favorites
operationId: searchArtistFavorites
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- in: query
name: q
required: true
schema:
type: string
responses:
'200':
description: Favorites matching query.
/artist/{slug}/playlists:
get:
tags: [Artist]
summary: List Artist Playlists
operationId: getArtistPlaylists
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- in: query
name: genre
schema:
type: string
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Playlists collection.
/artist/{slug}/follow:
put:
tags: [Artist]
summary: Follow Artist
operationId: followArtist
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Followed.
delete:
tags: [Artist]
summary: Unfollow Artist
operationId: unfollowArtist
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Unfollowed.
/artist/{slug}/following:
get:
tags: [Artist]
summary: List Artist Following
operationId: getArtistFollowing
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Artists this artist follows.
/artist/{slug}/follows:
get:
tags: [Artist]
summary: List Artist Followers
operationId: getArtistFollowers
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Followers collection.
/artist/{slug}/feed:
get:
tags: [Artist]
summary: Get Artist Feed
operationId: getArtistFeed
parameters:
- $ref: '#/components/parameters/ArtistSlug'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Activity feed.
/artist/{id}/metrics:
get:
tags: [Artist]
summary: Get Artist Metrics
description: Retrieve artist-level metrics plus top 10 tracks metrics.
operationId: getArtistMetrics
parameters:
- in: path
name: id
required: true
schema:
type: string
responses:
'200':
description: Metrics response.
/artist/{slug}/pinned:
get:
tags: [Artist]
summary: Get Artist Pinned
operationId: getArtistPinned
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Pinned items.
post:
tags: [Artist]
summary: Add Artist Pinned
operationId: addArtistPinned
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Pinned items added.
put:
tags: [Artist]
summary: Update Artist Pinned
operationId: updateArtistPinned
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Pinned items updated.
delete:
tags: [Artist]
summary: Remove Artist Pinned
operationId: removeArtistPinned
parameters:
- $ref: '#/components/parameters/ArtistSlug'
responses:
'200':
description: Pinned items removed.
/chart/{kind}/{type}:
get:
tags: [Chart]
summary: Get Chart
description: Retrieve songs, albums, or playlists chart for a given timeframe (total, daily, weekly, monthly, yearly).
operationId: getChart
parameters:
- in: path
name: kind
required: true
schema:
type: string
enum: [songs, albums, playlists]
- in: path
name: type
required: true
schema:
type: string
enum: [total, daily, weekly, monthly, yearly]
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Chart entries.
/{genre}/chart/{kind}/{type}:
get:
tags: [Chart]
summary: Get Chart By Genre
description: Retrieve a chart restricted to a genre such as `hip-hop-rap` or `afrobeats`.
operationId: getChartByGenre
parameters:
- $ref: '#/components/parameters/Genre'
- in: path
name: kind
required: true
schema:
type: string
enum: [songs, albums, playlists]
- in: path
name: type
required: true
schema:
type: string
enum: [total, daily, weekly, monthly, yearly]
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Chart entries.
/playlist/{genre}/trending:
get:
tags: [Playlist]
summary: List Trending Playlists By Genre
operationId: getTrendingPlaylistsByGenre
parameters:
- $ref: '#/components/parameters/Genre'
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Playlist collection.
/playlist:
post:
tags: [Playlist]
summary: Create Playlist
operationId: createPlaylist
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
required: [title, genre]
properties:
title:
type: string
genre:
type: string
private:
type: boolean
music_id:
type: string
image:
type: string
format: binary
responses:
'201':
description: Playlist created.
/playlist/{id}:
get:
tags: [Playlist]
summary: Get Playlist
operationId: getPlaylist
parameters:
- $ref: '#/components/parameters/PlaylistId'
- $ref: '#/components/parameters/Fields'
responses:
'200':
description: Playlist object.
put:
tags: [Playlist]
summary: Update Playlist
operationId: updatePlaylist
parameters:
- $ref: '#/components/parameters/PlaylistId'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
title:
type: string
genre:
type: string
music_id:
type: string
private:
type: boolean
image:
type: string
format: binary
responses:
'200':
description: Playlist updated.
delete:
tags: [Playlist]
summary: Delete Playlist
operationId: deletePlaylist
parameters:
- $ref: '#/components/parameters/PlaylistId'
responses:
'204':
description: Playlist deleted.
/playlist/{id}/track:
post:
tags: [Playlist]
summary: Add Track To Playlist
operationId: addPlaylistTrack
parameters:
- $ref: '#/components/parameters/PlaylistId'
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
required: [music_id]
properties:
music_id:
type: string
responses:
'200':
description: Track added.
/playlist/{id}/{music_id}:
delete:
tags: [Playlist]
summary: Remove Track From Playlist
operationId: deletePlaylistTrack
parameters:
- $ref: '#/components/parameters/PlaylistId'
- in: path
name: music_id
required: true
schema:
type: string
responses:
'204':
description: Track removed.
/playlist/{artistSlug}/{playlistSlug}:
get:
tags: [Playlist]
summary: Get Playlist By Slug
operationId: getPlaylistBySlug
parameters:
- in: path
name: artistSlug
required: true
schema:
type: string
- in: path
name: playlistSlug
required: true
schema:
type: string
- $ref: '#/components/parameters/Fields'
responses:
'200':
description: Playlist object.
/playlist/{id}/favorite:
put:
tags: [Playlist]
summary: Favorite Playlist
operationId: favoritePlaylist
parameters:
- $ref: '#/components/parameters/PlaylistId'
responses:
'200':
description: Favorited.
delete:
tags: [Playlist]
summary: Unfavorite Playlist
operationId: unfavoritePlaylist
parameters:
- $ref: '#/components/parameters/PlaylistId'
responses:
'200':
description: Unfavorited.
/playlist/{id}/metrics:
get:
tags: [Playlist]
summary: Get Playlist Metrics
operationId: getPlaylistMetrics
parameters:
- $ref: '#/components/parameters/PlaylistId'
responses:
'200':
description: Metrics response.
/search:
get:
tags: [Search]
summary: Search Audiomack
description: Search across music, albums, and artists with optional genre and verified filters.
operationId: search
parameters:
- in: query
name: q
required: true
schema:
type: string
- in: query
name: show
schema:
type: string
- in: query
name: sort
schema:
type: string
- in: query
name: page
schema:
type: integer
- in: query
name: limit
schema:
type: integer
- in: query
name: genre
schema:
type: string
- in: query
name: verified
schema:
type: boolean
responses:
'200':
description: Search results.
/search_autosuggest:
get:
tags: [Search]
summary: Autosuggest Search
operationId: searchAutosuggest
parameters:
- in: query
name: q
required: true
schema:
type: string
responses:
'200':
description: Autosuggest results.
/music/stats/token:
get:
tags: [Stats]
summary: Get Stats Token
description: Request a one-shot token used to authorise a subsequent stats event.
operationId: getStatsToken
parameters:
- in: query
name: device
schema:
type: string
- in: query
name: music_id
schema:
type: string
responses:
'200':
description: Stats token issued.
/music/stats/{music_id}:
post:
tags: [Stats]
summary: Record Stats Event
description: Record a view or play event using a previously issued stats token.
operationId: postStatsEvent
parameters:
- in: path
name: music_id
required: true
schema:
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
required: [token, type]
properties:
token:
type: string
type:
type: string
enum: [view, play]
responses:
'200':
description: Event recorded.
/user:
get:
tags: [User]
summary: Get Authenticated User
operationId: getUser
responses:
'200':
description: Current user.
/user/register:
post:
tags: [User]
summary: Register User
operationId: registerUser
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
required: [email, artist_name, password, password2]
properties:
email:
type: string
format: email
artist_name:
type: string
password:
type: string
format: password
password2:
type: string
format: password
responses:
'201':
description: User registered.
/user/forgot-password:
post:
tags: [User]
summary: Forgot Password
operationId: forgotPassword
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
required: [email]
properties:
email:
type: string
format: email
responses:
'200':
description: Password reset email sent.
/user/playlists:
get:
tags: [User]
summary: List User Playlists
description: List authenticated user's playlists including private ones.
operationId: getUserPlaylists
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Playlists collection.
/user/favorites:
get:
tags: [User]
summary: List User Favorites
operationId: getUserFavorites
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Favorites collection.
/user/feed:
get:
tags: [User]
summary: Get User Feed
operationId: getUserFeed
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Activity feed.
/user/uploads:
get:
tags: [User]
summary: List User Uploads
operationId: getUserUploads
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Uploads collection.
/user/native-notifications:
get:
tags: [User]
summary: List User Notifications
operationId: getUserNotifications
parameters:
- in: query
name: only_unseen
schema:
type: boolean
- in: query
name: limit
schema:
type: integer
- in: query
name: paging_token
schema:
type: string
responses:
'200':
description: Notifications collection.
/user/native-notifications/seen:
post:
tags: [User]
summary: Mark Notifications Seen
operationId: markNotificationsSeen
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
for_all:
type: boolean
responses:
'200':
description: Notifications updated.
components:
securitySchemes:
oauth1:
type: http
scheme: OAuth
description: OAuth 1.0a signed request. Obtain a request token via `POST /v1/request_token`, redirect the user to `https://audiomack.com/oauth/authenticate?oauth_token=...`, then exchange for an access token via `POST /v1/access_token`. Access tokens are valid for one year.
parameters:
MusicId:
in: path
name: id
required: true
schema:
type: string
description: Audiomack music identifier.
PlaylistId:
in: path
name: id
required: true
schema:
type: string
description: Audiomack playlist identifier.
ArtistSlug:
in: path
name: slug
required: true
schema:
type: string
description: Artist slug (e.g. `drake`).
Genre:
in: path
name: genre
required: true
schema:
type: string
description: Audiomack genre slug (e.g. `hip-hop-rap`, `afrobeats`, `reggae`, `electronic`).
Fields:
in: query
name: fields
schema:
type: string
description: Comma-separated list of fields to include (sparse fieldsets), e.g. `id,title,artist:name`.
Limit:
in: query
name: limit
schema:
type: integer
default: 20
description: Maximum results to return. Pass `0` to return all results.
Key:
in: query
name: key
schema:
type: string
description: Optional consumer key for unauthenticated read access.