Skip to content
postpeg
HTTP today · app coming soon

Social media posting from Make

Publish and schedule posts on 10 social networks from Make scenarios with HTTP → Make a request: exact settings, JSON escaping, idempotency and example scenarios.

What you can automate

  • Publish every new RSS item to X and LinkedIn

    1. 1RSS: Watch RSS feed items
    2. 2JSON: Transform to JSON
    3. 3HTTP: Make a request
  • Schedule a Google Sheets row as a post

    Send the date column as scheduled_at in ISO 8601.

    1. 1Google Sheets: Watch New Rows
    2. 2HTTP: Make a request (POST /v1/posts)
    3. 3Google Sheets: Update a Row with the post id
  • Post new Shopify products to Instagram

    Instagram needs media: map the product image URL into media.

    1. 1Shopify: Watch Products
    2. 2HTTP: Make a request (POST /v1/posts with media)
  • Alert Slack when a post fails

    Poll status=partially_published the same way to catch posts that failed on some accounts.

    1. 1Schedule: every 15 minutes
    2. 2HTTP: Make a request (GET /v1/posts?status=failed)
    3. 3Iterator over data, filtered to ids not in a data store
    4. 4Slack: Create a Message
  • Reply to comments with an AI step

    Keep a person in the loop: replies are public.

    1. 1HTTP: GET /v1/posts/{id}/comments
    2. 2OpenAI: draft a reply
    3. 3Slack approval, then HTTP: POST /v1/posts/{id}/comments

Set it up with the HTTP → Make a request

HTTP is one of Make’s built-in apps. Make’s docs for this step.

  1. Create an API key

    Start the trial, connect the accounts you want to post to, and create a key under API keys. It’s shown once. Store it in Make’s credentials rather than typing it into every step.

  2. Find your account ids

    Add a HTTP → Make a request step and run it once. Copy the id of each account from data; they stay the same even when an account is reconnected.

    List accounts: GET /v1/accounts
    FieldValue
    URLhttps://api.postpeg.com/v1/accounts
    MethodGET
    HeadersAuthorization: Bearer pp_live_your_key
    Parse ResponseYes
  3. Publish or schedule a post

    Add another HTTP → Make a request step. Add "scheduled_at" (ISO 8601, e.g. 2026-10-01T09:00:00Z) to schedule instead of publishing now, and "media": [{ "url": "https://…", "type": "image" }] for images or video; Instagram, TikTok, YouTube and Pinterest need media.

    Create a post: POST /v1/posts
    FieldValue
    URLhttps://api.postpeg.com/v1/posts
    MethodPOST
    HeadersAuthorization: Bearer pp_live_your_key Idempotency-Key: (map the item’s ID or URL)
    Body Content Typeapplication/json
    Body ContentThe body below
    Parse ResponseYes
    Body
    {
      "account_ids": ["acc_mfz1x0k27d4q8vbn3c5s0a1p9e", "acc_mfz1y4r9h2c6t0wqk8e3m7ld5f"],
      "content": {{2.json}}
    }
  4. Check each account’s status

    The response is the post, with one target per account. Publishing happens in the background within seconds; GET /v1/posts/{id} later shows each target published with its url, or failed with the error.

    Response · 201 Created
    {
      "id": "post_mfz2k3v8q1w5e9r4t7y0u2i6o3",
      "content": "Scheduled posts now retry on their own when a network has a bad minute. Changelog: https://example.com/changelog #buildinpublic",
      "media": [
        {
          "url": "https://example.com/changelog.png",
          "type": "image"
        }
      ],
      "platform_options": {},
      "status": "scheduled",
      "scheduled_at": "2026-10-01T09:00:00.000Z",
      "targets": [
        {
          "account_id": "acc_mfz1x0k27d4q8vbn3c5s0a1p9e",
          "platform": "x",
          "status": "pending",
          "platform_post_id": null,
          "url": null,
          "error": null,
          "attempts": 0,
          "published_at": null
        },
        {
          "account_id": "acc_mfz1y4r9h2c6t0wqk8e3m7ld5f",
          "platform": "linkedin",
          "status": "pending",
          "platform_post_id": null,
          "url": null,
          "error": null,
          "attempts": 0,
          "published_at": null
        },
        {
          "account_id": "acc_mfz20b5n1s8f4j7xv2p9r6hu1c",
          "platform": "instagram",
          "status": "pending",
          "platform_post_id": null,
          "url": null,
          "error": null,
          "attempts": 0,
          "published_at": null
        }
      ],
      "created_at": "2026-09-24T14:02:11.418Z"
    }

