canonical: https://jentic.com/apis/muro.chat/muro

# Muro Chat muro REST API

The muro REST API reads and answers the live chat conversations that visitors start on your muro websites, and triages each thread by status, tags, and assignee. It lists conversations with a status filter and a free-text search over names, emails, and message text, sends agent replies or internal notes into a thread, and applies one action such as close, snooze, or assign to up to 100 conversations at once. It also manages saved replies and automation rules that fire on conversation.created or message.created, enriches contact records with a name, email, and metadata, and generates an AI summary of a thread on request. Requests use a workspace API key with read or write scope, lists page with an opaque next_cursor, and opening a conversation, sending a message, and bulk actions accept an Idempotency-Key header for safe retries.

## For AI agents

Read and reply to muro live chat conversations, triage threads by status, tags, and assignee, run bulk actions, manage saved replies and automation rules, and enrich visitor contacts.

## Scope

Does not handle email ticketing, phone support, or outbound marketing campaigns, and it does not install the chat widget. Use for reading, answering, and triaging muro live chat conversations only.

## Capabilities

- Search the chat inbox with GET /conversations, filtering by status (open, closed, snoozed) and matching names, emails, or message text through the q parameter
- Reply to a visitor or leave an internal note in a thread with POST `/conversations/{id}/messages`, using kind agent or note and an optional replyTo quote
- Triage a conversation with PATCH `/conversations/{id}`: set status, replace tags, change assigned_user_id, mark it read or unread, and shallow-merge metadata
- Close, open, snooze, mark read, or assign up to 100 conversations in one call with POST `/conversations/bulk`
- Generate or refresh an AI recap of a thread with POST `/conversations/{id}/summary` and read the stored one with GET `/conversations/{id}/summary`
- Build automation rules that trigger on conversation.created or message.created and add a tag, assign, set a status, or reply
- Enrich a visitor contact with a name, email, and metadata through PATCH `/contacts/{id}`

## Use cases

### Agent-drafted replies to live chat through Jentic

A support agent built on an LLM can keep a muro inbox answered between human shifts. Through Jentic it finds the muro list and reply operations by intent, pulls open conversations with GET /conversations?status=open, reads each thread with GET `/conversations/{id}/messages`, and posts a reply with POST `/conversations/{id}/messages.` Sending kind note instead of agent lets it leave a draft for a human to approve rather than answering the visitor directly.

Example prompt: Call GET /conversations with status open, then for conversation cnv_8f2a1b call GET `/conversations/cnv_8f2a1b/messages` and POST `/conversations/cnv_8f2a1b/messages` with content set to a suggested answer and kind set to note

### Bulk inbox cleanup

Spam bursts and stale threads clutter a chat inbox. POST `/conversations/bulk` takes a list of up to 100 conversation ids and one action from close, open, snooze, read, unread, or assign, so a cleanup pass that would mean dozens of single updates becomes one request. Pair it with the q search on GET /conversations to collect the ids first.

Example prompt: Call GET /conversations with q set to 'crypto giveaway', collect the returned ids, then call POST `/conversations/bulk` with those ids and action set to close

### Thread recaps for handoffs

When a conversation moves from one teammate to another, the new owner needs context fast. POST `/conversations/{id}/summary` generates or refreshes an AI recap of the thread, GET `/conversations/{id}/summary` returns the stored one, and the Conversation object also carries a summary written automatically on close. Follow it with PATCH `/conversations/{id}` to set the new assigned_user_id.

Example prompt: Call POST `/conversations/cnv_8f2a1b/summary`, then PATCH `/conversations/cnv_8f2a1b` with assigned_user_id set to usr_42 and tags set to ['billing']

### Routing rules and canned answers

Repeat questions and predictable routing belong in configuration, not in every reply. The automation rules endpoints create rules with a name, a trigger of conversation.created or message.created, optional conditions, and actions such as add_tag, assign, set_status, or reply. The saved replies endpoints store canned answers with a shortcut, title, and body for reuse.

