Reference

Endpoints

51 client-facing operations from the live OpenAPI document, grouped by task. Public routes need no credentials; Session token routes need Authorization: Bearer <session token> from a signed-in soniccheck.io account.

Sonic Check API - HARRY_V37 AnalyzerAPI version 0.1.0OpenAPI 3.1.0Snapshot 13 Nov 2026

Service status

Unauthenticated probes for liveness, readiness and deployment identity. Safe to poll.

GET/api/Public#

Service identity check. Returns the app name and ok.

GET/api/healthzPublic#

Minimal liveness probe used by the container host.

GET/api/readyzPublic#

Non-secret readiness probe: dependency checks (database, identity, payments, storage, audio runtime, catalogue release) and catalogue record counts.

GET/api/versionPublic#

Immutable, non-secret deployment identity, including the HARRY analyzer label and capability manifest.

Product, pricing and regions

The canonical public contract the web app reads before it shows plans or claims.

GET/api/product-contractPublic#

Release posture, pricing, supported wording and the decision boundary.

GET/api/plansPublic#

Plans in AUD with their pricing revision.

checkout_enabled is false on every plan while paid public scanning is closed.

GET/api/regionsPublic#

Regions a scan can record for context. No legal threshold or jurisdictional conclusion is applied.

Catalogue and sources

What the comparison catalogue contains and where each source stands on licensing.

GET/api/catalogue/manifestPublic#

Versioned coverage and source manifest for the composition reference catalogue.

GET/api/reference-sourcesPublic#

Reference source programme: acquisition, licensing and active-count status for each source.

Analyzer capabilities

Provider-free descriptions and cached self-tests of what HARRY runs. None of these start a scan.

GET/api/capabilities/harry-v37/self-testPublic#

Cached, sanitised, provider-free V34-V37 runtime exercise.

GET/api/capabilities/harry-v36/self-testPublic#

Preserved historical V34-V36 self-test contract.

GET/api/capabilities/beta/self-testPublic#

Self-test of the beta runtime.

GET/api/capabilities/retrieval-consensusPublic#

V37's status-neutral summary of eight-channel shadow evidence.

GET/api/capabilities/scan-featuresPublic#

The analytical entries a scan can include, described without provider requests.

GET/api/capabilities/composition-screeningPublic#

Provider-free composition screening probe with aggregate reference coverage.

GET/api/capabilities/candidate-shadowPublic#

Describes the bounded administrator opt-in for candidate shadow capture. Does not run a scan.

GET/api/capabilities/runtime-privacyPublic#

Privacy attestation of the deployed application root, without exposing file names.

GET/api/capabilities/provider-payment-gatesPublic#

Snapshot of provider and payment gate states.

GET/api/diagnostics/relational-specificity/capabilityPublic#

Describes the relational-specificity diagnostic.

GET/api/diagnostics/six-functions/capabilityPublic#

Describes the six-function scoring diagnostic.

Account

The signed-in soniccheck.io account. Requires a session token.

POST/api/auth/syncSession token#

Sync the Clerk profile after sign-in. Returns only server-verified identity.

JSON body · application/json

NameTypeRequiredNotes
namestring | nulloptionalDisplay name from the Clerk profile.
GET/api/auth/meSession token#

The signed-in account: plan, region, access policy, and remaining scan and report credits.

PATCH/api/auth/regionSession token#

Set the account's default region.

JSON body · application/json

NameTypeRequiredNotes
regionstringrequiredRegion code from GET /api/regions.

Scans

Create and manage evidence screens. Results are candidate evidence for human review.

POST/api/scans/uploadSession token#

Screen audio, lyrics or both, sent as multipart form data. Reserves one scan entitlement.

Remote audio URLs aren't accepted in the current deployment; upload the file instead.

Form fields · multipart/form-data

NameTypeRequiredNotes
titlestringrequiredWorking title recorded on the scan.
artist_namestringoptionalArtist or project name.
lyricsstringoptionalLyrics to screen. Required if no audio is supplied.
reference_lyricsstringoptionalOptional reference lyrics to compare against.
reference_lyrics_titlestringoptionalTitle of the reference lyrics.
reference_lyrics_authorizedbooleanoptionalConfirms you are authorised to submit the reference lyrics.
regionstringoptionalRegion recorded for context, e.g. AU. See GET /api/regions.
progress_idstring | nulloptionalOptional client id for server-side progress milestones.
filefile | nulloptionalAudio file, up to 100 MB.
POST/api/scansSession token#

Screen lyrics and metadata sent as JSON, without a file upload. Reserves one scan entitlement.

JSON body · application/json

NameTypeRequiredNotes
titlestringrequiredWorking title recorded on the scan.
artist_namestring | nulloptionalArtist or project name.
lyricsstring | nulloptionalLyrics to screen. Required if no audio is supplied.
reference_lyricsstringoptionalOptional reference lyrics to compare against.
reference_lyrics_titlestringoptionalTitle of the reference lyrics.
reference_lyrics_authorizedbooleanoptionalConfirms you are authorised to submit the reference lyrics.
regionstringoptionalRegion recorded for context, e.g. AU. See GET /api/regions.
audio_filenamestring | nulloptionalOriginal file name, if audio was uploaded separately.
audio_size_bytesinteger | nulloptionalSize of that audio in bytes.
GET/api/scansSession token#

List your scans.

GET/api/scans/progress/{progress_id}Session token#

Server-side progress milestones for an upload started with a progress_id.

Path parameters

