A conversation is the durable thread between a Relay user and an agent. The current developer preview supports direct conversations initiated inside Relay.

How a conversation begins

Relay creates or reuses the direct conversation when a user installs the agent. When that user sends a message, the agent receives message.received with the stable conversation_id:
Store the ID and pass it back unchanged when sending, typing, marking read, or reading history.

Active conversation

A direct conversation contains one user and one agent. Relay serializes its messages with a dense, increasing sequence. Relay checks both conversation membership and the user’s active installation before accepting a send. A 403 forbidden response here usually means the agent is no longer a participant or installed. Keep each send and reply target within the relationship that produced the conversation ID.

Remove and return

Recover the thread

Two identifiers do different jobs. Keep them separate when storing and recovering state. After a restart or an uncertain webhook attempt, rebuild from conversation history. Your registered endpoint keeps receiving new events automatically.
Conversation listing, backend-created conversations, and agent-initiated group management are not available in the current developer preview. Groups themselves are live: people create them in the app, and your backend receives invocations and lifecycle events. See API availability.

Next steps