Skip to main content

Streams & Containers API

The Streams & Containers API endpoints return the streams and stream containers configured in an environment.

The APIs supports:

Authentication

These API endpoints require a fine-grained API key. Each endpoint maps to a specific scope:

EndpointRequired scope
List streamsstreams:read
List stream containersstream_containers:read

Legacy API keys (the events, workbench, or auth roles) are not accepted on these endpoints. If you currently use a legacy key, issue a fine-grained API key with the scopes above from the workbench. See API credentials for how to create one.

Detailed specs and examples can be found in the Atomic API spec for the Streams endpoints.

API endpoints

List streams

Returns all streams in the environment. This includes the built-in All cards stream that every environment has. Streams that have been deleted in the workbench are not returned.

curl -X GET "$ATOMIC_API/v1/$ENVIRONMENT_ID/streams" \
--header "Authorization: Bearer $TOKEN" | jq
Sample response
{
"data": [
{
"id": "GAxrYyaO",
"name": "All cards",
"environmentId": "4dkLrv",
"organisationId": "atomic-demo",
"created": "2026-04-29T22:00:00.000Z",
"updated": "2026-04-29T22:00:00.000Z"
},
{
"id": "Kp3qWm12",
"name": "Onboarding",
"environmentId": "4dkLrv",
"organisationId": "atomic-demo",
"created": "2026-05-02T01:15:00.000Z",
"updated": "2026-05-02T01:15:00.000Z"
}
]
}

Errors

  • 401: No permission to environment, or no auth token provided
  • 403: API key does not have the streams:read scope

List stream containers

Returns all stream containers in the environment. Every environment starts with a Default container, and containers added in the workbench appear alongside it.

The id of a container is the value you configure the Atomic SDKs with.

curl -X GET "$ATOMIC_API/v1/$ENVIRONMENT_ID/stream-containers" \
--header "Authorization: Bearer $TOKEN" | jq

To return only the containers assigned to a single stream, pass that stream's ID as streamId:

curl -X GET "$ATOMIC_API/v1/$ENVIRONMENT_ID/stream-containers?streamId=$STREAM_ID" \
--header "Authorization: Bearer $TOKEN" | jq
Sample response
{
"data": [
{
"id": "dkRrWdJr",
"name": "Homepage Container",
"streamId": "Kp3qWm12",
"environmentId": "4dkLrv",
"organisationId": "atomic-demo",
"created": "2026-05-02T01:20:00.000Z",
"updated": "2026-05-08T04:41:00.000Z",
"enabled": true,
"isDefault": false,
"cardLimit": 50,
"filter": [],
"sdkInfo": {
"versions": [
{
"version": "26.2.0",
"platform": "Web",
"lastSeenAt": "2026-05-08T04:41:00.000Z",
"clientAppVersion": null,
"containerVariant": "single"
}
]
}
}
]
}

Response fields

FieldDescription
idThe container ID. This is the value the Atomic SDKs are configured with.
nameThe container's name in the workbench.
streamIdThe stream this container renders cards from. Each container has exactly one stream.
enabledWhether the container is enabled. Disabled containers do not serve cards to the SDKs.
isDefaultWhether this is the environment's default container.
cardLimitThe maximum number of cards the container holds at one time. Defaults to 50.
filterFilters applied to the cards the container displays. Empty when the container shows every card in its stream.
sdkInfoSDK versions seen calling this container, as shown under Monitoring SDK usage in the workbench. Refreshed hourly, with entries pruned after seven days, so it is empty until an SDK connects.

Errors

  • 400: streamId was supplied more than once
  • 401: No permission to environment, or no auth token provided
  • 403: API key does not have the stream_containers:read scope

An unknown streamId, or one belonging to a different environment, is not an error - it returns an empty list.

More

  • Streams - the workbench guide to the streams this API lists
  • Stream containers - how containers are created and assigned to streams
  • Environments API - to discover the environmentId these endpoints are scoped to
  • API credentials - how to issue fine-grained API keys with the scopes this API requires