Create draft
Create a text-only draft post. The draft is saved but not queued for publishing. To schedule or publish it, add a publish_at field or call the schedule/publish endpoints later.
Create a draft
POST /api/v1/posts creates a new post in the workspace. Without social_account_ids or publish_at, the post is saved as a draft.
curl -X POST "$SOCIALSPOOL_BASE_URL/api/v1/posts" \
-H "Authorization: Bearer $SOCIALSPOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"Hello from the SocialSpool API"}'Successful response shape:
{
"post": {
"id": "post_01HZ...",
"content": "Hello from the SocialSpool API",
"status": "draft",
"created_at": "2026-06-01T12:00:00Z",
"updated_at": "2026-06-01T12:00:00Z"
}
}Creating a draft with targets
You can optionally specify social_account_ids at creation time. The post remains a draft; the targets are recorded but nothing is queued until a publish_at is provided.
curl -X POST "$SOCIALSPOOL_BASE_URL/api/v1/posts" \
-H "Authorization: Bearer $SOCIALSPOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Draft with targets attached",
"social_account_ids": ["acct_01HZ..."]
}'Request body fields
content(string, required): the post body. Maximum 5000 characters.social_account_ids(string[], optional): account ids to target. Retrieved fromGET /api/v1/social-accounts.