meridian
Join the Waitlist →

API Reference

Full technical documentation — authentication, endpoints, request and response formats.

Setting up via API or integrating with existing systems?

View the full technical documentation — authentication, endpoints, request and response formats.

+
Authentication
POST /auth/login Get a JWT token ▼

Authenticates a platform admin and returns a JWT valid for 8 hours. For automated or service-to-service calls, use the long-lived static MERIDIAN_API_TOKEN instead — pass it as Authorization: Bearer <token> on any protected endpoint.

Response 200
{
  "token":   "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
  "email":   "admin@acme.com",
  "expires": "2026-04-12 08:00 UTC"
}
Tenant Configuration
GET /tenants/{short-name}/config Fetch current config ▼

Returns the full configuration for a tenant. The Plex API key and Azure client secret are always redacted (***) in responses — they can be set but never read back.

Response 200
{
  "tenant": "acme",
  "config": {
    "plex_base_url":    "https://acme.plex.cloud",
    "plex_consumer_key": "***",
    "azure_app_id":     "56b1c793-…",
    "azure_app_secret": "***",
    "app_name":         "Acme Assistant",
    "updated_at":       "2026-04-11T14:22:00Z"
  }
}
POST /tenants/{short-name}/config Create or update config ▼

Creates or updates a tenant's configuration. All fields are optional — only the fields you include are changed. Omitted fields keep their current values.

Azure field names: In the Azure Portal, "Application (client) ID" maps to azure_app_id here. "Directory (tenant) ID" maps to azure_tenant_id. The client secret value maps to azure_app_secret.
FieldTypeWhat it is
plex_base_urlstringoptionalYour Plex Cloud URL
plex_consumer_keystringoptionalYour Plex API key
azure_tenant_idstringoptionalAzure "Directory (tenant) ID"
azure_app_idstringoptionalAzure "Application (client) ID"
azure_app_secretstringoptionalAzure client secret value
app_namestringoptionalDisplay name for the assistant
app_domainstringoptionalPublic domain for the bot
Chat
POST /tenants/{short-name}/chat Send a direct message ▼

Sends a message to the assistant and returns its response. Used for testing and non-Teams integrations. Runs the full intent routing and Plex data lookup pipeline.

FieldTypeRequiredDescription
questionstringrequiredThe user's message
user_idstringrequiredUnique identifier for the user — used to maintain conversation history
aad_object_idstringoptionalAzure AD user object ID for automatic permission lookup
Response 200
{ "response": "PO #4821 from Atlas Steel is due Friday at $28,400. Currently in receiving." }
POST /tenants/{short-name}/api/messages Teams Bot Framework webhook ▼

The Bot Framework webhook endpoint. Set this as your bot's messaging endpoint in the Azure Bot registration. Each tenant has its own URL so a single Meridian instance can serve multiple organizations.

Azure bot messaging endpoint
https://<your-domain>/tenants/<short-name>/api/messages
Prompts
PUT /tenants/{short-name}/prompts/{type} Update assistant instructions ▼

Updates the assistant's instructions for this tenant. type is either system (the assistant's core behavior and persona) or router (how it classifies questions by department). Changes take effect immediately — no restart required.

FieldTypeRequiredDescription
contentstringrequiredThe full prompt text