Deezers KI-Erkennungs-Tool erklärt — Was es 2026 bedeutet
Wenn du eine DSP, einen Distributor, eine A&R-Einreichungsplattform oder ein anderes Tool baust, das KI-generierte Musik programmatisch kennzeichnen muss, brauchst du eine API. Dieser Guide führt dich durch alles: Authentifizierung, Endpunkte, Codebeispiele in Python/Node/Java, Rate-Limits, Antwortformate, Fehlerbehandlung und Produktionstipps.
Für die Codebeispiele verwenden wir die AI Song Checker REST API — der Einstieg ist kostenlos (keine Kreditkarte), sie unterstützt alle großen KI-Musik-Engines (Suno, Udio, Riffusion, ElevenLabs Music, MusicGen, Stable Audio) und liefert umfangreiches JSON inklusive Confidence-Scores und Plattform-Zuordnung.
Warum per API statt über die Oberfläche integrieren
- Skalierung: Tausende Tracks pro Stunde im Batch analysieren
- Automatisierung: Integration in Einreichungs-Workflows, Katalog-Audits, Streaming-Uploads
- Anpassung: eigenes Dashboard, Alerting und Scoring-Schwellenwerte bauen
- Compliance: Audit-Logs für die Wasserzeichen-Anforderungen des EU AI Act erzeugen
- Kosteneffizient: Pay-per-Call schlägt das Anheuern manueller Prüfer
Schnellstart — 60 Sekunden
- Kostenlos registrieren auf aisongchecker.pro (nur eine E-Mail)
- Auf Pro upgraden (4,99€/Monat), um den API-Zugang freizuschalten
- Zu Dashboard → API gehen und deinen
ASC_API_KEYkopieren - Ersten Aufruf machen (siehe Python-Beispiel unten)
Authentifizierung
Alle API-Anfragen verwenden HTTP Basic Auth oder einen Bearer-Token im Authorization-Header. Bearer wird empfohlen:
Authorization: Bearer ASC_LIVE_xxxxxxxxxxxxxxxx
Dein API-Key hat vollen Zugriff auf dein Konto — bewahre ihn serverseitig auf, niemals in Client-JS oder App-Bundles.
Übersicht der Endpunkte
| Endpunkt | Methode | Was er tut |
|---|---|---|
/api/v1/analyze/file | POST | Audiodatei hochladen, KI-Erkennungsergebnis erhalten |
/api/v1/analyze/url | POST | Eine YouTube-/Spotify-/SoundCloud-URL analysieren |
/api/v1/analyze/batch | POST | Bis zu 100 Tracks in einem Aufruf einreichen |
/api/v1/result/{id} | GET | Ergebnis eines asynchronen Batch-Jobs abrufen |
/api/v1/certificate/{id} | GET | Echtheitszertifikat abrufen (PDF, signiert) |
/api/v1/usage | GET | Aktuelle Kontingentnutzung + Rate-Limit-Status |
Eine einzelne Datei analysieren — Python
import requests
API_KEY = "ASC_LIVE_your_key_here"
URL = "https://api.aisongchecker.pro/v1/analyze/file"
with open("track.mp3", "rb") as f:
response = requests.post(
URL,
headers={"Authorization": f"Bearer {API_KEY}"},
files={"audio": f},
data={"return_features": "true", "return_certificate": "true"},
)
result = response.json()
print(f"AI probability: {result['ai_probability']:.1%}")
print(f"Verdict: {result['verdict']}") # "ai" | "human" | "uncertain"
print(f"Most likely platform: {result['platform_attribution']['top']}")
print(f"Confidence: {result['confidence']:.2f}")
Beispielantwort
{
"id": "asc_anl_2k3jX9pQmR8t",
"ai_probability": 0.967,
"verdict": "ai",
"confidence": 0.94,
"platform_attribution": {
"top": "suno",
"scores": {
"suno": 0.91,
"udio": 0.04,
"riffusion": 0.02,
"elevenlabs_music": 0.01,
"musicgen": 0.01,
"stable_audio": 0.01
},
"version_hint": "v5"
},
"watermarks": {
"c2pa_detected": true,
"synthid_detected": false,
"c2pa_signer": "suno.ai"
},
"features": {
"spectral_flatness_mean": 0.0182,
"phase_coherence_entropy": 2.41,
"mfcc_distance_baseline": 8.93,
"frame_similarity": 0.78
},
"engine_version": "ASC-v8.3",
"analyzed_at": "2026-05-22T18:42:11Z",
"certificate_url": "https://aisongchecker.pro/cert/asc_anl_2k3jX9pQmR8t.pdf"
}
Eine URL analysieren — Node.js
const fetch = require('node-fetch');
const result = await fetch('https://api.aisongchecker.pro/v1/analyze/url', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.ASC_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
return_features: false
})
}).then(r => r.json());
console.log(`AI: ${(result.ai_probability * 100).toFixed(1)}%`);
if (result.verdict === 'ai') {
console.log(`Platform: ${result.platform_attribution.top}`);
}
Batch-Analyse — Java
import java.net.http.*;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
String json = """
{
"tracks": [
{"id": "t1", "url": "https://soundcloud.com/artist/track-1"},
{"id": "t2", "url": "https://open.spotify.com/track/abc123"},
{"id": "t3", "url": "https://youtu.be/xyz789"}
],
"webhook_url": "https://your-app.com/asc-webhook"
}""";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.aisongchecker.pro/v1/analyze/batch"))
.header("Authorization", "Bearer " + System.getenv("ASC_API_KEY"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
// Returns: {"job_id": "asc_job_xyz", "status": "queued", "estimated_completion": "..." }
Rate-Limits
| Tier | Anfragen/Min | Anfragen/Tag | Batch-Größe |
|---|---|---|---|
| Free | 10 | 50 | 1 |
| Pro | 60 | 5.000 | 100 |
| Business | 300 | 50.000 | 500 |
| Enterprise | Individuell | Unbegrenzt | Individuell |
Rate-Limit-Header in jeder Antwort:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1716422400
Fehlerbehandlung
| HTTP-Code | Bedeutung | Was zu tun ist |
|---|---|---|
| 400 | Fehlerhafte Anfrage (ungültiges Dateiformat, URL nicht unterstützt) | Eingabe prüfen, mit gültigen Daten erneut versuchen |
| 401 | Ungültiger API-Key | Key im Dashboard prüfen, bei Leak rotieren |
| 402 | Kontingent überschritten (Free-Tier) | Plan upgraden oder bis zum Reset warten |
| 413 | Datei zu groß (max. 50 MB) | Audio komprimieren (weiterhin MP3 320 kbps übergeben) |
| 429 | Rate-Limit erreicht | Exponential Backoff implementieren (siehe unten) |
| 500/503 | Serverfehler | Mit Backoff erneut versuchen. Wir haben 99,9% SLA. |
Exponential-Backoff-Muster
import time, requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
session = requests.Session()
retries = Retry(
total=5, backoff_factor=2,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["POST"]
)
session.mount("https://", HTTPAdapter(max_retries=retries))
# Then use session.post(...) — auto retries with 2s, 4s, 8s, 16s, 32s
Webhooks für asynchrone Batch-Jobs
Für Batches mit >10 Tracks kommen die Ergebnisse per Webhook (schneller als Polling). Konfiguriere webhook_url in der Batch-Anfrage. Webhook-Payload:
POST https://your-app.com/asc-webhook
Content-Type: application/json
X-ASC-Signature: t=1716422400,v1=abc123...
{
"event": "batch.completed",
"job_id": "asc_job_xyz",
"results": [
{ "id": "t1", "ai_probability": 0.97, "verdict": "ai", "platform": "suno" },
{ "id": "t2", "ai_probability": 0.04, "verdict": "human" },
{ "id": "t3", "ai_probability": 0.81, "verdict": "ai", "platform": "udio" }
],
"stats": { "processed": 3, "errors": 0, "duration_ms": 12450 }
}
Verifiziere den X-ASC-Signature-Header serverseitig mit HMAC-SHA256 und deinem Webhook-Secret (gleiches Schema wie Stripe-Webhooks).
Anwendungsfälle — echte Beispiele
1. Streaming-Plattform — Uploads automatisch kennzeichnen
Beim Track-Upload /analyze/file asynchron aufrufen. Wenn ai_probability > 0.85, automatisch ein Label „KI-generiert" hinzufügen (gemäß EU AI Act). platform_attribution.top zur Transparenz in den Metadaten taggen.
2. A&R-Einreichungen filtern
Plattformen im SubmitHub-Stil rufen die API bei jedem Demo-Upload auf. Tracks mit ai_probability > 0.7 bekommen Priorität für die manuelle Prüfung. Spart Kuratoren Stunden.
3. Music Supervisor — Lizenzierungs-Due-Diligence
Bevor du einen Track für Film/TV lizenzierst, lass ihn durch /analyze/file laufen + fordere das signierte Zertifikat an (HMAC-SHA256). Hänge das Zertifikat als Nachweis menschlicher Urheberschaft an den Lizenzvertrag.
4. Katalog-Audit für Labels
Schicke deinen Back-Katalog (10.000–1 Mio. Tracks) über /analyze/batch. Erhalte einen CSV-Report verdächtiger Tracks für die manuelle Prüfung. Preis: ~0,01 $ pro Track im Business-Tier.
Verfügbare SDKs
- Python:
pip install aisongchecker· GitHub - Node.js:
npm install @aisongchecker/sdk· GitHub - Java: Maven-Abhängigkeit, GitHub
- Go:
go get github.com/aisongchecker/go-sdk - Postman-Collection: importieren von /api-docs
Produktions-Checkliste
- ☑️ API-Key nur serverseitig gespeichert (Umgebungsvariable oder Secret Manager)
- ☑️ Exponential Backoff bei 429/5xx
- ☑️ Webhook-Signaturprüfung (HMAC-SHA256)
- ☑️ Ergebnisse per Audio-Hash cachen (doppelte Analysen vermeiden)
- ☑️
return_features=falsefür hohes Volumen setzen (kleinere Antworten) - ☑️
X-RateLimit-Remainingin Dashboards überwachen - ☑️ Idempotenz: eigene
request_idübergeben, um Retries zu deduplizieren