NameTypeRequiredNotes
progress_idstringrequiredPath parameter.
GET/api/scans/{scan_id}Session token#

A scan you own, with its candidate evidence.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.
POST/api/scans/{scan_id}/rescanSession token#

Re-screen a stored scan. Reserves one scan entitlement.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.

JSON body · application/json

NameTypeRequiredNotes
regionstringoptionalOptional region override; defaults to the account region.
GET/api/scans/{scan_id}/audioSession token#

Retained private audio for a scan you own.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.
DELETE/api/scans/{scan_id}Session token#

Delete a scan and its stored audio.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.

Reports, library and badges

Evidence reports, the media library, and public verification links.

GET/api/scans/{scan_id}/reportSession token#

Download the PDF evidence report.

Needs the Single Scan report add-on or Pro and may use a report credit. Integrity headers: X-Integrity-Hash, X-Integrity-Scope, X-Report-SHA256.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.
GET/api/librarySession token#

Your media library.

POST/api/scans/{scan_id}/badgeSession token#

Publish a public verification link for a scan you own.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.
DELETE/api/scans/{scan_id}/badgeSession token#

Revoke the public verification link without deleting the scan.

Path parameters

NameTypeRequiredNotes
scan_idstringrequiredPath parameter.
GET/api/verify/{badge_id}Public#

The public record behind a verification badge.

Path parameters

NameTypeRequiredNotes
badge_idstringrequiredPath parameter.
GET/api/verify/{badge_id}/badge.svgPublic#

The verification badge as an SVG image.

Path parameters

NameTypeRequiredNotes
badge_idstringrequiredPath parameter.

Diagnostics

Research diagnostics over scans you already own. They never consume an entitlement.

POST/api/diagnostics/multiview-consistencySession token#

Compare V33 projections across stored views you own. Never scans audio, calls a provider or changes a stored record.

JSON body · application/json

NameTypeRequiredNotes
baseline_view_idstringrequiredStored view used as the baseline.
viewsarrayrequired1-32 stored views you own.
GET/api/capabilities/mda2-pairwiseSession token#

Whether MDA2 pairwise diagnostics are available to this account.

GET/api/diagnostics/mda2-pairwise/{diagnostic_id}Session token#

A sealed pairwise diagnostic.

Path parameters

NameTypeRequiredNotes
diagnostic_idstringrequiredPath parameter.
GET/api/diagnostics/mda2-pairwise/request/{request_id}Session token#

Look up a pairwise diagnostic by its request id.

Path parameters

NameTypeRequiredNotes
request_idstringrequiredPath parameter.
GET/api/diagnostics/mda2-pairwise/{diagnostic_id}/reportSession token#

Report for a sealed pairwise diagnostic.

Path parameters

NameTypeRequiredNotes
diagnostic_idstringrequiredPath parameter.

Billing

Stripe checkout and billing portal sessions for the signed-in account.

POST/api/checkout/sessionSession token#

Start a Stripe checkout for a plan.

Returns 503 while paid public scanning is closed during the beta.

JSON body · application/json

NameTypeRequiredNotes
plan_idstringrequiredPlan id from GET /api/plans.
origin_urlstringrequiredMust be https://soniccheck.io.
include_reportbooleanoptionalAdd the PDF evidence report to a Single Scan.
GET/api/checkout/status/{session_id}Session token#

Status of a checkout session.

Path parameters

NameTypeRequiredNotes
session_idstringrequiredPath parameter.
POST/api/checkout/portalSession token#

Open the Stripe billing portal.

JSON body · application/json

NameTypeRequiredNotes
origin_urlstringrequiredMust be https://soniccheck.io.

MetaBrainz catalogue

Read-only lookups in the contract-bound MetaBrainz catalogue replica. Metadata and identity context only; it is not recording recognition.

GET/api/catalogue/metabrainz/coverageSession token#

Coverage contract, configured read mode, tables and source omissions.

GET/api/catalogue/metabrainz/coverage/{table}Session token#

Coverage and relations for one table.

Path parameters

NameTypeRequiredNotes
tablestringrequiredPath parameter.
POST/api/catalogue/metabrainz/rows/lookupSession token#

Fetch one row by primary key.

JSON body · application/json

NameTypeRequiredNotes
tablestringrequiredTable named in the MetaBrainz coverage contract.
keyarrayrequiredPrimary-key values for the row.
POST/api/catalogue/metabrainz/rows/pageSession token#

Page through rows by a named lookup.

JSON body · application/json

NameTypeRequiredNotes
tablestringrequiredTable named in the MetaBrainz coverage contract.
lookupstring | nulloptionalNamed lookup defined by the contract.
valuesarray | nulloptionalLookup values (1-8).
cursorstring | nulloptionalOpaque cursor from the previous page.
limitintegeroptionalPage size, 1-100 (default 25).
POST/api/catalogue/metabrainz/mbid/lookupSession token#

Resolve a row by MusicBrainz identifier.

JSON body · application/json

NameTypeRequiredNotes
tablestringrequiredTable named in the MetaBrainz coverage contract.
mbidstringrequiredMusicBrainz identifier (36-character UUID).
POST/api/catalogue/metabrainz/relations/resolveSession token#

Resolve a contract relation from a source row.

JSON body · application/json

NameTypeRequiredNotes
relationstringrequiredRelation name defined by the contract.
source_keyarrayrequiredKey of the source row.

10 administrator-only operations and the Stripe webhook are intentionally left out of this page. The interactive Swagger UI remains the full machine-generated listing.