PostifyPostify Docs

Create a post

Creates a post with one variant per target channel. Exactly one mode is required: `draft: true` (save only), `scheduled_at` (future publish), or `publish_now: true` (immediate — requires the workspace's dangerous-operations toggle for API callers). Send an `Idempotency-Key` header to make retries safe.

POST
/v1/posts

Creates a post with one variant per target channel. Exactly one mode is required: draft: true (save only), scheduled_at (future publish), or publish_now: true (immediate — requires the workspace's dangerous-operations toggle for API callers). Send an Idempotency-Key header to make retries safe.

Authorization

AuthorizationBearer <token>

Organization API key as a Bearer token (postify_live_…).

In: header

Header Parameters

Idempotency-Key?string

Client-chosen key (1–255 printable ASCII chars, e.g. a UUID) making this POST safely retryable: within 24h, the same key + same body replays the original response with Idempotency-Replayed: true; the same key with a DIFFERENT body is rejected with 422 idempotency_key_reused.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/posts" \  -H "Content-Type: application/json" \  -d '{    "variants": [      {        "channel_id": "string",        "body": "string"      }    ]  }'
{  "id": "string",  "status": "draft",  "type": "single",  "title": "string",  "body": "string",  "scheduled_at": "2019-08-24T14:15:22Z",  "published_at": "2019-08-24T14:15:22Z",  "created_at": "2019-08-24T14:15:22Z",  "variants": [    {      "id": "string",      "channel_id": "string",      "body": "string",      "media": [        {          "url": "http://example.com",          "type": "image",          "alt": "string"        }      ]    }  ],  "deliveries": [    {      "channel_id": "string",      "stage": "queued",      "external_id": "string",      "error": "string"    }  ]}