The Content API lets you manage your content programmatically. Use a content:read PAT for published reads, or a content:write PAT when an automation needs to create pages, update posts, inspect drafts, or archive nodes.
Set BULKHEAD_SITE_URL to your workspace URL and BULKHEAD_API_TOKEN to a scoped token from HQ → API Keys. The create, update, and archive examples require content:write.
List Content
curl -sS "$BULKHEAD_SITE_URL/api/v1/nodes?limit=20&offset=0" \
-H "Authorization: Bearer $BULKHEAD_API_TOKEN"
Returns a paginated list of content nodes. content:read keys see published nodes; content:write keys can filter draft and published workspace content by status or type.
Create Content
curl -sS -X POST "$BULKHEAD_SITE_URL/api/v1/nodes" \
-H "Authorization: Bearer $BULKHEAD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"domain_id": "domain-1",
"title": "Shipping Notes",
"slug": "shipping-notes",
"node_type": "page",
"body": "<p>Use one concrete example per section.</p>",
"status": "published"
}'
Update Content
curl -sS -X PATCH "$BULKHEAD_SITE_URL/api/v1/nodes" \
-H "Authorization: Bearer $BULKHEAD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "node-1",
"title": "Shipping Notes for Editors",
"body": "<p>Add the reviewed request and response before publishing.</p>"
}'
Archive Content
curl -sS -X DELETE "$BULKHEAD_SITE_URL/api/v1/nodes" \
-H "Authorization: Bearer $BULKHEAD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "node-1"
}'
Content is soft-deleted (archived), not permanently removed. You can restore archived content from the Library.
Response Format
List responses return nodes and pagination. Create and update responses return the saved node and whether compile work was enqueued. Archive responses return ok and the archived node id.
{
"node": {
"id": "node-1",
"slug": "shipping-notes",
"title": "Shipping Notes",
"status": "published"
},
"recompile_enqueued": true
}