Complete overhaul - please report any problems

API

A public API is available for querying all published QC Items, including links to the famous 'Card' images.

The official documentation for this API is available from: github.com/ebu/qc (public).

Documentation

The API definition is only one part of the available documentation. The github.com/ebu/qc repo also contains:

  • The QC Data Model
  • XML Schemas for both the API and the Data Model specifications
  • Older versions of the above specifications.

API versions

v3

API v3 is available at /api/v3/. It follows the EBU QC data model and catalogue-API XML Schemas tagged 2026-04 in github.com/ebu/qc.

What it serves. Only the published and withdrawn versions made under the 2026-04 data model. Item versions published before mid-October 2026 use the older (legacy) data model and stay in API v1 and v2. From mid-October 2026 on, new versions, including the republished ones, are made under the 2026-04 data model and appear only in API v3, never in v1 or v2. So for an Item that has been republished, v1 and v2 keep showing its last legacy version, and v3 shows the new one. API v3 therefore fills up as Items are republished: an Item that has not been republished yet is not in v3. The Versions list of an Item also only shows its 2026-04 versions. An Item whose only 2026-04 version is withdrawn can still be retrieved.

Calls. The paths are the same as in v2:

  • /api/v3/items: all Items, with the latest published or withdrawn version of each
  • /api/v3/items/<EBUQCID>: one Item
  • /api/v3/items/<EBUQCID>/versions/<MAJOR>.<MINOR>: one version of an Item

Format. XML only, like v2: a request for JSON or CSV gets 406 Not Acceptable. The namespaces are tag:qc.ebu.ch,2026-04 and tag:catalogue.qc.ebu.ch,2026-04.

Differences from v2:

  • A CheckResultDefinition on the Item.
  • An optional AnalysisMethod on the Item (readout, measurement or readout and measurement), left out when not specified.
  • Four flags on each Input and Output, HasLocatorTemporal, HasLocatorSpatial, HasTrack and HasWrapperLocation, instead of the single HasLocator.
  • No Group element: an Input or Output with children is still an Input or Output, with the children nested inside.
  • No xsi:nil, and no empty elements: an optional element without a value (for example a Unit, ValueRange or Remarks) is left out. Placeholder values such as "N/A", "N/S" or "N/P" (and "-" for a Type, Unit, Representation or ValueRange) count as no value.
  • An Input or Output without a Type has no DefaultValue, ValueRange, Unit, Representation or Aliases.
  • An Item ID contains only letters, digits and "-".

Unlike v1 and v2, API v3 does not accept a trailing slash: /api/v3/items/ returns 404. Calls count toward the same fair use limits as the other versions. The output is checked by its own validator.

v2

Since v4.68.0 API v2 functionality is available on qc.ebu.io (this uses the '2026-01' tagged XSD).

Automatically generated Swagger documentation for the qc.ebu.io/api/v2 implementation is at: qc.ebu.io/swagger-ui/

qc.ebu.io also provides a built-in API v2 validator.

v1

API version 1 is also still supported on qc.ebu.io. Like v2, it serves the Item versions made under the legacy data model.

Note that a trailing slash in API calls has been supported, but is not spec-conform. Since v4.107.2 for both APIs (v1 and v2) qc.ebu.io still reply to calls with a trailing slash, but respond with a HTTP 301 to make the caller aware of the correct API call format.

Example API v2 calls

https://qc.ebu.io/api/v2/items returns all published (and any withdrawn) QC Items, including the full details of the latest published or withdrawn version of each.

https://qc.ebu.io/api/v2/items/0001F returns a specific QC Item

https://qc.ebu.io/api/v2/items/0001F/versions/2.0 returns a specific version of a QC Item

Response formats

API v2 returns XML only, as defined by the catalogue-API XML Schema in github.com/ebu/qc. It serves the Item versions made under the legacy data model.

API v2 does not return JSON or CSV. A request for either (for example Accept: application/json or Accept: text/csv) is answered with 406 Not Acceptable. If you need JSON or CSV, use the non-official API v1 flag described below (?output-format=json or ?output-format=csv). The Export (CSV) button on the Items list uses that same API v1 flag.

API v2 has no path parameter: it lists QC Items, not Test Materials. Use the Test materials pages to browse folders such as plugfest material.

Fair use (rate limiting)

The API calls are limited in time & amount, across API v1, v2 and v3 together. If you go over the limit you get 429 Too Many Requests.

Responses carry an ETag. Send it back as If-None-Match and you get 304 Not Modified when nothing has changed. See the API documentation for more details.

Additional (non-standardised) functionality

See this swagger documentation: https://qc.ebu.io/management-api/swagger-ui/ for additional API functionality that is NOT part of the official API v2 implementation.

These extra functions are provided on qc.ebu.io on a best-effort basis. They are especially meant to help with the management (types, units, etc.) of the QC Items.

API v1 extension

Since 01 June 2023, a non-official flag has been available for API v1. This flag allows the export of all Items in CSV or JSON:

https://qc.ebu.io/api/v1/items?output-format=csv https://qc.ebu.io/api/v1/items?output-format=json

The allowed values are csv, json and xml; without the flag, XML is returned. Any other value returns an empty response.

An unknown parameter name (e.g. a misspelled 'outputformat') is ignored, so the default XML list is returned.

Feedback

To report any issues with or make suggestions for the data model or API use the issues tracker at: github.com/ebu/qc/issues

For any problems with or suggestions for this qc.ebu.io implementation, contact the EBU Technology & Innovation department at tech@ebu.ch.

Last updated 2 November 2026, 16:11 (UTC)