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.
Common setup (any tool)
You'll always need three things:
- URL:
https://tinyposter.app/api/v1/posts - Method:
POST - Headers:text
Authorization: Bearer tp_PASTE_YOUR_TOKEN_HERE Content-Type: application/json
And a JSON body — at minimum text and platforms:
{
"text": "the post content",
"platforms": ["TWITTER", "LINKEDIN"]
}Zapier
- 01
Pick your trigger
Anything Zapier supports. RSS new item, Google Sheets new row, Notion new page, etc.
- 02
Add a 'Webhooks by Zapier' action
Search for Webhooks by Zapier → choose POST.
- URL:
https://tinyposter.app/api/v1/posts - Payload Type: JSON
- Data:
text— map to the trigger's text fieldplatforms— typeTWITTER,LINKEDIN(Zapier converts comma-sep to array)
- Headers:
Authorization=Bearer tp_…Content-Type=application/jsonIdempotency-Key= the trigger's unique id (prevents duplicates on Zap retries)
- URL:
- 03
Test it
Zapier will run a test send. If you see a
201response with apost.id, it worked. Turn the Zap on.
Make.com
Make has a built-in HTTP module that's a closer fit:
- Add an HTTP → Make a request module.
- URL:
https://tinyposter.app/api/v1/posts - Method: POST
- Headers:
Authorization: Bearer tp_…andContent-Type: application/json - Body type: Raw → Content type JSON → request content:
{
"text": "{{1.text}}",
"platforms": ["TWITTER", "LINKEDIN"]
}n8n
- Add an HTTP Request node.
- Method: POST · URL:
https://tinyposter.app/api/v1/posts - Authentication → Generic Credential Type → Header Auth → Name:
Authorization→ Value:Bearer tp_… - Send Body → JSON → paste:
{
"text": "={{$json.text}}",
"platforms": ["TWITTER", "LINKEDIN"]
}Pipedream
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.
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.