No-code

Zapier, Make, n8n, Pipedream

Trigger tinyposter from any of the 7,000+ apps in Zapier (or Make, or n8n, or Pipedream). No tinyposter integration needed — they all support webhooks/HTTP calls out of the box.

The trick

tinyposter doesn't need a custom Zapier integration. Every no-code tool has a generic HTTP / Webhook action. Point it at our REST API, paste a token, done. Same idea for Make, n8n, Pipedream, IFTTT Pro, and Power Automate.

Want the other direction?
This page is for telling tinyposter to post. To trigger your automation WHEN something happens in tinyposter (a post publishes, fails, an account drops), use outbound webhooks.

Common setup (any tool)

You'll always need three things:

  1. URL: https://tinyposter.app/api/v1/posts
  2. Method: POST
  3. Headers:
    text
    Authorization: Bearer tp_PASTE_YOUR_TOKEN_HERE
    Content-Type: application/json

And a JSON body — at minimum text and platforms:

json
{
  "text": "the post content",
  "platforms": ["TWITTER", "LINKEDIN"]
}

Zapier

  1. 01

    Pick your trigger

    Anything Zapier supports. RSS new item, Google Sheets new row, Notion new page, etc.

  2. 02

    Add a 'Webhooks by Zapier' action

    Search for Webhooks by Zapier → choose Custom Request (or POST with the “Send raw data” option) so the body goes through as raw JSON. The plain POST form-builder turns everything into form fields and won't produce the array Zapier needs for platforms.

    • Method: POST
    • URL: https://tinyposter.app/api/v1/posts
    • Data (raw JSON body):
      json
      {
        "text": "{{trigger_text}}",
        "platforms": ["TWITTER", "LINKEDIN"]
      }
      Replace {{trigger_text}} with the field from your trigger. platforms must be a JSON array of uppercase platform codes.
    • Headers:
      • Authorization = Bearer tp_…
      • Content-Type = application/json
      • Idempotency-Key = the trigger's unique id (prevents duplicates on Zap retries)
  3. 03

    Test it

    Zapier will run a test send. If you see a 201 response with a post.id, it worked. Turn the Zap on.

Make.com

Make has a built-in HTTP module that's a closer fit:

  1. Add an HTTP → Make a request module.
  2. URL: https://tinyposter.app/api/v1/posts
  3. Method: POST
  4. Headers: Authorization: Bearer tp_… and Content-Type: application/json
  5. Body type: Raw → Content type JSON → request content:
json
{
  "text": "{{1.text}}",
  "platforms": ["TWITTER", "LINKEDIN"]
}
Use the OpenAPI spec
Make.com can also import our spec directly. In Make, drop in the HTTP → Make a request module (or the newer HTTP → OpenAPI connector if your team has it) and point it at /api/v1/openapi.json — Make builds typed modules for every endpoint.

n8n

  1. Add an HTTP Request node.
  2. Method: POST · URL: https://tinyposter.app/api/v1/posts
  3. Authentication → Generic Credential Type → Header Auth → Name: Authorization → Value: Bearer tp_…
  4. Send Body → JSON → paste:
json
{
  "text": "={{$json.text}}",
  "platforms": ["TWITTER", "LINKEDIN"]
}

Pipedream

Run Node.js code stepjavascript
const res = await fetch("https://tinyposter.app/api/v1/posts", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TINYPOSTER_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": steps.trigger.context.id,
  },
  body: JSON.stringify({
    text: steps.trigger.event.text,
    platforms: ["TWITTER", "LINKEDIN"],
  }),
});
return await res.json();

Common patterns

  • Notion → tinyposter: trigger on new row in a “Posts” database, send the content to tinyposter. Auto-publish content calendar.
  • Google Sheets → tinyposter: add rows to a spreadsheet, schedule each one for a future date.
  • RSS → tinyposter: announce every new blog post on social.
  • Substack → tinyposter: Substack RSS feeds + your CTA template = automated cross-posts.
  • YouTube → tinyposter: new video → tweet a link with thumbnail.
Always set an Idempotency-Key
Zapier/Make/n8n retry on transient failures. Without an Idempotency-Key, a retry can mean double-posting. Use the trigger's unique id as the key — same key, same result for 24h.

Troubleshooting

401 Unauthorized

Token wrong or revoked. Check the header is exactly Authorization: Bearer tp_… with a single space.

409 platform_not_connected

You requested a platform you haven't connected. Add it at accounts.

I'm getting duplicate posts

Add an Idempotency-Key header tied to the trigger's unique id. See the warning above.

How do I attach an image from Google Drive?

Make the image publicly accessible (Google Drive: Anyone with link → Viewer). Get the direct file URL. Pass it in media_urls.