realtime-apps

Create a Realtime app

Provisions a new Realtime app for the workspace and returns it with the initial key. Store the key secret when you receive it because later responses do not include it. If you lose the secret, create a new key and revoke this one.

post/v1/realtime/apps

Request

  • Base URL: https://us1.platform.bird.com
  • URL: https://us1.platform.bird.com/v1/realtime/apps
  • Auth: one of:
    • HTTP bearer
    • API key in cookie bird_session

Headers

Idempotency-Keystring

Client-supplied key. On operations supporting request deduplication, a retained response is replayed for duplicate requests with the same key within the idempotency window (3 hours by default). This protection requires a workspace, organization, or staff-account scope. User-only and unscoped unauthenticated operations, streams, and operations with a separate replay contract do not use this response replay.

On a supported operation, if idempotency protection is unavailable before execution, the API returns 503 IdempotencyUnavailable (E01033) without executing this attempt. Retry with backoff using the same key and request. An operation that takes effect before its response is retained can still execute again on retry.

Two distinct 409 errors signal misuse:

  • request_in_progress (E01004): The same key is currently being processed by a concurrent request. Wait briefly and retry. The lock expires within 30 seconds.
  • idempotency_key_reuse (E01005): The same key has already completed against a different request body or method. Generate a new key.

Recommended key format is <event-type>/<entity-id> (for example welcome-user/usr_abc123).

X-Workspace-Idstring

Workspace context for the request. Required for dashboard authentication and master keys. Workspace keys and access tokens already identify their workspace; send that workspace or omit the header. A different one is rejected.

X-Organization-Idstring

Organization context for the request. Required for dashboard authentication. An API key or access token carries its own organization, so send either that organization or no header at all; a different one is rejected.

Request body

client_eventsboolean

Allow clients to trigger events directly (client events).

connection_countingboolean

Count the connections subscribed to each channel and expose the count on channel queries.

connection_count_eventsboolean

Broadcast connection-count events to public and private channel subscribers. Requires connection_counting. Presence channels do not emit these events; use a channel query to read their connection count.

watchlist_eventsboolean

Tell a signed-in member when the members on their watchlist come online or go offline. The watchlist is part of the identity your backend signs at signin.

authorized_connectionsboolean

Require every connection to be authorized.

namestring required

A label for the app, shown wherever it is listed.

region'us1' | 'eu1' required

Deployment region identifier.

Example request

{
  "name": "chat-production",
  "region": "eu1",
  "connection_counting": true
}

Response

Realtime app created. Includes the initial key's one-time secret.

created_atstring date-time required
updated_atstring date-time required
client_eventsboolean required

Allow clients to trigger events directly (client events).

connection_countingboolean required

Count the connections subscribed to each channel and expose the count on channel queries.

connection_count_eventsboolean required

Broadcast connection-count events to public and private channel subscribers. Requires connection_counting. Presence channels do not emit these events; use a channel query to read their connection count.

watchlist_eventsboolean required

Tell a signed-in member when the members on their watchlist come online or go offline. The watchlist is part of the identity your backend signs at signin.

authorized_connectionsboolean required

Require every connection to be authorized.

idstring required
app_idinteger required

The numeric Realtime app id. Use it together with a key and secret to initialize a Realtime client/server SDK. Immutable.

namestring required

A label for the app, shown wherever it is listed.

region'us1' | 'eu1' required

Deployment region identifier.

status'active' | 'suspended' required

Lifecycle state of the app. active apps serve connections; suspended apps are provisioned but reject connections.

Example response

{
  "created_at": "2026-05-20T09:14:52Z",
  "updated_at": "2026-05-25T16:42:01Z",
  "id": "rap_01krdgeqcxet5s7t44vh8rt9mg",
  "app_id": 432557,
  "name": "chat-production",
  "region": "us1",
  "key": {
    "id": "rak_01krdgeqcxet5s7t44vh8rt9mg",
    "key": "d0e95a856ddc1b09d4c8",
    "secret": "862925e1991a8b6902f9"
  }
}

Changes

No recorded changes to this operation across all 2 revisions of this API.