Write in your voice
Send a prompt and Postel writes the post in your own voice and saves it as a draft.
POST /v1/posts/generate uses your workspace's voice profile to turn a prompt, like an idea, rough notes or the gist of an article, into a post that sounds like you. It saves the result as a draft, which you can then schedule or publish like any other post.
| Field | Type | Description |
|---|---|---|
prompt | string | Required. What the post should be about. 1 to 5,000 characters. |
platform | string | Required. x, linkedin, bluesky or mastodon. |
thread | boolean | Write a thread instead of one post. X only. |
voiceProfileId | string | Write in a specific voice profile from your workspace. Leave it out to write in your own voice. |
It answers 201 with the new draft, in the same shape as every post.
curl https://www.postel.app/api/v1/posts/generate \
-H "Authorization: Bearer $POSTEL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: weekly-recap-2026-w45" \
-d '{
"platform": "linkedin",
"prompt": "This week we cut onboarding from 9 steps to 4. Signups that finish onboarding went from 31% to 58%."
}'Timing
Writing takes 5 to 30 seconds, and the request stays open until the draft is saved. Set your HTTP client's timeout to at least 60 seconds.
Postel writes up to 3 posts at once per workspace through the API. A fourth request while three are running gets 429 rate_limited with Retry-After: 30. See Rate limits.
Credits
Each post uses 1 AI credit from the workspace. Writing works on every plan, including free.
When the credits run out, Postel keeps writing in Lite mode up to a daily limit. After that, requests get 402 out_of_credits, and error says when writing works again. If writing fails, the response is 502 generate_failed and nothing is charged.
A workspace that uses its own AI provider key in Postel spends no credits.
Retries
Send an Idempotency-Key. If your request times out and you retry with the same key, you get the first draft back instead of a second draft and a second credit. Use a key that is unique per post you want, such as the date for a daily recap. A constant key would return the same draft for 24 hours.
Voice profiles
A workspace can have more than one voice profile, for example one per founder. The REST API doesn't list them. To find a profile's id, use the get-x-profiles tool of the MCP server.