posts:write to create drafts and posts:read to retrieve them. The Zapier connection test also needs accounts:read. Keep the key in your client’s private credential store, never in feed data or shared workflow fields.
Choose a stable source key
Build one key from a fixed feed prefix and the item’s immutable GUID, for examplerss-draft:product-news:article-42. If the feed has no GUID, use its stable article URL. The full key must be a nonblank string of at most 200 characters. If your identifiers are longer, use a deterministic digest of the feed identity and GUID rather than truncating away uniqueness.
Keep that key for every retry of the same item. Do not use the current time, a random value, or a new key merely because a response was lost. A new article needs its own identity. Final content should be the article title, a line break, and its link.
Create through the API
SendPOST https://postonce.to/api/public/v1/drafts with your private Bearer credential, JSON content, and the source key in the Idempotency-Key header. The header is optional in the API but should always be supplied for this automated workflow.
Example request body:
data.id from the creation response and store it with the source item. A successful first create returns HTTP 201 and a draft whose status is inbox. Retrieve that exact draft with GET https://postonce.to/api/public/v1/drafts/{id}, substituting the returned ID. Do not guess an ID or create another draft just to inspect the result.
Review it in PostOnce drafts. If adding optional destinations through the API later, use selected_account_ids with actual connected account UUIDs. Saving those selections still does not publish.
Use native Zapier actions
The private PostOnce invitation enables the native app in your Zapier account. It is not a public-directory approval or an importable Zap template.- Choose RSS by Zapier → New Item in Feed, set your feed URL, and test the trigger to load an actual item.
- Add PostOnce → Create Draft. Save your API key in the private PostOnce connection’s API Key field.
- Map Source Event Key to
rss-draft:your-feed:followed by the item’s GUID, or a stable article URL when no GUID exists. Keep the prefix fixed and the complete string within 200 characters. - Map Final Content to the title, a line break, and the article link. Leave destination accounts and media empty for this first draft.
- Test the action and inspect its returned
idandinboxstatus. Optionally add Find Draft by ID, mapping the actual ID from Create Draft. Native Zapier actions expose the resource fields directly, while raw REST responses wrap them indata.
Retry without duplicating
Reuse the same key, credential, and unchanged JSON body. A matching replay returns the saved result. Deduplication is scoped to the PostOnce profile, API-key identity, endpoint, method, and key; rotating the API key changes that scope. Inspect earlier drafts before replaying old events with a new credential.409 idempotency_key_reused: the key was used with different content. Inspect the earlier result and reconcile the change instead of inventing a fresh key to bypass the conflict.409 idempotency_request_in_progress: an earlier request is still being processed. Keep its identity while investigating or retrying; do not issue a competing write with a new key.- A timeout or lost response is not proof that creation failed. Check a known returned ID, or retry with the original identity and body.
401: reconnect or replace the invalid credential.403: check the required scopes and plan entitlement. Credential replacement does not preserve the old key’s deduplication scope.
Choose accounts and media for later actions
GET https://postonce.to/api/public/v1/accounts requires accounts:read and returns accounts in data. Each account includes id, platform, media_requirements, and capabilities (which can be null). There is no separate capabilities endpoint in this API.
An empty account list is a valid authenticated response and does not prevent creating the text-only draft above. Do not treat the first social account as the identity of the connected PostOnce profile. Use the returned account IDs and capability booleans when selecting destinations later; missing or null capabilities do not establish support.
A public media URL must meet the selected platform’s requirements. For a local file, use the documented media upload operations, actually upload the bytes to the signed URL, then resolve the asset’s
public_url. Do not send the PostOnce Bearer key to a signed storage URL or treat a local path as uploaded media. See the Media API reference in the sidebar. Publishing is a separate action; a queued post is still waiting for delivery.