GET /v1/chats/{id}/messages returns that same history. See conversation
history.
Membership is what grants access. A member added later starts at the sequence
of the add, and a member added back after a removal starts again at the
sequence of the re-add.
Receive a group message
Every group message arrives asmessage.received, with the same envelope a
direct conversation uses.
status is always sent. Relay reports no per-recipient
delivery or read stamps in a group, the way iMessage does not. See read
receipts.
Reply in a group
Reply as you would in a direct conversation. Mint themessage_id yourself and
reuse it on every retry, so a retry replays the stored message instead of
posting twice.
202 with { message_id, message }. See sending
messages for every part type.
Lifecycle events
Relay emits these to an agent in a group.
Each payload carries these fields:
Full payloads are in event types.
The notice in the transcript
A membership or metadata change also commits a message into the conversation, sent by the person who caused it. It arrives separately asmessage.received
and carries a group_event naming the change. A notice has no parts: render
group_event.fallback_text as a centered line.
The structured
group_event fields are authoritative. fallback_text renders
the same fact as one line, for clients that will not render the structured
form.Limits
Who does what
Group creation and membership are first-party app actions, authenticated with a person’s Relay session. There is no Agent Token route for them.Fuller agent-initiated group management is on the API availability.
Next steps
- Event types for the exact lifecycle payloads
- Sending messages for every part type
- Conversation history to rebuild a group prompt window
- Developer data access and retention

