Build on your music catalog.
//SCHEMA ingests DDEX deliveries — in any order, over SFTP or the API — and serves the result as one catalog you can query, stream and edit through a single GraphQL endpoint.
Tutorials
Learn by doing
Start from nothing and finish with a working result: your first query, then a release built and published end to end.
How-to guidesGet a task done
Focused recipes: paginate a catalog, stream a track, upload a master, deliver a DDEX message, rotate a key.
ReferenceLook it up
Every query, mutation, object, field and argument — with the scope it needs and a request you can run.
LearnUnderstand the model
Why catalogs are isolated, how out-of-order delivery converges, and what "null is not Worldwide" means.
Popular
One request
query {
releases(limit: 3) {
upc
title
availableFrom
}
}curl https://api.schema.fm/graphql \
-H "Authorization: Bearer $SCHEMA_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'EOF'
{
"query": "query {\n releases(limit: 3) {\n upc\n title\n availableFrom\n }\n}"
}
EOFconst res = await fetch("https://api.schema.fm/graphql", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SCHEMA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
query: `
query {
releases(limit: 3) {
upc
title
availableFrom
}
}
`,
}),
});
const { data, errors } = await res.json();