Skip to main content

Create Post

POST/api/v1/dashboard/content/posts

Overview

Creates a new blog post for the authenticated client. Posts are created in draft status by default. Use the Publish Post endpoint to make a post public.

Authentication

info

Bearer authentication required - Pass your credentials as Authorization: Bearer <client_id>:<api_key>:<api_secret>. These are the same credentials used for all SpiderIQ API calls.

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer <client_id>:<api_key>:<api_secret>
Content-TypestringYesapplication/json

Request Body

ParameterTypeRequiredDescription
slugstringYesURL-friendly slug (must be unique per client)
titlestringYesPost title
bodyobjectYesPost content as Tiptap JSON
excerptstringNoShort excerpt / summary
cover_image_urlstringNoURL of the cover image
author_namestringNoAuthor display name (creates author if not found)
author_idstring (UUID)NoExplicit author ID (takes precedence over author_name)
tagsstring[]NoArray of tag names (creates tags if not found)
tag_idsstring[]NoArray of existing tag UUIDs
category_idsstring[]NoArray of existing category UUIDs
is_featuredbooleanNoWhether the post is featured (default: false)
featured_image_altstringNoAlt text for the cover image
tldr_summarystringNoOptional TL;DR summary
related_post_idsstring[]NoArray of related post UUIDs
seo_titlestringNoCustom SEO title
seo_descriptionstringNoCustom SEO meta description

Response

idstring (UUID)

Unique post identifier

slugstring

URL-friendly slug

titlestring

Post title

bodyobject

Post content as Tiptap JSON

excerptstring | null

Short excerpt / summary

statusstring

Post status (draft for new posts)

authorobject

Author object with id, full_name, slug, avatar_url, bio

tagsstring[]

Array of tag names

categoriesarray

Array of category objects with id, name, slug

is_featuredboolean

Whether the post is featured

created_atstring

ISO 8601 creation timestamp

Example Request

curl -X POST "https://spideriq.ai/api/v1/dashboard/content/posts" \
-H "Authorization: Bearer $CLIENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "getting-started-with-spideriq",
"title": "Getting Started with SpiderIQ",
"body": {
"type": "doc",
"content": [
{
"type": "heading",
"attrs": { "level": 2 },
"content": [{ "type": "text", "text": "Introduction" }]
},
{
"type": "paragraph",
"content": [{ "type": "text", "text": "SpiderIQ makes web scraping and lead generation easy." }]
}
]
},
"excerpt": "A beginner guide to SpiderIQ APIs.",
"tags": ["getting-started", "tutorial"],
"author_name": "Martin Shein",
"is_featured": true,
"seo_title": "Getting Started with SpiderIQ | Blog",
"seo_description": "Learn how to use SpiderIQ for web scraping and lead generation."
}'

Example Response

{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"slug": "getting-started-with-spideriq",
"title": "Getting Started with SpiderIQ",
"body": {
"type": "doc",
"content": [
{
"type": "heading",
"attrs": { "level": 2 },
"content": [{ "type": "text", "text": "Introduction" }]
},
{
"type": "paragraph",
"content": [{ "type": "text", "text": "SpiderIQ makes web scraping and lead generation easy." }]
}
]
},
"excerpt": "A beginner guide to SpiderIQ APIs.",
"tldr_summary": null,
"cover_image_url": null,
"featured_image_alt": null,
"status": "draft",
"published_at": null,
"author": {
"id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"full_name": "Martin Shein",
"slug": "martin-shein",
"avatar_url": "https://cdn.spideriq.ai/authors/martin.webp",
"bio": "Founder of SpiderIQ."
},
"tags": ["getting-started", "tutorial"],
"categories": [],
"related_posts": [],
"reading_time": 1,
"view_count": 0,
"is_featured": true,
"seo_title": "Getting Started with SpiderIQ | Blog",
"seo_description": "Learn how to use SpiderIQ for web scraping and lead generation.",
"og_image_url": null,
"created_at": "2026-04-08T10:00:00Z",
"updated_at": "2026-04-08T10:00:00Z"
}

Status Codes

Status CodeMeaningDescription
201CreatedPost created successfully
400Bad RequestMissing required fields or invalid body format
401UnauthorizedInvalid or missing Bearer token
409ConflictA post with this slug already exists