API de Detecção de Música IA — Guia completo para desenvolvedores 2026
Se você está construindo um DSP, distribuidor, plataforma de submissão A&R ou qualquer ferramenta que precise sinalizar música gerada por IA de forma programática, você precisa de uma API. Este guia mostra tudo: autenticação, endpoints, exemplos de código em Python/Node/Java, limites de taxa, formatos de resposta, tratamento de erros e dicas de produção.
Usaremos a API REST do AI Song Checker para os exemplos de código — é gratuita para começar (sem cartão de crédito), suporta todos os principais motores de música IA (Suno, Udio, Riffusion, ElevenLabs Music, MusicGen, Stable Audio) e retorna JSON detalhado, incluindo pontuações de confiança e atribuição de plataforma.
Por que integrar via API em vez de interface
- Escala: analise milhares de faixas por hora em lote
- Automação: integre a fluxos de submissão, auditorias de catálogo, uploads de streaming
- Personalização: crie seu próprio painel, alertas e limiares de pontuação
- Conformidade: gere logs de auditoria para os requisitos de marca d'água do EU AI Act
- Custo-benefício: pagar por chamada sai mais barato do que contratar revisores manuais
Início rápido — 60 segundos
- Cadastre-se gratuitamente em aisongchecker.pro (só um e-mail)
- Faça upgrade para o Pro (4,99€/mês) para desbloquear o acesso à API
- Vá em Painel → API e copie sua
ASC_API_KEY - Faça sua primeira chamada (veja o exemplo em Python abaixo)
Autenticação
Todas as requisições da API usam HTTP Basic Auth ou token Bearer no cabeçalho Authorization. O Bearer é recomendado:
Authorization: Bearer ASC_LIVE_xxxxxxxxxxxxxxxx
Sua chave de API tem acesso total à sua conta — mantenha-a no lado do servidor, nunca em JS de cliente ou em pacotes de aplicativos móveis.
Visão geral dos endpoints
| Endpoint | Método | O que faz |
|---|---|---|
/api/v1/analyze/file | POST | Envia um arquivo de áudio e retorna o resultado de detecção de IA |
/api/v1/analyze/url | POST | Analisa uma URL do YouTube/Spotify/SoundCloud |
/api/v1/analyze/batch | POST | Envia até 100 faixas em uma única chamada |
/api/v1/result/{id} | GET | Recupera o resultado de um job em lote assíncrono |
/api/v1/certificate/{id} | GET | Obtém o certificado de autenticidade (PDF, assinado) |
/api/v1/usage | GET | Uso atual da cota + status do limite de taxa |
Analisar um único arquivo — 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}")
Exemplo de resposta
{
"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"
}
Analisar uma 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}`);
}
Análise em lote — 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());
// Retorna: {"job_id": "asc_job_xyz", "status": "queued", "estimated_completion": "..." }
Limites de taxa
| Plano | Requisições/min | Requisições/dia | Tamanho do lote |
|---|---|---|---|
| Free | 10 | 50 | 1 |
| Pro | 60 | 5.000 | 100 |
| Business | 300 | 50.000 | 500 |
| Enterprise | Personalizado | Ilimitado | Personalizado |
Cabeçalhos de limite de taxa em cada resposta:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1716422400
Tratamento de erros
| Código HTTP | Significado | O que fazer |
|---|---|---|
| 400 | Requisição inválida (formato de arquivo inválido, URL não suportada) | Verifique a entrada e tente novamente com dados válidos |
| 401 | Chave de API inválida | Verifique a chave no painel; rotacione se vazou |
| 402 | Cota excedida (plano gratuito) | Faça upgrade do plano ou aguarde a renovação |
| 413 | Arquivo grande demais (máx. 50 MB) | Comprima o áudio (envie MP3 320 kbps) |
| 429 | Limite de taxa atingido | Implemente backoff exponencial (veja abaixo) |
| 500/503 | Erro do servidor | Tente novamente com backoff. Temos SLA de 99,9%. |
Padrão de backoff exponencial
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))
# Depois use session.post(...) — repete automaticamente com 2s, 4s, 8s, 16s, 32s
Webhooks para jobs em lote assíncronos
Para lotes com mais de 10 faixas, os resultados chegam via webhook (mais rápido que polling). Configure a webhook_url na requisição em lote. Payload do webhook:
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 }
}
Verifique o cabeçalho X-ASC-Signature no lado do servidor usando HMAC-SHA256 com o seu segredo de webhook (mesmo esquema dos webhooks do Stripe).
Casos de uso — exemplos reais
1. Plataforma de streaming — sinalização automática de uploads
No upload de uma faixa, chame /analyze/file de forma assíncrona. Se ai_probability > 0.85, adicione automaticamente um rótulo "Gerado por IA" (conforme os requisitos do EU AI Act). Marque platform_attribution.top nos metadados para transparência.
2. Filtragem de submissões A&R
Plataformas no estilo SubmitHub chamam a API a cada envio de demo. Faixas com ai_probability > 0.7 recebem prioridade de revisão humana. Poupa horas dos curadores.
3. Supervisor musical — due diligence de licenciamento
Antes de licenciar uma faixa para cinema/TV, processe-a por /analyze/file + solicite o certificado assinado (HMAC-SHA256). Anexe o certificado ao contrato de licenciamento como prova de autoria humana.
4. Auditoria de catálogo para gravadoras
Envie o seu catálogo antigo (10 mil a 1 milhão de faixas) via /analyze/batch. Receba um relatório CSV das faixas suspeitas para revisão humana. Preço: cerca de US$ 0,01 por faixa no plano Business.
SDKs disponíveis
- Python:
pip install aisongchecker· GitHub - Node.js:
npm install @aisongchecker/sdk· GitHub - Java: dependência Maven, GitHub
- Go:
go get github.com/aisongchecker/go-sdk - Coleção Postman: importe de /api-docs
Checklist de produção
- ☑️ Chave de API armazenada apenas no servidor (variável de ambiente ou gerenciador de segredos)
- ☑️ Backoff exponencial em 429/5xx
- ☑️ Verificação da assinatura do webhook (HMAC-SHA256)
- ☑️ Cache dos resultados por hash de áudio (evita análises duplicadas)
- ☑️ Defina
return_features=falsepara uso de alto volume (respostas menores) - ☑️ Monitore
X-RateLimit-Remainingnos painéis - ☑️ Idempotência: passe seu próprio
request_idpara deduplicar as retentativas
Leitura relacionada
- Suno Detector — página dedicada
- Melhores Detectores de Música IA 2026 — Testados
- AI Song Checker para Empresas