API Docs v1.0

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.

Base URL available in your Pro Dashboard after subscribing

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

  1. Send audio features (or a URL) to the API
  2. Our scoring engine analyzes 82+ forensic signals
  3. 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
Security: Never expose your API key in client-side code. Always call the API from a secure backend.

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

POST /api-v1?action=analyze

Analyze audio for AI-generated content. Accepts a URL or base64-encoded audio data.

Request Body

ParameterTypeRequiredDescription
audio_urlstringYes*URL to audio file (MP3, WAV, OGG, FLAC, M4A)
audio_datastringYes*Base64-encoded audio data
formatstringNoAudio format hint (auto-detected by default)
include_featuresbooleanNoInclude 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
}
GET /api-v1?action=status

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"
}
GET /api-v1?action=usage

Retrieve your usage statistics for the current billing period.

Query Parameters

ParameterTypeDescription
periodstring"today", "week", "month" (default: "month")
detailedbooleanInclude per-endpoint breakdown

Response (200)

{
  "period": "month",
  "total_requests": 1247,
  "successful": 1230,
  "failed": 17,
  "analyses_count": 1180,
  "data_processed_mb": 2456.8
}
GET /api-v1?action=quota

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"
}
POST /api-v1?action=url-analyze

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.

POST /api-v1?action=certificate

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"
}
GET /api-v1?action=verify&id={certificate_id}

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.

POST /api-v1?action=webhook

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.

PlanRequests/DayConcurrentMax File SizePrice
Pro10,0001050 MB$4.99/mo
Enterprise100,000100500 MBCustom

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.

CodeErrorDescription
200OKRequest succeeded
202AcceptedAsync job queued successfully
400Bad RequestInvalid parameters or malformed JSON
401UnauthorizedMissing or invalid API key
403ForbiddenAPI key lacks required permissions
404Not FoundResource not found
413Payload Too LargeFile exceeds size limit
429Too Many RequestsRate limit exceeded
500Server ErrorInternal 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.

Coming Soon: Official SDKs for Python (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?