API operational
Core resource

Posts

Create one unified post with deterministic targets, platform options, safe retries, and asynchronous delivery.

8

Endpoint summary

All operations in this resource, with the minimum accepted key scope.

Method & endpointPurposeScope
GET/api/posts

List and filter posts

read
POST/api/posts

Create a draft, scheduled, queued, or immediate post

publish
GET/api/posts/{id}

Get aggregate and target status

read
PATCH/api/posts/{id}

Update a draft or scheduled post

publish
DELETE/api/posts/{id}

Cancel a draft or scheduled post

publish
POST/api/posts/{id}/publish

Publish a draft immediately

publish
GET/api/posts/{id}/logs

Read the sanitized delivery timeline

read
GET/api/posts/stats

Read post analytics snapshots

read
01

Create a post

Pass profile IDs for deterministic routing. A stable Idempotency-Key makes the logical request safe to retry for 72 hours.
Publish nowPostGate API
curl -X POST "https://postgate.studio/api/posts?profile_group_id=grp_acme123" \
  -H "Authorization: Bearer $POSTGATE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: launch-post-001" \
  -d '{
    "post": { "body": "Launch day. 🚀" },
    "profiles": ["pro_instagram123", "pro_linkedin456"],
    "media": ["https://cdn.example.com/launch.jpg"]
  }'
02

One endpoint, four publishing modes

draft: true saves for approval. An ISO 8601 scheduled_at publishes at a fixed instant. scheduled_at: "queue" selects the next recurring slot. With none of those fields, delivery starts immediately.
03

Add platform options without forking the request

Place provider-specific fields under post.options.<platform>. Use body_overrides when a target needs different copy while the rest of the post remains shared.
Platform-specific optionsPostGate API
{
  "post": {
    "body": "Watch the full launch story.",
    "options": {
      "pinterest": { "board_id": "12345", "title": "Launch story" },
      "linkedin": { "visibility": "PUBLIC" },
      "body_overrides": { "instagram": "Launch story ✨" }
    }
  },
  "profiles": ["pro_pinterest", "pro_linkedin", "pro_instagram"]
}
04

Read targets, not only the aggregate

The post status summarizes the request. The targets array is the operational truth for each destination: status, attempt count, next retry, error, platform ID, and permalink.
Partial is a successful terminal result
A partial post has at least one published target and at least one failed or skipped target. Preserve the successful permalinks and act only on failed destinations.