Create Page
POST
/api/v1/dashboard/content/pagesOverview
Creates a new content page for the authenticated client. Pages use a block-based content model (hero, text, CTA, FAQ, pricing, features, etc.) and are created in draft status by default. Use the Publish Page endpoint to make a page public.
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 |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | URL-friendly slug (must be unique per client) |
title | string | Yes | Page title |
description | string | No | Short page description |
blocks | array | No | Array of typed content blocks (see below) |
template | string | No | Template to render the page (e.g., default, landing, blank) |
seo_title | string | No | Custom SEO title |
seo_description | string | No | Custom SEO meta description |
og_image_url | string | No | Open Graph image URL |
Block Types
Each block in the blocks array has a type and a data object:
| Block Type | Description |
|---|---|
hero | Hero section with heading, subheading, CTA |
text | Rich text content |
cta | Call-to-action button/section |
faq | Frequently asked questions (array of Q&A) |
pricing | Pricing plans grid |
features | Feature list or grid |
image | Image with caption |
video | Embedded video |
testimonials | Customer testimonial carousel |
Response
idstring (UUID)Unique page identifier
slugstringURL-friendly slug
titlestringPage title
blocksarrayArray of typed content blocks
statusstringPage status (draft for new pages)
templatestringTemplate used to render the page
sort_orderintegerSort order for page listing
created_atstringISO 8601 creation timestamp
Example Request
- cURL
- Python
- JavaScript
curl -X POST "https://spideriq.ai/api/v1/dashboard/content/pages" \
-H "Authorization: Bearer $CLIENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "about",
"title": "About Us",
"template": "default",
"blocks": [
{
"type": "hero",
"data": {
"heading": "About Our Company",
"subheading": "We help businesses find and connect with their ideal customers.",
"cta_text": "Get Started",
"cta_url": "/signup"
}
},
{
"type": "text",
"data": {
"content": "Founded in 2024, we have helped over 1,000 businesses scale their outreach."
}
},
{
"type": "features",
"data": {
"items": [
{ "title": "AI-Powered", "description": "Smart lead scoring and analysis" },
{ "title": "Scalable", "description": "Process thousands of leads per hour" }
]
}
}
],
"seo_title": "About Us | SpiderIQ",
"seo_description": "Learn about SpiderIQ and our mission to automate lead generation."
}'
import requests
resp = requests.post(
"https://spideriq.ai/api/v1/dashboard/content/pages",
headers={"Authorization": f"Bearer {CLIENT_TOKEN}"},
json={
"slug": "about",
"title": "About Us",
"template": "default",
"blocks": [
{
"type": "hero",
"data": {
"heading": "About Our Company",
"subheading": "We help businesses find and connect with their ideal customers.",
"cta_text": "Get Started",
"cta_url": "/signup",
},
},
{
"type": "text",
"data": {
"content": "Founded in 2024, we have helped over 1,000 businesses scale their outreach."
},
},
],
"seo_title": "About Us | SpiderIQ",
"seo_description": "Learn about SpiderIQ and our mission.",
},
)
page = resp.json()
print(f"Created page: {page['id']}")
print(f"Blocks: {len(page['blocks'])}")
const resp = await fetch(
"https://spideriq.ai/api/v1/dashboard/content/pages",
{
method: "POST",
headers: {
"Authorization": `Bearer ${CLIENT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
slug: "about",
title: "About Us",
template: "default",
blocks: [
{
type: "hero",
data: {
heading: "About Our Company",
subheading: "We help businesses find and connect with their ideal customers.",
cta_text: "Get Started",
cta_url: "/signup",
},
},
{
type: "text",
data: {
content: "Founded in 2024, we have helped over 1,000 businesses scale their outreach.",
},
},
],
seo_title: "About Us | SpiderIQ",
seo_description: "Learn about SpiderIQ and our mission.",
}),
}
);
const page = await resp.json();
console.log(`Created page: ${page.id}`);
console.log(`Blocks: ${page.blocks.length}`);
Example Response
{
"id": "e5f6a7b8-c9d0-1234-efab-567890123456",
"slug": "about",
"title": "About Us",
"blocks": [
{
"type": "hero",
"data": {
"heading": "About Our Company",
"subheading": "We help businesses find and connect with their ideal customers.",
"cta_text": "Get Started",
"cta_url": "/signup"
}
},
{
"type": "text",
"data": {
"content": "Founded in 2024, we have helped over 1,000 businesses scale their outreach."
}
},
{
"type": "features",
"data": {
"items": [
{ "title": "AI-Powered", "description": "Smart lead scoring and analysis" },
{ "title": "Scalable", "description": "Process thousands of leads per hour" }
]
}
}
],
"status": "draft",
"template": "default",
"sort_order": 0,
"published_at": null,
"updated_at": "2026-04-08T10:00:00Z",
"seo_title": "About Us | SpiderIQ",
"seo_description": "Learn about SpiderIQ and our mission to automate lead generation.",
"og_image_url": null
}
Status Codes
| Status Code | Meaning | Description |
|---|---|---|
| 201 | Created | Page created successfully |
| 400 | Bad Request | Missing required fields or invalid block format |
| 401 | Unauthorized | Invalid or missing Bearer token |
| 409 | Conflict | A page with this slug already exists |