Skip to content

Studio API reference

Every Studio feature is also available over the REST API, so you can integrate Studio with external tools, automate content workflows, or build a custom interface.

This page is a curated reference. The canonical, machine-readable spec lives in the project’s OpenAPI files; if a request or response shape differs, the OpenAPI document is the source of truth.

All endpoints are relative to:

https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studio

Replace {org} with your organisation machine name and {project} with your project machine name.

Authenticate every request with a Bearer token:

Authorization: Bearer YOUR_API_TOKEN

Each endpoint requires both an account permission and a matching token scope:

Permission Required scope Operations
browse_studio studio:read List and read endpoints.
edit_studio studio:write Create and update endpoints.
delete_studio studio:delete Delete entries and media.
manage_studio studio:admin Environment and schema-cache management.

Most endpoints take a branch query parameter. When omitted, the API defaults to main — even if your project uses a different production branch in the Studio UI. Pass ?branch=develop to target another branch.

Method Endpoint Permission · Scope Description
GET /environments browse_studio · studio:read List environments for the project.
POST /environments manage_studio · studio:admin Create an environment from a branch.
DELETE /environments/{environment} manage_studio · studio:admin Delete an environment.
Method Endpoint Permission · Scope Description
GET /schema browse_studio · studio:read List all collection schemas.
GET /schema/{collection} browse_studio · studio:read Get the schema for one collection.
POST /schema/refresh manage_studio · studio:admin Invalidate the cached schema and re-extract.
Method Endpoint Permission · Scope Description
GET /collections browse_studio · studio:read List content collections.
GET /collections/{collection} browse_studio · studio:read List entries in a collection.
POST /collections/{collection} edit_studio · studio:write Create an entry.
GET /collections/{collection}/{slug} browse_studio · studio:read Get a single entry (parsed frontmatter + body).
PUT /collections/{collection}/{slug} edit_studio · studio:write Update an entry. Requires the current sha.
DELETE /collections/{collection}/{slug} delete_studio · studio:delete Delete an entry.
Method Endpoint Permission · Scope Description
GET /media browse_studio · studio:read List media files. Supports directory and recursive.
POST /media edit_studio · studio:write Upload a media file (base64-encoded content).
DELETE /media/{path} delete_studio · studio:delete Delete a media file.
Method Endpoint Permission · Scope Description
GET /branches browse_studio · studio:read List branches.
POST /branches edit_studio · studio:write Create a branch from another branch.
POST /merge edit_studio · studio:write Merge one branch into another.
GET /compare browse_studio · studio:read Compare two branches (changed files).
GET /commits browse_studio · studio:read List commits on a branch.
Method Endpoint Permission · Scope Description
GET /pulls browse_studio · studio:read List pull requests. Filter with state.
POST /pulls edit_studio · studio:write Create a pull request.
GET /pulls/{number} browse_studio · studio:read Get a single pull request.
POST /pulls/{number}/merge edit_studio · studio:write Merge a pull request.
Method Endpoint Permission · Scope Description
GET /deployments/latest browse_studio · studio:read Latest workflow run for the given branch.
GET /deployments/{runId} browse_studio · studio:read Workflow run details including jobs.
Method Endpoint Permission · Scope Description
GET /filetree browse_studio · studio:read Full source-file tree (cached 5 minutes per branch).
GET /file browse_studio · studio:read Read a single file by path.
Method Endpoint Permission · Scope Description
POST /route-patterns/detect edit_studio · studio:write Auto-detect route patterns from src/pages/.

List collections:

Terminal window
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studio/collections

Create an entry in the blog collection (note the data and body fields):

Terminal window
curl -X POST \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "hello-world",
"data": { "title": "Hello World", "draft": false },
"body": "Welcome to my first post.",
"branch": "main",
"message": "Add hello-world"
}' \
https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studio/collections/blog

List branches:

Terminal window
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studio/branches
  • Permissions — assign the Studio permissions that gate these endpoints
  • Content management — the UI built on top of the collections and entries endpoints