Social guides
Guides

Drafts.

Save half a thought without shipping it. Draft posts are author-only — stripped from feeds, lists, and getById for everyone except the author. Promote by PATCHing { status: 'published' }, and the post_count counter is bumped at the transition.


1

Save a draft

Use the existing post-create endpoint with status: "draft". Body / title / url content rules are the same as a published post — at least one of the three must be non-empty.

bash
curl -X POST \
  -H "Authorization: Bearer pcft_live_..." \
  -H "Content-Type: application/json" \
  -d '{"actor_id":"<actorId>","body":"WIP — half a thought…","status":"draft"}' \
  "https://social.productcraft.co/v1/communities/<communityId>/posts"
json
{
  "id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
  "community_id": "...",
  "actor_id": "...",
  "kind": "text",
  "title": null,
  "body": "WIP — half a thought…",
  "url": null,
  "attributes": {},
  "visibility": "public",
  "status": "draft",
  "reaction_counts": {},
  "comment_count": 0,
  "expires_at": null,
  "pinned": false,
  "created_at": "2026-05-11T19:50:00.000Z",
  "updated_at": "2026-05-11T19:50:00.000Z"
}

2

List drafts

Per-actor, cursor-paginated newest-first. Drafts do not appear in the regular post list, the actor feed, or getById for non-author callers — you have to come here for them.

The PAK lane has no end-user principal, so the customer's backend is responsible for ensuring the actorId in the path matches the end-user behind the request before exposing the response.

bash
curl -H "Authorization: Bearer pcft_live_..." \
  "https://social.productcraft.co/v1/communities/<communityId>/actors/<actorId>/drafts?limit=20"

3

Edit the draft

PATCH the post like any other — body / title / url / attributes / visibility / pinned all editable. While the status stays draft, the post is still author-only.

bash
curl -X PATCH \
  -H "Authorization: Bearer pcft_live_..." \
  -H "Content-Type: application/json" \
  -d '{"body":"Now with a real point."}' \
  "https://social.productcraft.co/v1/communities/<communityId>/posts/<postId>"

4

Publish

Same PATCH endpoint with {"status":"published"}. The post immediately becomes visible per its visibility setting, lands in the feeds of people who follow the author, and the post_count counter is bumped by 1.

bash
curl -X PATCH \
  -H "Authorization: Bearer pcft_live_..." \
  -H "Content-Type: application/json" \
  -d '{"status":"published"}' \
  "https://social.productcraft.co/v1/communities/<communityId>/posts/<postId>"

Behaviour

What to expect

  • Drafts are author-only. The post list, feed, and getById all return 404 Post not found to anyone else — even with the post id and a valid PAK.
  • Counter accounting follows publish state. Creating a draft does NOT bump post_count. Promoting via PATCH does. Going back to draft (rare, but supported) decrements again.
  • Notifications still suppressed. No follow / mention / reaction emits whilestatus=draft — the post is invisible, so there's nothing to notify about.
  • No expiry. Drafts have no TTL. They live until the author publishes or deletes them.