Update Page
PATCH
/api/v1/dashboard/content/pages/{page_id}Overview
Updates an existing content page. Only the fields included in the request body are updated; all other fields remain unchanged. You can update individual blocks by sending the full blocks array.
Authentication
info
Bearer authentication required - Pass your credentials as Authorization: Bearer <client_id>:<api_key>:<api_secret>.
Headers
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer <client_id>:<api_key>:<api_secret> |
Content-Type | string | Yes | application/json |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page_id | string (UUID) | Yes | The unique identifier of the page |
Request Body
All fields are optional. Only include the fields you want to update.
| Parameter | Type | Description |
|---|---|---|
slug | string | URL-friendly slug |
title | string | Page title |
description | string | Short page description |
blocks | array | Array of typed content blocks (replaces all existing blocks) |
template | string | Template name |
seo_title | string | Custom SEO title |
seo_description | string | Custom SEO meta description |
og_image_url | string | Open Graph image URL |
warning
Updating blocks replaces the entire block array. Always send the complete list of blocks you want the page to have.
Response
Returns the full updated page object (same shape as Create Page).
Example Request
- cURL
- Python
- JavaScript
curl -X PATCH "https://spideriq.ai/api/v1/dashboard/content/pages/e5f6a7b8-c9d0-1234-efab-567890123456" \
-H "Authorization: Bearer $CLIENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "About Our Team",
"seo_title": "About Our Team | SpiderIQ",
"blocks": [
{
"type": "hero",
"data": {
"heading": "Meet Our Team",
"subheading": "The people behind SpiderIQ."
}
},
{
"type": "text",
"data": {
"content": "We are a distributed team of engineers building the data layer for AI agents."
}
}
]
}'
import requests
page_id = "e5f6a7b8-c9d0-1234-efab-567890123456"
resp = requests.patch(
f"https://spideriq.ai/api/v1/dashboard/content/pages/{page_id}",
headers={"Authorization": f"Bearer {CLIENT_TOKEN}"},
json={
"title": "About Our Team",
"seo_title": "About Our Team | SpiderIQ",
"blocks": [
{
"type": "hero",
"data": {"heading": "Meet Our Team", "subheading": "The people behind SpiderIQ."},
},
{
"type": "text",
"data": {"content": "We are a distributed team of engineers."},
},
],
},
)
page = resp.json()
print(f"Updated: {page['title']}")
print(f"Blocks: {len(page['blocks'])}")
const pageId = "e5f6a7b8-c9d0-1234-efab-567890123456";
const resp = await fetch(
`https://spideriq.ai/api/v1/dashboard/content/pages/${pageId}`,
{
method: "PATCH",
headers: {
"Authorization": `Bearer ${CLIENT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "About Our Team",
seo_title: "About Our Team | SpiderIQ",
blocks: [
{
type: "hero",
data: { heading: "Meet Our Team", subheading: "The people behind SpiderIQ." },
},
{
type: "text",
data: { content: "We are a distributed team of engineers." },
},
],
}),
}
);
const page = await resp.json();
console.log(`Updated: ${page.title}`);
console.log(`Blocks: ${page.blocks.length}`);
Example Response
{
"id": "e5f6a7b8-c9d0-1234-efab-567890123456",
"slug": "about",
"title": "About Our Team",
"blocks": [
{
"type": "hero",
"data": {
"heading": "Meet Our Team",
"subheading": "The people behind SpiderIQ."
}
},
{
"type": "text",
"data": {
"content": "We are a distributed team of engineers building the data layer for AI agents."
}
}
],
"status": "draft",
"template": "default",
"sort_order": 0,
"updated_at": "2026-04-08T11:30:00Z",
"seo_title": "About Our Team | SpiderIQ",
"seo_description": "Learn about SpiderIQ and our mission to automate lead generation.",
"og_image_url": null
}
Status Codes
| Status Code | Meaning | Description |
|---|---|---|
| 200 | OK | Page updated successfully |
| 400 | Bad Request | Invalid field values or block format |
| 401 | Unauthorized | Invalid or missing Bearer token |
| 404 | Not Found | Page not found or belongs to another client |
| 409 | Conflict | Slug already in use by another page |