Skip to content

Publishing now

Leave out scheduledAt and the Post publishes now.

Terminal window
curl https://app.pubrivo.com/api/posts \
-H "Authorization: Bearer $PUBRIVO_KEY" \
-H "Content-Type: application/json" \
-d '{ "text": "Fresh out of the oven.", "channelIds": ["5b0b6c1e-9f4a-4a57-8d1e-2c3f4a5b6c7d"] }'

The response is a 201 with each Variant queued as scheduled. The worker prepares its media and starts publishing. Read the Post again with GET /api/posts/{id} to see each one reach published, with its permalink, or failed, with its reason.

Publishing now skips the 15-minute window in which someone could catch a mistake, so it is a permission of its own: posts:publish.

  • An API key has it if Also allow publishing immediately was ticked when it was created.
  • An Authorized app has it if you allowed publishing immediately when you approved it.

Without it, the request is refused before anything is made:

{
"error": {
"code": "insufficient_scope",
"message": "Publishing now needs posts:publish. Send scheduledAt to schedule instead."
}
}

Trying a failed Variant again — POST /api/variants/{id}/retry — publishes now too, and needs the same permission.

The same creation request sent from the same credential within 10 minutes comes back as the first Post, with a 200, deduplicated: true, existingPostId and deduplicationReason: "identical_request". A new Post returns 201 and deduplicated: false.

Matching includes text, Channels, placements, ordered media asset IDs or URLs, trimmed alt text, TikTok and YouTube options, and the scheduled instant (or both requests publishing now). Channel order and object key order do not matter; an omitted placement means feed. A fully cancelled Post is not matched.

Changing any of these creates a new request, subject to the usual validation. Uploads belong to one Post, so reusing an attached asset with different text, time or options is refused with media_unavailable. Content matching does not edit the existing Post. Pubrivo currently has no caller-supplied idempotency key.