Example prompt: Call POST /automation-rules with name 'Tag pricing chats', trigger conversation.created, and actions containing one add_tag action with value 'pricing', then POST /saved-replies with shortcut 'ship', title 'Shipping times', and body describing delivery windows

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/conversations` | List and search conversations |
| GET | `/conversations/{id}/messages` | List messages in a conversation |
| POST | `/conversations/{id}/messages` | Send a reply or note |
| PATCH | `/conversations/{id}` | Triage a conversation |
| POST | `/conversations/bulk` | Apply one action to many conversations |
| POST | `/conversations/{id}/summary` | Generate or refresh the AI summary |
| POST | `/automation-rules` | Create an automation rule |
| PATCH | `/contacts/{id}` | Enrich a contact |

## Key resources

- **Conversations** — List, search, open, triage, and bulk-update chat threads, and generate AI summaries
- **Messages** — Read a thread chronologically, send agent replies or internal notes, and broadcast a typing indicator
- **Contacts** — List visitor contacts by website and enrich them with a name, email, and metadata
- **Saved replies** — Canned answers with a shortcut, title, and body
- **Automation rules** — Rules that fire on conversation.created or message.created and tag, assign, set status, or reply

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 63 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 89 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 44 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 57 / 100
- **View full report:** https://jentic.com/apis/muro.chat/muro/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring muro by hand means issuing a workspace bearer key with the right read or write scope, paging with next_cursor, and sending an Idempotency-Key on message sends so retries do not double-post. Through Jentic you install once, import the muro REST API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** muro puts the conversation id in the URL path (`/conversations/{id}/...`), so a rule can pin your agent to one conversation and the operations you pick. You choose the operations it may call, so broad ones like bulk actions or automation rule deletion are not included unless you add them.
- **Credential handling:** Your muro API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'reply to a live chat conversation' or 'close conversations in bulk', and Jentic returns the matching muro operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Crisp API** — Website live chat and shared inbox with a broader messaging and helpdesk surface
- **Intercom API** — Customer messaging platform with conversations, contacts, and help center content
- **Chatwoot API** — Open-source omnichannel support inbox with conversations and contacts
- **Slack API** — Team messaging, often used to alert staff about new or escalated chats

## FAQ

### Is there a muro MCP server?

You don't need an MCP server to give your agent the muro REST API. Jentic connects it directly from the API Directory: import it, store your workspace API key once, and your agent calls it. Operations are discovered on demand, so no extra tool definitions sit in the agent's context.

### What authentication does the muro REST API use?

Per its OpenAPI spec, the muro REST API authenticates with a workspace API key sent as a bearer token, Authorization: Bearer mr_live_..., and keys carry read or write scope. GET /openapi.json is open and needs no key. Through Jentic, the key is stored encrypted by your own Jentic One instance and injected at call time, so it never enters the agent's context.

### Can I limit what my agent is allowed to do with the muro REST API?

Yes. For example, write a rule that allows only GET /conversations, GET `/conversations/{id}/messages`, and POST `/conversations/{id}/messages.` Your agent can then read the inbox and post replies or notes, but it cannot bulk-close threads, edit automation rules, or change contacts, and every call it makes is logged.

### What are the rate limits for the muro REST API?

The OpenAPI spec declares a limit of 120 requests per 60 seconds per API key. Responses carry RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers, so an agent can slow down before it hits the ceiling.

### How do I reply to a chat conversation through Jentic?

Search Jentic for 'reply to a live chat conversation', load the createMessage operation, and call POST `/conversations/{id}/messages` with content set to your reply. Set kind to note to leave an internal note instead of a visible reply. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I close or assign many conversations at once with the muro REST API?

Yes. POST `/conversations/bulk` takes up to 100 conversation ids and one action: close, open, snooze, read, unread, or assign. For assign, pass assigned_user_id in the same body.

### Are message sends and bulk actions in the muro REST API safe to retry?

POST /conversations, POST `/conversations/{id}/messages`, and POST `/conversations/bulk` accept an Idempotency-Key header. An identical retry with the same key replays the first response instead of acting twice, and the spec says keys are retained for about 24 hours.
