Get your API key
Create a developer account and request a key from the API keys page. Pass it on every request as a Bearer token or X-API-Key header.
HTTP API for the Wav Linq attribution protocol — asynchronous detection via job polling, plus federated embed so credit resolves against your catalog, not ours. Sign up or login to your developer account to get started.
https://wavlinq.com
Create a developer account and request a key from the API keys page. Pass it on every request as a Bearer token or X-API-Key header.
POST /api/detect/jobs with an audio file. You receive a job_id immediately — processing runs in the background.
GET /api/detect/jobs/{job_id} with exponential backoff until status is succeeded or failed. Typical jobs finish in 2–8 seconds.
Join the federated network — embed a Linq ID and register your resolver URL so attribution resolves against your catalog when others run detection.
All endpoints require a partner API key. Include it on every request using one of the headers below.
Headers
| Name | Description |
|---|---|
| Authorizationrequired | Bearer <key> — standard OAuth-style header |
| X-API-Key | Alternative to Authorization — pass the raw key value |
Upload audio, receive a job_id, then poll until attribution is ready.
Upload an audio file to start asynchronous attribution detection. Returns a job_id immediately.
Body parameters
| Name | Type | Description |
|---|---|---|
| audio_filerequired | file | Audio file to analyze (multipart field) |
Response · 202 Accepted
Poll until status is succeeded or failed. Use exponential backoff — do not poll faster than once per second.
Response · 200 succeeded
attribution_source values
| Value | Description |
|---|---|
| direct | Metadata resolved from Wav Linq embed record |
| partner_registry:live | Live call to your resolver endpoint succeeded |
| partner_registry:cache | Metadata served from cache |
| partner_registry:registry_only | Signature found in registry but no metadata returned |
Rate limits
120 requests/minute per API key for POST /api/detect/jobs. Over limit returns 429 with a Retry-After header — honor it and do not tight-loop. Contact us for higher throughput on catalog backfills.
How it works
Join the network as a node — embed a Linq ID and register a resolver URL pointing to your catalog. When anyone runs detection, Wav Linq calls your node's HTTPS endpoint to fetch track metadata. We never store it ourselves. Apply partner_registry.sql in your database before first use.
Embeds a Linq ID and registers your resolver URL in one step. Returns attributed audio/wav as a download.
Body parameters
| Name | Type | Description |
|---|---|---|
| audio_filerequired | file | Source audio to embed (multipart field) |
| track_id | string | Track identifier used in signature generation |
| song_title | string | Alternative to track_id for signature generation |
| resolver_endpoint | string | Full resolver URL per request (Option A) |
| resolver_base_url | string | Base URL — Wav Linq appends path template (Option B) |
| resolver_path_template | string | Defaults to resolve/{signature}. Use {SIG} for uppercase hex |
Response · 200 audio/wav
Implement on your side — Wav Linq only stores a pointer to your resolver in partner_registry. We GET your HTTPS endpoint; your database stays yours.
Wav Linq calls your registered URL when detection finds a partner-embedded Linq. Return JSON track metadata.
Request headers
| Name | Description |
|---|---|
| X-WavLinq-Signaturerequired | 20-character signature (Linq ID) from the detection result |
| X-WavLinq-Timestamp | Unix timestamp (seconds) — sent when HMAC verification is enabled |
| X-WavLinq-HMAC | Hex HMAC-SHA256 of "{timestamp}.{SIGNATURE_UPPER}" |
Response · 200 OK
Design your pipeline for our worst case scenarios.
Error handling
| Situation | We return | Recommended behavior |
|---|---|---|
| Job not ready | status: processing | Keep polling with backoff; don't block user-facing flows |
| Rate limited | 429 + Retry-After | Back off per header; queue and retry |
| Degraded / unreachable | 5xx / timeout | Fail open — treat attribution as deferred, re-submit later |
| Auth problem | 401 / 403 | Surface as config error; verify key matches job owner |
| Unknown resolver | succeeds, registry_only | Detection succeeds; metadata absent |
Idempotency & versioning
Pass Idempotency-Key on retries — same key returns the same job_id (200 on replay vs 202 on first submit). The API is versioned (v1). Breaking changes ship under a new version with 90 days notice. Subscribe to API Status for advisories.