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
CheckResultDefinitionon the Item. - An optional
AnalysisMethodon the Item (readout,measurementorreadout and measurement), left out when not specified. - Four flags on each Input and Output,
HasLocatorTemporal,HasLocatorSpatial,HasTrackandHasWrapperLocation, instead of the singleHasLocator. - No
Groupelement: an Input or Output with children is still anInputorOutput, with the children nested inside. - No
xsi:nil, and no empty elements: an optional element without a value (for example aUnit,ValueRangeorRemarks) 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
Typehas noDefaultValue,ValueRange,Unit,RepresentationorAliases. - 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.