Skip to main content

🚀 apiv2 is live!

Trace is served from apiv2.soundverse.ai. Create your API key and manage billing at platform.soundverse.ai.

Error Format

Most errors return a JSON body with a stable error name, a human-readable message, and whether retrying can help:
Authentication errors omit retryable. Dataset, library and legacy-upload endpoints pass through the Trace service’s own response, which uses detail (for example a duplicate dataset name) or success and message.

Status Codes

For privacy, a job or dataset that belongs to another account returns 404, exactly as if it did not exist.
When an API key is revoked, it can keep working for up to 30 seconds.

Billing

Trace bills your Soundverse balance per job, based on usage.
  • What a job costs depends on the songs’ length, the layers involved and, for searches, the number of comparisons.
  • When you are charged: a hold may be placed when a job is queued, and the final amount is settled after the job completes, usually within a minute or two.
  • Failed jobs are not charged. Any hold is returned in full.
  • Validation errors are not charged. A request rejected with 4xx never creates a job.

Check your balance

cURL
Amounts are in US cents: 4506 is $45.06. total_effective is the amount available to spend.

Budget Cap

Add budget_tokens to any ingest or search request to cap what the job may cost. Trace prices the job before doing any work. If the price is more than 10% above your cap, the job is refused and finishes as failed, and you are not charged. The error gives the job’s price, for example:
Re-submit with a budget_tokens at least as high as the quoted price. Leave budget_tokens out to run without a cap.

Safe Retries (Idempotency)

Network errors can leave you unsure whether a job was created. Send an Idempotency-Key header with every POST that creates a job. Repeating a request with the same key within 24 hours returns the same job instead of creating, and charging for, a second one.
cURL
A key that breaks these rules is ignored, and the request is processed as if no key was sent. Use a new key for each distinct job.

Rate Limits

Job-creating requests are rate-limited per account over hourly and daily windows. Each kind of job (ingestion, custom search, comprehensive search, use-case search) has its own limit, and all Trace jobs also share an overall limit. The eight use-case searches count together as one kind. Limits depend on your account. When you exceed a limit you receive 429 RateLimited; wait, then retry with backoff. Status checks, results, dataset management and uploads do not count towards these limits.