> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postqueen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> PostQueen's hosted API is https://api.postqueen.ai. The public API base is https://api.postqueen.ai/public/v1 and takes the raw API key in the Authorization header, with no Bearer prefix.
> The MCP server for posting is https://api.postqueen.ai/mcp/YOUR_API_KEY (or /mcp with Authorization: Bearer YOUR_API_KEY). docs.postqueen.ai/mcp only searches these docs and cannot post.
> The API key is under Connections > API Keys in the app, and only workspace admins can see it.

# Zapier and Make

> Official Zapier and Make apps are coming soon. Until then, call the PostQueen API from Webhooks by Zapier or Make's HTTP module.

export const ChannelStatus = ({status, children}) => {
  const look = ({
    available: {
      color: 'green',
      label: 'Available'
    },
    'in-review': {
      color: 'yellow',
      label: 'In review'
    },
    soon: {
      color: 'gray',
      label: 'Soon'
    }
  })[status] || ({
    color: 'gray',
    label: status
  });
  return <div className="pq-status not-prose" data-status={status}>
      <Badge color={look.color} shape="pill" size="md">{look.label}</Badge>
      {children ? <span className="pq-status-note">{children}</span> : null}
    </div>;
};

<ChannelStatus status="soon">The official apps are not out yet.</ChannelStatus>

Official PostQueen apps for Zapier and Make are coming soon. Today both tools can call the [PostQueen API](/public-api/introduction) directly: Zapier with **Webhooks by Zapier**, Make with its **HTTP** app. What you build that way does not depend on the apps. For n8n there is already a node: see [n8n](/public-api/n8n).

## What every request needs

| Part        | What to send                                                                                                        |
| ----------- | ------------------------------------------------------------------------------------------------------------------- |
| **URL**     | `https://api.postqueen.ai/public/v1/posts` to create a post. Other endpoints are under the same base.               |
| **Method**  | `POST`                                                                                                              |
| **Headers** | `Authorization` set to your API key as it is, with no `Bearer` prefix, and `Content-Type` set to `application/json` |
| **Body**    | JSON, as below                                                                                                      |

<Info>
  **Where the API key is:** in the app, open **Connections > API Keys**. Only a workspace Admin or Super Admin can reveal or rotate it; other members see it masked. A workspace has one key, and each agent card on **Connections** shows your MCP address with the key already filled in.
</Info>

This body schedules a text post on a Bluesky channel. `type`, `date`, `shortLink`, `tags` and `posts` are all required, and each entry in `value` needs `image`, even when it is empty:

```json theme={"system"}
{
  "type": "schedule",
  "date": "2026-10-01T09:00:00.000Z",
  "shortLink": false,
  "tags": [],
  "posts": [
    {
      "integration": { "id": "YOUR_CHANNEL_ID" },
      "value": [
        { "content": "New on the blog: a calendar that shows everything.", "image": [] }
      ]
    }
  ]
}
```

The channel id comes from [List channels](/public-api/integrations/list). A network that needs settings, such as WordPress or DEV, takes them in a `settings` object: see [Posting settings by network](/public-api/providers/overview). [Schedule a post](/public-api/schedule-a-post) walks through the whole flow, media included.

## Zapier

<Steps>
  <Step title="Add the action">
    Add a **Webhooks by Zapier** action and choose the **Custom Request** event. The plain POST event cannot send the nested JSON a post needs.
  </Step>

  <Step title="Fill in the request">
    Set **Method** to `POST`, **URL** to `https://api.postqueen.ai/public/v1/posts`, and **Data** to the JSON body. Under **Headers**, add `Authorization` with your API key and `Content-Type` with `application/json`.
  </Step>

  <Step title="Test the step">
    A working request answers with `[{ "postId": "...", "integration": "..." }]`, and the post appears on your calendar.
  </Step>
</Steps>

<Note>
  Webhooks by Zapier is on Zapier's Professional, Team and Enterprise plans, not the Free plan.
</Note>

## Make

<Steps>
  <Step title="Add the module">
    Add the **HTTP** app and choose **Make a request**.
  </Step>

  <Step title="Fill in the request">
    Set **URL** to `https://api.postqueen.ai/public/v1/posts` and **Method** to `POST`. Under **Headers**, add `Authorization` with your API key. Set **Body content type** to `application/json`, **Body input method** to **JSON string**, and paste the body into **Body content**.
  </Step>

  <Step title="Parse the answer">
    Set **Parse response** to **Yes**, so the returned `postId` can be mapped into later modules. Run the module once to check it.
  </Step>
</Steps>

<Tip>
  Text mapped from another module can carry quotes or line breaks that break a hand-written JSON string. In Zapier, build the body in a **Code by Zapier** step. In Make, choose **data structure** as the **Body input method** instead, or build the body with the JSON app's **Create JSON** module.
</Tip>

## The other direction

To start a Zap or a scenario when PostQueen publishes a post, add a [PostQueen webhook](/using/webhooks) that points at Zapier's **Catch Hook** trigger or Make's **Custom webhook** module.

## Limits

A workspace can send 30 requests to create posts in an hour, and a request PostQueen refuses counts too. A Zap or scenario that loops over many rows can reach it, so put several channels in one request where you can. The limits and the error codes are on [Limits and errors](/public-api/limits-and-errors).

## Next steps

<CardGroup cols={2}>
  <Card title="Schedule a post with the API" icon="calendar-plus" href="/public-api/schedule-a-post">
    From listing your channels to checking that the post went out.
  </Card>

  <Card title="Posting settings by network" icon="sliders-horizontal" href="/public-api/providers/overview">
    The settings each network needs in a post, and which fields are required.
  </Card>

  <Card title="Limits and errors" icon="gauge" href="/public-api/limits-and-errors">
    The hourly limits, and the status codes the API returns.
  </Card>

  <Card title="Node.js SDK" icon="package" href="/public-api/sdk">
    Call the API from JavaScript or TypeScript with @postqueen/node.
  </Card>
</CardGroup>
