iceBeats Audio API
Dokumentation och testverktyg för bibliotek, topplistor och loggning av uppspelningar.
Base URL:
https://icebeats.io
Autentisering
Externa integratörer behöver API-nyckel för topplista och loggning.
Dina egna sidor på samma domän kan fortsätta utan nyckel (same-site via Origin/Referer/Host).
Kräver API key:
•
GET /api/stats_top.php•
POST /api/track_play.phpPublikt:
•
GET /library.json•
GET /api/health.php
X-API-Key
X-API-Key: DIN_NYCKEL
Same-site requests från icebeats.io och icejockey.app kan tillåtas utan API-nyckel beroende på endpoint.
Översikt
| Metod | Path | Åtkomst | Beskrivning |
|---|---|---|---|
GET |
/library.json |
Publik | Returnerar hela biblioteket med spår och metadata. |
GET |
/api/health.php |
Publik | En enkel statuskontroll för API och bakomliggande delar. |
GET |
/api/stats_top.php |
Skyddad | Returnerar mest spelade låtar för vald period. |
POST |
/api/track_play.php |
Skyddad | Loggar en uppspelning för statistik och sync. |
Endpoints
GET
/library.json
Publik
Returnerar hela biblioteket med spår och metadata.
Exempelsvar
{
"baseUrl": "https://icebeats.io",
"items": [
{
"id": "goal_horn_1",
"title": "Goal Horn",
"artist": "iceBeats",
"genre": "Mål",
"image": "/covers/goal-horn.webp",
"url": "/tracks/goal-horn.mp3",
"createdAt": 1740000000
}
]
}
GET
/api/health.php
Publik
En enkel statuskontroll för API och bakomliggande delar.
Exempelsvar
{
"ok": true,
"checks": {
"library": { "ok": true, "updated": 1740000000 },
"db": { "ok": true },
"storage": { "ok": true }
}
}
GET
/api/stats_top.php
Skyddad
Returnerar mest spelade låtar för vald period.
Parametrar
| Fält | Krävs | Beskrivning |
|---|---|---|
range | Nej | week eller month |
limit | Nej | 1–50 |
client_id | Nej | Valfritt klient-id |
Exempelsvar
{
"ok": true,
"range": "week",
"days": 7,
"clientId": "arena_1",
"updatedAt": "2026-03-06T08:00:00Z",
"top": [
{
"trackId": "goal_horn_1",
"plays": 42,
"msTotal": 123000,
"lastTs": 1741248000,
"title": "Goal Horn",
"artist": "iceBeats",
"genre": "Mål",
"image": "/covers/goal-horn.webp",
"url": "/tracks/goal-horn.mp3"
}
]
}
POST
/api/track_play.php
Skyddad
Loggar en uppspelning för statistik och sync.
Parametrar
| Fält | Krävs | Beskrivning |
|---|---|---|
track_id | Ja | Unikt spår-id |
client_id | Nej | Klient eller integration |
event_key | Nej | Typ av event, t.ex. goal eller library_play |
played_ms | Nej | Spelad tid i millisekunder |
title | Nej | Titel för spåret |
artist | Nej | Artistnamn |
track_url | Nej | Delbar URL till spårsidan |
Exempelsvar
{
"ok": true,
"trackId": "goal_horn_1",
"logged": true
}
Snabbtest (Playground)
Fyll i API-nyckel om du vill testa skyddade endpoints.
Hämtar topplista från stats_top.php
Skickar en test-logg till track_play.php
Svar
{}
Exempel
Med API key
# top week (requires key) curl -s "https://icebeats.io/api/stats_top.php?range=week&limit=10&client_id=arena_1" \ -H "X-API-Key: DIN_NYCKEL" # log play (requires key) curl -s -X POST "https://icebeats.io/api/track_play.php" \ -H "X-API-Key: DIN_NYCKEL" \ -F "track_id=goal_horn_1" \ -F "client_id=arena_1" \ -F "event_key=goal_home" \ -F "played_ms=5000" \ -F "title=Goal Horn" \ -F "artist=iceBeats" \ -F "track_url=https://icebeats.io/track/?id=goal_horn_1"
Utan API key
# library (public) curl -s "https://icebeats.io/library.json" # health (public) curl -s "https://icebeats.io/api/health.php"
Rate limiting
Externa requests begränsas per API-nyckel eller IP. Dedupla gärna loggning per track/klient.
Tips: logga bara om låten spelat minst 5 sekunder och max 1 gång/minut per track och klient.