HTTP API
The REST and RPC APIs, documented by an OpenAPI contract.
Everything the official clients do goes through a typed command surface you can call yourself: REST for scripts and integrations, RPC for typed clients, one OpenAPI document describing both.
Authentication
Requests authenticate with a bearer token:
curl -H "Authorization: Bearer <token>" \
https://alpha.plain.jxd.dev/api/v1/...
A session token from pln login works (the CLI itself is just an API client); the token in ~/.plain/credentials.json is the one it uses.
REST
The REST surface lives under /api/v1 and covers the platform's commands: issues, pull requests, docs, repositories, members, conversations and messages, notifications, and more. Conventions are boring on purpose: JSON in, JSON out, standard status codes.
RPC
The same commands are exposed over a typed RPC protocol at /api/rpc. This is the transport the mobile apps use; it exists for clients that want end-to-end types rather than hand-rolled fetch calls.
The OpenAPI document
The full machine-readable contract is public:
https://alpha.plain.jxd.dev/api/openapi
Generate a client in your language of choice from it, or browse it to see every operation and schema. When the API grows, the document grows with it, because it is generated from the same definitions the server runs.
For AI tooling, the MCP server is usually a better fit than raw HTTP.