Realtime stream credential
const url = 'https://chat.centralcodestation.com/api/v1/tenants/example/applications/example/notifications/realtime-token';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://chat.centralcodestation.com/api/v1/tenants/example/applications/example/notifications/realtime-token \ --header 'Authorization: Bearer <token>'Subscribe-only: the caller’s own channel, CHANNEL conversations they are in, and optionally one PUBLIC channel they are viewing. Users only.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The Identity Server tenant id.
The Identity Server id of a chat-enabled tenant application.
Query Parameters
Section titled “Query Parameters”A PUBLIC channel being viewed.
Responses
Section titled “Responses”Success.
object
Open with EventSource; subscribe-only.
Expiry, epoch milliseconds. Reconnect with a fresh token before it.
The caller’s user id — lets the client recognise events about itself (e.g. its own member.added).
Example
{ "stream_url": "https://realtime.example/sse?token=…", "expires": 1791970800000, "user_id": "coach-ana"}Error. error is one of: invalid_token, token_revoked.
object
Stable snake_case error code.
Example
{ "status_code": 401, "error": "invalid_token", "message": "The bearer token is missing, malformed, expired, signed by an unknown key, has the wrong audience (`aud` must be `chat-api`), or lacks the required scope.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: not_tenant_member, no_application_access, tenant_not_available, insufficient_scope, client_context_mismatch, principal_not_allowed.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "not_tenant_member", "message": "The user is not an active member of the tenant in the URL.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: application_not_found.
object
Stable snake_case error code.
Example
{ "status_code": 404, "error": "application_not_found", "message": "The application does not exist in the tenant, or Chat is not enabled for it.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: rate_limited.
object
Stable snake_case error code.
Example
{ "status_code": 429, "error": "rate_limited", "message": "The caller exceeded a rate limit", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: identity_unavailable.
object
Stable snake_case error code.
Example
{ "status_code": 503, "error": "identity_unavailable", "message": "Chat could not reach the Identity Server and has no fresh cached answer.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}default
Section titled “default”Error — see error for the code.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "invalid_request", "message": "Missing Chat capability messages.send", "path": "/api/v1/tenants/t1/applications/a1/conversations"}