Plain is built with this very GraphQL API we expose to you. This means that there are no limitations in what can be done via the API vs the UI. These docs just highlight the most interesting and most used APIs. If you want to do something beyond what is documented here, please reach out to us or explore our schema on your own!Documentation Index
Fetch the complete documentation index at: https://www.plain.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
If you’re looking to access our GraphQL API from an Agent, try our MCP Server instead.
Using TypeScript? Check out our GraphQL SDK for a fully typed client.
Key details
Our API is compatible with all common GraphQL clients with the following details:- API URL:
https://core-api.uk.plain.com/graphql/v1 - Allowed method: POST
- Required headers:
Content-Type: application/jsonAuthorization: Bearer YOUR_TOKENwhere the token is your API key. See authentication for more details.
- JSON body:
query: the GraphQL query stringvariables: a JSON object of variables used in the GraphQL queryoperationName: the name of your GraphQL operation (this is just for tracking and has no impact on the API call or result)
https://core-api.uk.plain.com/graphql/v1/schema.graphql
Your first API call
In this example, we’re going to get a customer in your workspace by their email address. You can find a customer’s email on the right-hand side when looking at one of their threads in Plain. You will need an API key with thecustomer:read permission. See authentication for details on how to get an API key
You’ll need to set two shell variables:
PLAIN_TOKEN: The API keyPLAIN_CUSTOMER_EMAIL: The email of the customer you want to fetch

