Overview & Getting Started
Call HTTP / MCP endpoints exposed locally by the MultiPost desktop app
The MultiPost desktop app can expose a set of HTTP endpoints and an MCP server on your machine so scripts, automation tools or AI agents can drive it directly: list accounts, create publish tasks, poll publish status, read runtime logs, and more.
Unlike the cloud API (https://api.multipost.app), this local API runs on your own computer and operates the platform accounts already logged in inside the desktop app — nothing goes through any server.
Why a local API#
The desktop app keeps every platform account's login state, browser views and publish scripts running locally. The external API reuses those capabilities directly, which means:
- account cookies and login state never leave your computer;
- the caller and the app must be on the same machine (binds
127.0.0.1only); - the app must be running (the API is not a standalone background daemon).
Enable the server#
- Open the desktop app → Settings → External API.
- Turn on the "Enable External API" switch.
- Copy the service URL (default
http://127.0.0.1:19528) and the access token shown on the page.
The access token is effectively a key to every logged-in account. Never put it in front-end code or public repositories. If it leaks, click "Regenerate" on the settings page to invalidate the old token immediately.
Basics#
- Service URL:
http://127.0.0.1:19528(port configurable in settings) - Auth: every request except
GET /andGET /v1/healthrequires a Bearer Token. - Format: JSON (
application/json); a few endpoints (e.g. screenshots) return binary. - Binding:
127.0.0.1only. For remote access use SSH port forwarding — never expose the server publicly.
Authentication#
Add this header to every request:
Authorization: Bearer mp-xxxxxxxxxxxxxxxxxxxxxxxxHealth check (no auth):
curl http://127.0.0.1:19528/v1/healthAuthenticated call:
curl http://127.0.0.1:19528/v1/platforms \
-H "Authorization: Bearer $MULTIPOST_DESKTOP_TOKEN"A failed auth returns 401 with the unified error shape:
{ "error": { "code": "unauthorized", "message": "Invalid or missing Bearer token" } }