Read a chat's session and a window of messages
Members get the full session (wallets, roles, lanes). A non-member of a public && !encrypted (open) room gets a read-only public payload instead of a 404. last is the resume cursor: omitted or unresolvable returns the 10 newest messages (cold open); a resolvable cursor returns up to CATCHUP_LIMIT (200) messages newer than it -- the client unions by id, since a gap can still open past 200. Every member response carries session.synced_at (server time, captured before the queries). Pass it back as since together with last and the response also carries changed_messages: older messages (seq at or before the cursor) changed after since -- a reaction added or removed, an edit, delete, pin or lock -- up to 200, same shape as messages. Merge them by id. since is read with 5 s of overlap; an absent, invalid or out-of-range (before 2000, more than a day ahead) since omits the key. At most 200 rows come back, oldest change first; when more exist the response has changed_truncated: true, session.synced_at is the last row's updated_at and changed_after_id its id -- ask again with since=<synced_at>&continue=1&since_id=<changed_after_id> until it is absent. Anything else (private, not a member, nonexistent) is one indistinguishable 404.
Request
- Base URL: https://saltapp.ai
- URL: https://saltapp.ai/api/v1/chats/{id}
- Auth: one of:
- API key in header api-key
- OAuth 2 (authorization code, authorization URL https://saltapp.ai/oauth2/authorize, token URL https://saltapp.ai/api/oauth2/token, scopes: chat)
Path parameters
Query parameters
A message id to resume after.
The session.synced_at from your last read; with last, adds changed_messages.
Set to 1 on a follow-up to a truncated round: no overlap, resumes after since_id.
The changed_after_id of the truncated round being continued.
Response
OK
Changes
No recorded changes to this operation across all 3 revisions of this API.