Access the world's most comprehensive performing arts database programmatically
x-api-key headerAll requests must include a valid API key in the x-api-key header.
curl -H "x-api-key: sds_live_your_key_here" \ "https://pvuykwdvltjhxuslbqcv.supabase.co/functions/v1/api-gateway/works?genre=opera&limit=5"
Default: 1,000 requests per day per API key
Response codes:
200 — Success400 — Bad request (missing required parameters)401 — Invalid or missing API key404 — Resource not found429 — Rate limit exceeded500 — Server error/worksList all works with optional genre filter
?genre=opera&limit=20&offset=0/works/:slugGet a single work by slug
/recordingsList recordings with optional work filter
?work_id=uuid&limit=20&offset=0/recordings/:idGet a single recording by ID
/peopleList people with optional role type filter
?role_type=performer&limit=20&offset=0/people/:slugGet a single person by slug
/eventsList upcoming events with optional venue filter
?venue=Met&limit=20&offset=0/availabilityGet availability for a work or recording
?work_id=uuid or ?recording_id=uuid/searchSearch works by title or composer
?q=tosca&limit=10JavaScript / TypeScript
const response = await fetch(
"https://pvuykwdvltjhxuslbqcv.supabase.co/functions/v1/api-gateway/works",
{
headers: {
"x-api-key": process.env.SDS_API_KEY,
},
}
);
const { data } = await response.json();
console.log(data);Python
import requests
response = requests.get(
"https://pvuykwdvltjhxuslbqcv.supabase.co/functions/v1/api-gateway/works",
headers={"x-api-key": os.environ["SDS_API_KEY"]},
params={"genre": "ballet", "limit": 10},
)
data = response.json()["data"]All responses return JSON with a data field for successful requests or an error field for errors.
// Success
{
"data": [
{
"id": "uuid",
"title": "La Bohème",
"slug": "la-boheme",
"genre": "opera",
"composer_author": "Giacomo Puccini",
"premiered_year": 1896
}
]
}
// Error
{
"error": "Rate limit exceeded"
}