# n8n, Make and Zapier

Any tool that can send an HTTP request can schedule posts. The pattern is the same everywhere:

1. **Credential:** a header `Authorization` with the value `Bearer pf_…`.
2. **Media:** `POST https://postflow.biz.id/api/v1/media` with `{ "url": "<public file URL>" }`, then keep the `id`.
3. **Post:** `POST https://postflow.biz.id/api/v1/posts` with the caption, `mediaIds`, `targets` and `action`.
4. **Results:** add a [webhook](/guides/webhooks/) pointing at the tool's webhook trigger to react to `post.published` or `post.failed`.

## n8n

Use an **HTTP Request** node with **Header Auth** (name `Authorization`, value `Bearer pf_…`) and **Send Body → JSON**. You can also
import the [OpenAPI document](https://postflow.biz.id/api/v1/openapi.json) into tools that read it. For an AI Agent node, connect the
[MCP server](/agents/clients/n8n/) instead.

## Make

Use the **HTTP → Make a request** module with method `POST`, body type **Raw**, content type **JSON**, and the `Authorization` header.

## Zapier

Use **Webhooks by Zapier → Custom Request** with the `Authorization` header and a JSON body. To start a Zap when a post publishes, use
**Webhooks by Zapier → Catch Hook** and paste its URL into PostFlow's webhook settings.

## Ideas

- A new row in a Google Sheet (date, caption, image URL) becomes a scheduled post.
- A new product in your shop becomes a draft on every account for someone to review.
- A failed post sends a WhatsApp or Slack message to the person on duty.
- A new comment (`comment.received`) goes to a help-desk tool, or to an AI step that drafts a reply for a person to approve.