curl --request DELETE \
--url https://studio.weaverse.io/api/v1/content/versions/{versionId} \
--header 'Authorization: Bearer <token>'const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://studio.weaverse.io/api/v1/content/versions/{versionId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://studio.weaverse.io/api/v1/content/versions/{versionId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text){
"object": "version",
"version": {
"id": "clz8thm4c6e8g0i2k4m6o8q0",
"projectId": "clz7prj0a1b2c3d4e5f6g7h8",
"userId": null,
"snapshot": {
"theme": {
"colorPrimary": "#1e40af",
"bodyFontSize": 16
},
"previewHost": "my-store.myshopify.com",
"recentColors": [
"#1e40af"
],
"defaultLocale": "en-us"
},
"createdAt": "2026-10-08T09:30:00.000Z",
"publishAt": null,
"publishedAt": null,
"status": "CANCELLED"
}
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}Cancel a scheduled publication
Cancels a scheduled publication so nothing goes live when it would have fired. Pass projectId as a query parameter; no body and no type are needed, because the version is looked up in both the page and theme tables.
- A scheduled page draft returns to
ACTIVE, so it is again the editable draft head you can publish, reschedule or discard. - A scheduled history page version or theme version becomes
CANCELLED. - The cancel is serialized with the publisher. If the version already published (or is otherwise not
SCHEDULED), the cancel is refused with 409CONFLICTand the version is not marked cancelled.
Required scope: content:publish
curl --request DELETE \
--url https://studio.weaverse.io/api/v1/content/versions/{versionId} \
--header 'Authorization: Bearer <token>'const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://studio.weaverse.io/api/v1/content/versions/{versionId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://studio.weaverse.io/api/v1/content/versions/{versionId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text){
"object": "version",
"version": {
"id": "clz8thm4c6e8g0i2k4m6o8q0",
"projectId": "clz7prj0a1b2c3d4e5f6g7h8",
"userId": null,
"snapshot": {
"theme": {
"colorPrimary": "#1e40af",
"bodyFontSize": 16
},
"previewHost": "my-store.myshopify.com",
"recentColors": [
"#1e40af"
],
"defaultLocale": "en-us"
},
"createdAt": "2026-10-08T09:30:00.000Z",
"publishAt": null,
"publishedAt": null,
"status": "CANCELLED"
}
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}Authorizations
Bearer authentication: a shop API key (WEAVERSE_API_KEY), a scoped API key, a delegated MCP OAuth token, or (translation-unit routes only) a project-bound translation agent token. Scopes: content:read — Read projects, pages, theme settings, versions, drafts and translation units. content:write — Save drafts and make non-destructive edits (page items, metadata, SEO, assignments, languages, glossary). Never publishes or deletes. content:publish — Publish drafts, schedule/reschedule/cancel publications, restore versions, publish global sections. content:delete — Delete pages, global sections, languages, static keys, override reverts; required with project:manage for project deletion. project:manage — Create/copy/delete projects, settings, variants, hierarchy, backups, restore-as-new, previews, hostname policy. translations:read — Read translation units only (no general content access). translations:write — Apply translation units only; never mutates page content. A legacy unscoped API key keeps read/write/translation baseline access and every pre-scope endpoint, but never gains publish/delete/project-manage implicitly.
Path Parameters
Query Parameters
Response
Cancelled row
The response is of type object.
Was this page helpful?