API Wykrywania Muzyki AI — Kompletny przewodnik dla deweloperów 2026
Jeśli budujesz DSP, dystrybutora, platformę submissions A&R lub jakiekolwiek narzędzie, które musi programowo oznaczać muzykę generowaną przez AI, potrzebujesz API. Ten przewodnik prowadzi przez wszystko: uwierzytelnianie, endpointy, przykłady kodu w Pythonie/Node.js/Javie, limity zapytań, formaty odpowiedzi, obsługę błędów i wskazówki produkcyjne.
W przykładach kodu wykorzystamy REST API AI Song Checker — start jest darmowy (bez karty kredytowej), obsługuje wszystkie główne silniki muzyki AI (Suno, Udio, Riffusion, ElevenLabs Music, MusicGen, Stable Audio) i zwraca bogaty JSON, w tym wyniki pewności oraz atrybucję platformy.
Dlaczego integrować przez API zamiast przez interfejs
- Skala: analizuj wsadowo tysiące utworów na godzinę
- Automatyzacja: integracja z procesami zgłoszeń, audytami katalogów, uploadami do streamingu
- Personalizacja: zbuduj własny panel, alerty i progi punktacji
- Zgodność: generuj dzienniki audytu pod wymogi znakowania wodnego z EU AI Act
- Opłacalność: model płatności za zapytanie bije koszty ręcznej weryfikacji
Szybki start — 60 sekund
- Zarejestruj się za darmo na aisongchecker.pro (wystarczy e-mail)
- Przejdź na plan Pro (4,99€/miesiąc), aby odblokować dostęp do API
- Wejdź w Panel → API i skopiuj swój
ASC_API_KEY - Wykonaj pierwsze zapytanie (zobacz przykład w Pythonie poniżej)
Uwierzytelnianie
Wszystkie zapytania do API używają HTTP Basic Auth lub tokenu Bearer w nagłówku Authorization. Zalecany jest Bearer:
Authorization: Bearer ASC_LIVE_xxxxxxxxxxxxxxxx
Twój klucz API ma pełny dostęp do konta — trzymaj go po stronie serwera, nigdy w kliencie JS ani w paczkach aplikacji mobilnej.
Przegląd endpointów
| Endpoint | Metoda | Co robi |
|---|---|---|
/api/v1/analyze/file | POST | Prześlij plik audio, otrzymaj wynik wykrywania AI |
/api/v1/analyze/url | POST | Analizuj adres URL z YouTube/Spotify/SoundCloud |
/api/v1/analyze/batch | POST | Prześlij do 100 utworów w jednym zapytaniu |
/api/v1/result/{id} | GET | Pobierz wynik asynchronicznego zadania wsadowego |
/api/v1/certificate/{id} | GET | Pobierz certyfikat autentyczności (PDF, podpisany) |
/api/v1/usage | GET | Bieżące zużycie limitu + status limitu zapytań |
Analiza pojedynczego pliku — 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}")
Przykładowa odpowiedź
{
"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"
}
Analiza adresu URL — 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}`);
}
Analiza wsadowa — 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": "..." }
Limity zapytań
| Plan | Zapytań/min | Zapytań/dzień | Rozmiar wsadu |
|---|---|---|---|
| Free | 10 | 50 | 1 |
| Pro | 60 | 5 000 | 100 |
| Business | 300 | 50 000 | 500 |
| Enterprise | Niestandardowy | Bez limitu | Niestandardowy |
Nagłówki limitu zapytań w każdej odpowiedzi:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1716422400
Obsługa błędów
| Kod HTTP | Znaczenie | Co zrobić |
|---|---|---|
| 400 | Błędne zapytanie (nieprawidłowy format pliku, nieobsługiwany URL) | Sprawdź dane wejściowe, ponów z poprawnymi danymi |
| 401 | Nieprawidłowy klucz API | Sprawdź klucz w panelu, wymień go, jeśli wyciekł |
| 402 | Przekroczony limit (plan free) | Zmień plan lub poczekaj na reset |
| 413 | Plik za duży (maks. 50 MB) | Skompresuj audio (nadal podawaj MP3 320 kbps) |
| 429 | Osiągnięty limit zapytań | Zastosuj wykładniczy backoff (zobacz niżej) |
| 500/503 | Błąd serwera | Ponów z backoffem. Mamy SLA 99,9%. |
Wzorzec wykładniczego backoffu
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
Webhooki dla asynchronicznych zadań wsadowych
Dla wsadów >10 utworów wyniki przychodzą przez webhook (szybciej niż odpytywanie). Skonfiguruj webhook_url w zapytaniu wsadowym. Payload webhooka:
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 }
}
Zweryfikuj nagłówek X-ASC-Signature po stronie serwera przy użyciu HMAC-SHA256 ze swoim sekretem webhooka (ten sam schemat co w webhookach Stripe).
Zastosowania — realne przykłady
1. Platforma streamingowa — automatyczne oznaczanie uploadów
Przy uploadzie utworu wywołaj /analyze/file asynchronicznie. Jeśli ai_probability > 0.85, dodaj automatycznie etykietę „AI-Generated" (zgodnie z wymogami EU AI Act). Oznacz platform_attribution.top w metadanych dla przejrzystości.
2. Filtrowanie zgłoszeń A&R
Platformy w stylu SubmitHub wywołują API przy każdym uploadzie dema. Utwory z ai_probability > 0.7 trafiają na priorytet do weryfikacji przez człowieka. Oszczędza kuratorom godziny.
3. Music supervisor — due diligence przy licencjonowaniu
Przed licencjonowaniem utworu do filmu/TV przepuść go przez /analyze/file i poproś o podpisany certyfikat (HMAC-SHA256). Dołącz certyfikat do umowy licencyjnej jako dowód autorstwa człowieka.
4. Audyt katalogu dla wytwórni
Prześlij swój archiwalny katalog (10 tys.–1 mln utworów) przez /analyze/batch. Otrzymasz raport CSV z podejrzanymi utworami do weryfikacji przez człowieka. Cennik: ~$0.01 za utwór na planie Business.
Dostępne SDK
- Python:
pip install aisongchecker· GitHub - Node.js:
npm install @aisongchecker/sdk· GitHub - Java: zależność Maven, GitHub
- Go:
go get github.com/aisongchecker/go-sdk - Kolekcja Postman: zaimportuj z /api-docs
Lista kontrolna produkcyjna
- ☑️ Klucz API przechowywany wyłącznie po stronie serwera (zmienna środowiskowa lub menedżer sekretów)
- ☑️ Wykładniczy backoff przy 429/5xx
- ☑️ Weryfikacja podpisu webhooka (HMAC-SHA256)
- ☑️ Cache wyników według hasha audio (unikaj powtórnych analiz)
- ☑️ Ustaw
return_features=falseprzy dużym wolumenie (mniejsze odpowiedzi) - ☑️ Monitoruj
X-RateLimit-Remainingw panelach - ☑️ Idempotencja: przekazuj własny
request_id, aby deduplikować ponowienia
Powiązane materiały
- Suno Detector — dedykowana strona
- Najlepsze detektory muzyki AI 2026 — przetestowane
- AI Song Checker dla firm