This document describes how tenants (Audicin for Apps API partners) interact with the Audicin for Apps API to:
- Browse the music catalogue
- Understand song categorisation
- Preview songs (no license required)
- Check licenses
- Stream full songs (license required)
All tenant endpoints require an API key.
X-API-KEY: <your-api-key>| HTTP Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 402 | Subscription inactive |
| 403 | License, quota, or access restriction |
A Song represents a licensable audio track.
- Songs can be listed and inspected freely
- Streaming the full audio requires a valid license
- Preview audio is always allowed (with an active subscription)
Each song includes:
- Metadata (title, duration, description)
- One or more artists
- Categories (main + secondary)
- Media (cover image, preview audio)
Each song is classified using two category dimensions.
Main Category (Brainwave) - Represents the binaural beat band embedded throughout the song
Order:
- Delta
- Theta
- Alpha
- Beta
- Gamma
Represents the context or activity where the song is used.
Purposes:
- Work
- Focus
- Relax
- Creativity
- Commute
- Mood boost
- Sleep
"categories": [
{ "id": "60V2DA5FZG88KTXC9ZVE6ZA2M7", "name": "Beta", "type": "main" },
{ "id": "1E1YPC105Y81AVTKRY1SSS1151", "name": "Work", "type": "secondary" }
]GET /tenants/songs| Name | Description |
|---|---|
| page | Page number |
| size | Page size |
| title | Filter by song title |
| mainGenre | Filter by main category |
| secondaryGenre | Filter by secondary category |
GET /tenants/stream/songPreview/{songId}Rules:
- API key required
- Active subscription required
- No license required
- Returns a temporary presigned URL
A License represents a time-bound permission for a tenant to stream a specific song.
Licenses are:
- Song-scoped
- Time-bound
- State-based (
ACTIVE,SUSPENDED,REVOKED, etc.)
GET /tenants/myLicenses?page=0&size=10{
"content": [
{
"id": "109RCXQJ0Y8SXR896KW6BB1Z4Q",
"song": {
"songId": "6CJ5BGSCAQ8FC8CPGV8MMK0STT",
"title": "Song no 19",
"seconds": 154
},
"status": "ACTIVE",
"validFrom": "2025-12-23T03:18:58Z",
"validTo": "2026-01-23T03:02:58Z",
"createdAt": "2025-12-23T03:16:39.553532Z"
}
],
"page": {
"size": 10,
"number": 0,
"totalElements": 35,
"totalPages": 4
}
}| Field | Meaning |
|---|---|
status | Current operational state of the license |
validFrom | Earliest timestamp when the license becomes usable |
validTo | Expiration timestamp |
createdAt | When the license was issued |
A license is usable only if all conditions are met:
status == ACTIVE
AND now >= validFrom
AND now <= validTo| Status | Meaning |
|---|---|
| ACTIVE | License is valid and usable |
| SUSPENDED | Temporarily disabled (quota enforcement, downgrade, payment issues) |
| REVOKED | License revoked by admin |
GET /tenants/myLicenses/check-access?songId={songId}&onlyValid=true{
"id": "109RCXQJ0Y8SXR896KW6BB1Z4Q",
"song": {
"songId": "6CJ5BGSCAQ8FC8CPGV8MMK0STT",
"title": "Song no 19",
"seconds": 154
},
"status": "ACTIVE",
"validFrom": "2025-12-23T03:18:58Z",
"validTo": "2026-01-23T03:02:58Z",
"createdAt": "2025-12-23T03:16:39.553532Z"
}GET /tenants/stream/song/{songId}Rules:
- API key required
- Active subscription required
- Valid license required
- License is checked in real time
- Returns a temporary presigned URL
GET /tenants/myLicenses/check-access?songId={songId}- API key required (
X-API-KEY) - Active tenant subscription required
- Valid ACTIVE license for the song required
- Expired, revoked, or suspended licenses are rejected
When access is granted, the API returns a temporary streaming descriptor:
{
"songId": "6CJ5BGSCAQ8FC8CPGV8MMK0STT",
"title": "Song no 19",
"url": "https://example.com/...signed-url...",
"method": "GET",
"expiresInSeconds": 180,
"songDuration": 154,
"objectData": {
"metadata": {},
"size": 103070,
"contentType": "audio/mpeg"
}
}URLs are tenant-scoped
URLs cannot be reused after expiration
Playback should begin immediately
Clients must not cache the URL
GET /tenants/downloadable/images/{mediaId}Rules:
- Only image media allowed - avatar(artist), cover(song)
- Returns a presigned download URL
NOTE: the media can be queried with id existing on the coverMedia and avatarEntities of songs and artists respectively
{
"objectName": "140_a.png",
"mediaId": "76Z8XE4PC098CS8TS6TVJK9481",
"url": "http://localhost:9006/audicin-tracks/images/140_a.png"
}- Tenant authenticates using API key
- Tenant browses songs in the catalogue
- Tenant filters by:
- Main category (brainwave: Delta, Theta, Alpha, Beta, Gamma)
- Secondary category (purpose: Work, Focus, Relax, Creativity, Commute, Mood boost, Sleep)
- Tenant previews songs without a license
- Tenant acquires licenses via the developer portal
- Tenant checks license availability
- Tenant streams full songs using licensed access
- Catalogue access is open
- Preview audio is free (with subscription)
- Full audio is strictly license-enforced
- License suspension and expiry are enforced server-side
- Media delivery uses secure presigned URLs
| Capability | Allowed |
|---|---|
| Browse songs & metadata | Yes |
| Browse artists | Yes |
| Preview audio | Yes (no license required) |
| Stream full songs | License required |
| Download images | Yes |
End of Audicin for Apps API Guide