Skip to main content

API Reference

An advanced feature that opens up a world of possibilities by allowing third-party services to seamlessly communicate with your Mixpost instance.

n8n Integration

For n8n users, we have a community node available that makes it easy to integrate Mixpost with your n8n workflows. Check out n8n-nodes-mixpost on npm.

Base URL​

https://cloud.mixpost.app/p/api/*

Workspace endpoints are scoped by a workspace UUID:

https://cloud.mixpost.app/p/api/<workspaceUuid>/posts

Don't know your workspace UUID? List your workspaces.

You can download the OpenAPI specification to import into Postman, Insomnia, or generate a client from.

Authentication​

API endpoints are protected, and therefore require that you authenticate with a personal key.

Create a personal key​

API requests authenticate with a personal key, a key that belongs to your user and acts as you.

  • Open the user menu and click API.
  • Click Create a personal key.
  • Give it a name, or leave it empty to get one generated, and pick when it expires.
  • Click Create, then copy the key.

The key is shown once, at creation — Mixpost only stores a hash of it. If you lose it, rotate it to get a new one.

Screenshots:
API - Personal keysAPI - Create a personal key

Manage your keys​

The API page lists your keys with the last four characters of each one, when it was last used, when it was created and when it expires. From the same list you can:

  • Edit a key to rename it or change when it expires.
  • Rotate key to replace a key with a new one. The new key keeps the name and expiry and is shown once; anything still using the old key stops working straight away.
  • Delete keys you no longer need.

Use your personal key​

Authenticate by adding an Authorization header to all your HTTP calls, formatted as Authorization: Bearer <personal-key> (replace <personal-key> with the key you created).

The key must be sent in that header — there is no query string, cookie, or custom-header alternative.

Example:

curl -L -X GET 'https://cloud.mixpost.app/p/api/3bbd0951-5b04-432b-b2a0-688588b0720e/accounts' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <personal-key>'

To check that a key is valid, call the health check endpoint:

curl -L -X GET 'https://cloud.mixpost.app/p/api/ping' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <personal-key>'

A valid key returns {"status":"ok"}; anything else returns 401.

What a personal key can do​

Personal keys have no scopes

A personal key carries the full authority of the user who created it. You cannot restrict a key to certain endpoints or to read-only access. What it may do is decided by that user's role in each workspace — so to limit an integration, create its key from a user whose role is already limited.

See Permissions for the full role matrix.

Personal keys expire according to the expiry you pick when creating them (7, 30, 60 or 90 days, 1 year, a custom date, or never). An expired or deleted key returns 401.

Sign in with OAuth​

Apps can also sign users in with their Mixpost account instead of a personal key: AI clients such as ChatGPT and Claude connect to the MCP server this way, and an administrator can register your own app to call the REST API. See OAuth.

Conventions​

  • All timestamps are UTC. The API always operates in UTC, regardless of the timezone configured for the workspace or user.
  • Responses are JSON. Errors follow a consistent shape — see Errors.
  • Some list endpoints paginate and some don't. See Pagination.