ASC API Documentation
Integrate AI-generated music detection into your workflow. The ASC API lets you analyze audio tracks, verify authenticity, and manage certificates programmatically.
Overview
The ASC (AI Song Checker) API provides programmatic access to our ASC Engine engine. It uses 82+ forensic audio signals and Bayesian scoring to detect AI-generated music from Suno, Udio, Riffusion, ElevenLabs, Stable Audio, MusicGen, and Mureka.
All endpoints use JSON for requests and responses. Audio feature extraction can be done client-side or server-side depending on your use case.
How It Works
- Send audio features (or a URL) to the API
- Our scoring engine analyzes 82+ forensic signals
- Receive a verdict (AI / Human), confidence level, score, and detailed reasons
Authentication
All requests require an API key passed in the X-API-Key header. Get your key from the Dashboard (Pro plan required).
Header Format
X-API-Key: asc_your_api_key_here
Quick Start
cURL
curl -X POST "https://api.aisongchecker.pro/v1?action=analyze" \
-H "X-API-Key: asc_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://example.com/track.mp3"
}'
Python
import requests
response = requests.post(
"https://api.aisongchecker.pro/v1?action=analyze",
headers={
"X-API-Key": "asc_your_api_key",
"Content-Type": "application/json"
},
json={"audio_url": "https://example.com/track.mp3"}
)
result = response.json()
print(f"Verdict: {result['prediction']} — Score: {result['ai_score']}%")
JavaScript
const response = await fetch(
"https://api.aisongchecker.pro/v1?action=analyze",
{
method: "POST",
headers: {
"X-API-Key": "asc_your_api_key",
"Content-Type": "application/json"
},
body: JSON.stringify({
audio_url: "https://example.com/track.mp3"
})
}
);
const result = await response.json();
console.log(`${result.prediction} — ${result.ai_score}%`);
Endpoints
Analyze audio for AI-generated content. Accepts a URL or base64-encoded audio data.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
audio_url | string | Yes* | URL to audio file (MP3, WAV, OGG, FLAC, M4A) |
audio_data | string | Yes* | Base64-encoded audio data |
format | string | No | Audio format hint (auto-detected by default) |
include_features | boolean | No | Include raw feature values in response (default: false) |
* Provide either audio_url OR audio_data, not both.
Response (200)
{
"prediction": "ai",
"ai_score": 87,
"confidence_level": "high",
"reasons": [
"32kHz resampling artifacts detected",
"Harmonic instability pattern recognized",
"Transformer attention patterns identified"
],
"engine": "v8.3",
"analysis_time_ms": 2341
}
Error (400)
{
"error": "invalid_audio_format",
"message": "Audio format not supported. Accepted: mp3, wav, ogg, flac, m4a",
"status": 400
}
Check API health and current service status.
Response (200)
{
"status": "operational",
"version": "1.0",
"engine": "v8.3",
"uptime_percent": 99.98,
"timestamp": "2026-03-30T14:22:15Z"
}
Retrieve your usage statistics for the current billing period.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
period | string | "today", "week", "month" (default: "month") |
detailed | boolean | Include per-endpoint breakdown |
Response (200)
{
"period": "month",
"total_requests": 1247,
"successful": 1230,
"failed": 17,
"analyses_count": 1180,
"data_processed_mb": 2456.8
}
Check remaining quota and limits for your current plan.
Response (200)
{
"plan": "pro",
"daily_limit": 10000,
"daily_used": 342,
"daily_remaining": 9658,
"reset_at": "2026-03-31T00:00:00Z"
}
Submit a URL for asynchronous analysis. Useful for large files or batch workflows — the API downloads and processes the audio server-side.
Request Body
{
"url": "https://example.com/track.mp3",
"callback_url": "https://your-server.com/webhook"
}
Response (202)
{
"job_id": "job_abc123def456",
"status": "queued",
"estimated_time_sec": 30
}
Results are sent to your callback_url when ready, or you can poll using GET /api-v1?action=job&id=job_abc123def456.
Generate an authenticity certificate for a track. The certificate includes the analysis result, confidence level, and a unique verification code.
Request Body
{
"analysis_id": "ana_xyz789",
"format": "pdf"
}
Response (200)
{
"certificate_id": "cert_abc123",
"verification_url": "https://aisongchecker.pro/verify/cert_abc123",
"download_url": "https://aisongchecker.pro/api/cert/cert_abc123.pdf",
"expires_at": "2027-03-30T00:00:00Z"
}
Verify the authenticity of a certificate by its ID.
Response (200)
{
"valid": true,
"certificate_id": "cert_abc123",
"prediction": "human",
"ai_score": 8,
"issued_at": "2026-03-30T14:00:00Z"
}
Webhooks
Register a webhook URL to receive real-time notifications when asynchronous analyses complete.
Register Webhook
{
"url": "https://your-server.com/asc-webhook",
"events": ["analysis.complete", "certificate.ready"]
}
Webhook Payload
{
"event": "analysis.complete",
"job_id": "job_abc123def456",
"prediction": "ai",
"ai_score": 91,
"confidence_level": "very_high",
"timestamp": "2026-03-30T14:25:00Z"
}
Rate Limits
Limits are enforced per API key and reset daily at midnight UTC.
| Plan | Requests/Day | Concurrent | Max File Size | Price |
|---|---|---|---|---|
| Pro | 10,000 | 10 | 50 MB | $4.99/mo |
| Enterprise | 100,000 | 100 | 500 MB | Custom |
Rate Limit Headers
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9658
X-RateLimit-Reset: 1711929600
When you exceed your limit, the API returns 429 Too Many Requests with a Retry-After header.
Error Codes
All errors return a consistent JSON structure with error, message, and status fields.
| Code | Error | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 202 | Accepted | Async job queued successfully |
| 400 | Bad Request | Invalid parameters or malformed JSON |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | API key lacks required permissions |
| 404 | Not Found | Resource not found |
| 413 | Payload Too Large | File exceeds size limit |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Server Error | Internal error — retry later |
Error Response Example
{
"error": "unauthorized",
"message": "Invalid or expired API key",
"status": 401
}
SDKs
Official client libraries are coming soon. In the meantime, the API is simple to integrate with any HTTP client — see the Quick Start examples above for cURL, Python, and JavaScript.
pip install asc-api) and Node.js (npm install @aisongchecker/api). Subscribe to the changelog for updates.
Changelog
v1.0 — March 2026
Initial Release
- Audio analysis endpoint with ASC Engine v8.3 engine (82+ forensic signals)
- AI generation prediction with confidence scoring
- C2PA and SynthID watermark detection
- Asynchronous URL analysis with job management
- Authenticity certificate generation and verification
- Webhook support for real-time notifications
- Quota and usage tracking
- Pro and Enterprise tiers
Support
Need help integrating the API?
- Email: contact@nthg.fr
- Dashboard: Manage your API key and view usage
- Status: Use the /status endpoint to check API health