Practice API

Read-only score metadata and compressed MusicXML downloads for supported catalogue scores.

Get started

No API key is required on production. Protected staging requires its existing authentication. Use a score ID from a TuneViva score URL, such as /scores/70152/ode-to-joy-beginner-ludwig-van-beethoven.

OpenAPI 3.1 specification · API catalog · API health

Score metadata

GET /api/practice/{id}

Returns the display title and an absolute CDN MusicXML download URL and canonical score page path. A catalogue score must have MusicXML available.

{"title":"Ode to Joy (Beginner)","musicxml":"https://files.tuneviva.com/mxl/3/16/QmdDpPWGnAfRrDPY1r2Z74oYQ7QYZyMGesuT7NydxPkEZr.mxl","scoreURL":"/scores/70152/ode-to-joy-beginner-ludwig-van-beethoven"}

Download MusicXML

GET /api/practice/{id}/file or GET /api/practice/{id}/file.mxl

Returns a 307 redirect to the public CDN. Prefer fetching the absolute musicxml URL from metadata directly, without credentials. The CDN returns compressed MusicXML (MXL) with media type application/vnd.recordare.musicxml. Treat the response as binary, not JSON or uncompressed XML. Download once and reuse locally; honour Cache-Control headers.

Errors and availability

  • 404: invalid or missing score ID, or no supported MusicXML file.
  • 503: the static score export is unavailable.

GET /api/practice/health checks that the validated static score export is loaded and returns {"status":"ok"} when ready. It does not test every score or the external file store. HEAD is supported on these endpoints. There are no upload, editing or server-side scan operations; scanning runs in the user's browser.