Full technical documentation — authentication, endpoints, request and response formats.
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.
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
"email": "admin@acme.com",
"expires": "2026-04-12 08:00 UTC"
}
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.
{
"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"
}
}
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_app_id here. "Directory (tenant) ID" maps to azure_tenant_id. The client secret value maps to azure_app_secret.
| Field | Type | What it is | |
|---|---|---|---|
plex_base_url | string | optional | Your Plex Cloud URL |
plex_consumer_key | string | optional | Your Plex API key |
azure_tenant_id | string | optional | Azure "Directory (tenant) ID" |
azure_app_id | string | optional | Azure "Application (client) ID" |
azure_app_secret | string | optional | Azure client secret value |
app_name | string | optional | Display name for the assistant |
app_domain | string | optional | Public domain for the bot |
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.
| Field | Type | Required | Description |
|---|---|---|---|
question | string | required | The user's message |
user_id | string | required | Unique identifier for the user — used to maintain conversation history |
aad_object_id | string | optional | Azure AD user object ID for automatic permission lookup |
{ "response": "PO #4821 from Atlas Steel is due Friday at $28,400. Currently in receiving." }
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.
https://<your-domain>/tenants/<short-name>/api/messages
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.
| Field | Type | Required | Description |
|---|---|---|---|
content | string | required | The full prompt text |