Use the Store for licensed catalog, then jump into AI Studio when the brief needs a custom melody, voice, or alternate take.
Grab a free starter kit — 50 sounds, no card.
Drum hits, one-shots, a few loops. Open in any DAW.GraphQL gateway today at /api/graphql. NestJS subgraph in preview at api.sonichaos.io. REST stubs and mock keys land behind the same auth in Q3 2026.
The Apollo gateway at /api/graphql is the same endpoint the browser uses. The NestJS subgraph at api.sonichaos.io is a preview — schema may shift before GA.
query ListKits {
kits(limit: 12) {
items {
id
slug
title
family
tierPrice
coverUrl
bpmRange
keyTags
}
}
}query KitDetail($slug: String!) {
kit(slug: $slug) {
id
title
producer { name city }
license { kind perpetual }
files {
kind
sampleRate
bitDepth
count
}
stems { name lufs }
}
}query Search($q: String!) {
search(text: $q, types: [TRACK, KIT], limit: 30) {
items {
__typename
... on Track { id title bpm key durationMs }
... on Kit { id title family tierPrice }
score
}
}
}query Similar($id: ID!) {
track(id: $id) {
id
title
similar(k: 10) {
id
title
score
coverUrl
}
}
}API keys live at /account/api-keys (mock today, real in Q3).
Pass the key in Authorization: Bearer scs_<hash>.
Keys are scoped per workspace. Rotate from the dashboard; we keep a SHA-256 prefix only.
The browser never talks to the NestJS subgraph; the Apollo gateway sits in front.
# Apollo gateway (live)
curl -X POST http://localhost:3000/api/graphql \
-H 'content-type: application/json' \
-d '{"query":"{ kits(limit:3){items{id title family}} }"}'
# NestJS subgraph (preview)
curl -X POST https://api.sonichaos.io/graphql \
-H 'authorization: Bearer $SONICHAOS_KEY' \
-H 'content-type: application/json' \
-d '{"query":"{ kit(slug:\"berlin-strings-vol-1\"){title}}"}'Free / preview
1 / s
1,000
1
Creator
5 / s
10,000
2
Pro
20 / s
200,000
8
Studio
100 / s
2,000,000
32