The postpeg app for Make

Coming soon

A native Make app with actions for publishing, accounts, analytics and comments is built and waiting to be published. It isn’t installable yet. When it is, you’ll add it with: Add a postpeg module to a scenario and create a connection with your key.. The HTTP setup above keeps working either way.

Pagination, retries and idempotency

  • Pagination. List endpoints return { data, next_cursor }; map data into an Iterator. One request is one page (up to limit=100 posts). For more, request again with cursor set to the previous next_cursor until it is empty.
  • Idempotency. Send an Idempotency-Key header on POST /v1/posts, comment replies and messages, built from something unique to the item (up to 255 characters). If Make retries the step, the same key returns the original post with 200 instead of publishing twice.
  • Retries. postpeg retries a failed network in the background (up to 5 attempts), so don’t re-post from the workflow when a target is still pending. Retry the request itself only on 429, 500 or a timeout, with the same idempotency key.
  • Lists. GET /v1/posts is newest first, limit up to 100, filterable by status (failed, partially_published, scheduled…).

Errors and rate limits

Errors are JSON with a stable code and a detail written for people: route on the code, show the detail. The ones a workflow meets most:

400 invalid_request
The body, query or a platform rule is wrong. Read issues: it lists every problem with its path. Fix the request; retrying it unchanged fails the same way.
401 unauthorized
The key is missing, malformed or revoked. Send Authorization: Bearer pp_live_… with a key from the dashboard.
402 subscription_required
The trial or subscription has ended. Only GET /v1/me and /v1/billing still work: start a checkout to continue.
429 rate_limited
Too many requests, from your key or on the network’s side. Wait retry_after seconds (also in the Retry-After header), then retry.
502 upstream_error
The network failed or refused the request; detail carries its reason. Retry later if it didn’t respond; fix the request if it refused.

Each key can make 120 requests a minute, and at most 30 of them can be writes (publishing, scheduling, replying, sending, cancelling). A burst past that gets 429 rate_limited with Retry-After: 60: wait, then retry with the same idempotency key. Details in Authentication → Rate limits and Errors.

Questions

Is there a postpeg app for Make?
It’s built and waiting to be published, so it isn’t installable yet. Everything on this page uses Make’s own HTTP step, which reaches every postpeg endpoint today with the same key, and keeps working after the app ships.
Do I need a paid Make plan?
No. HTTP is a built-in Make app; scenarios count operations against your Make plan as usual. postpeg is billed separately, per connected account; publishing, analytics, comments and DMs are unlimited on every paid plan.
Where do I get the account ids?
Call GET /v1/accounts once (the second table on this page) and copy the id of each account you want to post to. They don’t change, even when an account is reconnected.
What if the workflow retries a step?
Send an Idempotency-Key header built from something unique to the item, like an RSS guid or a sheet row number. A repeat with the same key returns the original post with 200 and publishes nothing new.
How fast can a workflow call postpeg?
120 requests a minute per key, of which 30 can be writes such as publishing or replying. A loop that goes faster gets 429 rate_limited with Retry-After: 60; wait that long and retry. See Authentication → Rate limits.
Can I test without posting for real?
Not yet: pp_test_ keys currently publish for real, like live keys. Test against an account you own, or schedule the post a day ahead and cancel it with DELETE /v1/posts/{id}.

Other integrations

Send your first post in a few minutes

The 7-day trial has every feature and 3 connected accounts, with no card. The quickstart takes you from a key to a published post.