MeowApi

Documentation & Playground

MeowApi resolves playable audio streams from multiple music providers through a single unified REST interface. Every response is same-origin, signed, and ready to play.

Base URL

Authentication

Every request requires an API key. Create one in the admin panel under Admin → API keys, then authenticate using any of the following methods.

Query parameter

Simplest option for browsers and curl:

URL

X-API-Key header

Send the key as a request header:

cURL

Bearer token

Standard Authorization header:

cURL

Endpoints

All API routes live under /api and accept the same authentication. Parameters are passed as query strings.

GET/healthService status — no key required

Returns uptime plus a per-provider availability map. Use it for load-balancer checks.

Example
GET/api/providersCapability & quality matrix

Lists every platform slug with its supported operations (search, albums, artists, playlists, stream) and the exact quality IDs accepted by /api/track — including MP4 video tiers. Build UIs from this instead of hard-coding values.

Example
GET/api/searchSearch tracks, artists, albums or playlists
ParameterDescription
platformtidal · deezer · gaana · jiosaavn · spotify · youtube_music · youtube · soundcloud · apple_music · amazon_music · qobuz
querySearch text (required)
typetrack default · artist · album · playlist — providers that cannot filter server-side label results by type where possible
limit1–100 (Gaana caps at 50). Default 10
authauto default uses a connected account when one exists, otherwise public access · session forces an account · public forbids accounts
Spotify artist searches return the artist’s most popular tracks; Tidal and Qobuz require a connected account for full catalog depth.
Example
GET/api/resourceResolve any track, album, artist or playlist URL into an ordered listing

/api/resolve is an alias. Give it any supported URL — short links such as link.deezer.com, deezer.page.link and youtu.be are expanded automatically. Album and playlist responses keep provider ordering and include per-track qualities.

ParameterDescription
urlProvider URL (or use type+id for known IDs)
typeOptional override: track · album · artist · playlist
idOptional provider ID when you have no URL
limitCaps resolved collection size (default 100)
accountNamed connected account, default default
Example
GET/api/get_urlResolve a URL but return only the flat track array

Same parameters as /api/resource, shaped as {results:[…]} for OneGrab-compatible clients.

GET/api/trackGet a signed, playable stream URL (audio or video)

Returns stream metadata including cdnurl — a signed, same-origin URL valid for 24 hours that plays directly in any client. Passing an album, playlist or artist URL streams the first track of that collection. Gaana answers with either a progressive MP4 or a same-origin HLS proxy manifest depending on availability.

ParameterDescription
urlTrack (or collection) URL — platform auto-detected from the host
platformOptional explicit slug; required only when passing bare ids
qualityPlatform-specific tier — see table below
videotrue requests the music-video render as progressive MP4 where the platform provides videos (YouTube, YouTube Music, SoundCloud). The response may include extra.separate_audio_url for muxing
auth / accountCredential selection, identical semantics to /api/resource
PlatformAudio qualitiesVideo (video=true)
tidallow AAC 96k · high AAC 320k · lossless FLAC 16/44 · hires FLAC 24/192*
qobuz5 MP3 320 · 6 FLAC CD · 7 Hi-Res 24/96+ · 27 max available
deezer128 · 320 · lossless FLAC (subscription)
spotifylow 96k · high 160k · 320 · lossless FLAC*
gaanalow 16k · medium 64k · high 128k · very_high 320k
jiosaavn12 · 48 · 96 · 160 · 320 AAC
soundcloud128 Opus · 256 AAC (Go+)MP4 where the upload has artwork video
youtube / youtube_musicmp3_64mp3_320 · m4a_320 · opus_320 · sourcevideo_720 · video_1080 · video_2160 H.264/VP9 MP4
apple_musicaac 256k web playback
amazon_musicSD · HD · UHD† · ATMOS · RA360

* Tidal Hi-Res and Spotify lossless need an active paid subscription on the connected account. † Amazon UHD/ATMOS/RA360 need Music Unlimited.

Example
Video example
POST/api/account/login · status · logoutProgrammatic account management

JSON body {platform, account, credentials}. Device-code flows return {url, code, pending:true}; poll by re-posting until active:true. The admin panel automates this — prefer it for interactive logins.

GETDelivery routesSigned media endpoints

/downloads/* serves bundled files and /stream/gaana/manifest + /segment proxy Gaana HLS. All are HMAC-signed and expire — never construct them manually, always play the returned cdnurl.

Errors

Errors use conventional HTTP status codes and return a JSON body of the form {"code":404,"message":"..."}. Server-side failures intentionally return a generic message; the specific cause stays in server logs only.

StatusWhenTypical fix
400Missing or invalid parameters (no query, bad auth value, unparseable URL)Check the request parameters
401API key missing/invalid, or the platform requires a connected account and auth=session was setCreate a key, or connect the provider account in the admin panel
404The URL/ID could not be resolved on the providerVerify the link opens on the provider site
429Rate limit or quota exhausted (see X-RateLimit-*/Retry-After headers)Wait for the window to reset or raise the key’s tier
501Operation not supported for that platform (e.g. login on public providers)Use a different platform or operation
502The music provider failed mid-request (upstream outage, rejected credentials)Retry; check account status if it persists
504The provider took too long to respondRetry — repeated lookups are served from cache faster

Playground

Test every endpoint live. Your key is stored in this browser only.

1 API Key
2 Endpoint
3 Parameters
Ready.
// response will appear here