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.
Base URL
Section titled “Base URL”All endpoints are relative to:
https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studioReplace {org} with your organisation machine name and {project} with
your project machine name.
Authentication
Section titled “Authentication”Authenticate every request with a Bearer token:
Authorization: Bearer YOUR_API_TOKENEach 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. |
The branch parameter
Section titled “The branch parameter”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.
Environments
Section titled “Environments”| 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. |
Schemas
Section titled “Schemas”| 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. |
Collections and entries
Section titled “Collections and entries”| 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. |
Branches and Git
Section titled “Branches and Git”| 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. |
Pull requests
Section titled “Pull requests”| 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. |
Deployments
Section titled “Deployments”| 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. |
Route patterns
Section titled “Route patterns”| Method | Endpoint | Permission · Scope | Description |
|---|---|---|---|
| POST | /route-patterns/detect |
edit_studio · studio:write |
Auto-detect route patterns from src/pages/. |
Examples
Section titled “Examples”List collections:
curl -H "Authorization: Bearer YOUR_API_TOKEN" \ https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studio/collectionsCreate an entry in the blog collection (note the data and body
fields):
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/blogList branches:
curl -H "Authorization: Bearer YOUR_API_TOKEN" \ https://dashboard.quantcdn.io/api/v2/organizations/{org}/projects/{project}/studio/branchesNext steps
Section titled “Next steps”- Permissions — assign the Studio permissions that gate these endpoints
- Content management — the UI built on top of the collections and entries endpoints
