Skip to content

Platform changelog

This page lists changes to the Chat API and to the three SDKs, newest first. Each release has the version, the date and what changed under Breaking, Added, Changed or Fixed. Dates are the day a version was prepared; the version number is what you install. Each library also has its own changelog.

2026-10-14

The Chat API reference is now complete and public. Added:

  • API conventions: base URL, authentication, naming, the context path, audiences, paging, errors, rate limits, versioning and CORS.
  • A generated page for every operation, with its audience, required scopes and permissions, request and response examples, and the error codes it can return. Start at the API reference.
  • Realtime events: the transport, the envelope and all 13 events, with payloads, recipients and examples.
  • Push payloads: the web push notification and the device registration requests.
  • Data types: every core object, field by field.
  • Errors, Capabilities, Scopes and Limits as reference tables.
  • The OpenAPI document now carries x-audience, x-required-scopes, x-required-capabilities and x-error-codes on operations, examples on request and response bodies, and a list of error codes on each error response.

These pages describe the API as it behaves today. Version 1 stays at /api/v1.

2026-10-10 · Changelog

Added:

  • The client reopens its stream when the user creates or is added to a CHANNEL conversation, so that channel’s events start arriving with no extra call.

Changed:

  • The reconnect for being added to a channel uses the user_id field of the realtime token response. Against an older backend that omits it, that step is skipped.

2026-10-04 · Changelog

No API changes.

2026-10-03 · Changelog · Migrate from 2.x

Breaking:

  • Request and response types use the Chat API’s snake_case field names. For example conversations.create({ member_user_ids, actor_user_id }) replaces memberUserIds and actorUserId. Conversation is now ChatConversation, Member is ChatMember, UserRef is ChatUserRef, and Page has next_cursor.
  • Granular scopes are the ones the Identity Server defines: chat:conversations.manage, chat:conversations.read, chat:groups.manage, chat:channels.manage, chat:messages.send and chat:users.lookup replace chat:conversation:create and chat:conversation:read.

Added:

  • conversations.archive(id) and conversations.reactivate(id). A machine client may change the status of a DIRECT conversation.
  • ChatRateLimitedError for a 429 response, with retryAfterSeconds.

Changed:

  • The scope option accepts a single scope, a list of scopes, or a string.

2026-10-03 · Changelog

First release. Added:

  • ChatUserClient: the signed-in user’s own calls for conversations, messages, reactions, read state, typing, presence and capabilities.
  • Angular and React adapters.
  • ES module and CommonJS builds, with zero runtime dependencies.

2026-10-03 · Changelog

Added:

  • Every entry point ships a CommonJS build next to the ES modules.

2026-09-24 · Changelog · Migrate from 0.x

Breaking: the library targets the context-scoped Chat API.

  • ChatNotificationsClient requires tenantId and applicationId, and ChatPushClient requires tenantId.
  • The realtime token route is GET /tenants/{tenant_id}/applications/{application_id}/notifications/realtime-token, and its response uses stream_url.
  • subscribeToChannel and unsubscribeFromChannel are now subscribeToConversation and unsubscribeFromConversation.
  • Event payloads are snake_case and always carry tenant_id and application_id, plus conversation_id for conversation events. message.created wraps the whole message as message.
  • Push devices live at /tenants/{tenant_id}/notifications/push/devices, and the VAPID key response uses public_key.

Added:

  • Events message.updated, message.deleted, reaction.added, reaction.removed, member.added, member.removed, conversation.created, conversation.updated, conversation.deleted and conversation.access_revoked.