Skip to content
StatusSupportDashboard

Add frame

client.streams.addFrame(stringnamespace, StreamAddFrameParams { image_data_uri, stream_id, timestamp } body, RequestOptionsoptions?): StreamAddFrameResponse { requestId, status }
POST/v1/streams/{namespace}/frames

Ingest a single livestream frame as an image data URI plus relative timestamp in milliseconds. The stream does not need to be created beforehand. Only image/jpeg, image/png, and image/webp are accepted. The decoded bytes must match the declared mime type, decode as a valid image, stay within 5 MB, and stay within 4096x4096 / 16,000,000 total pixels. Timestamps are relative milliseconds from stream start and must be unique and strictly increasing within a stream. Duplicate or out-of-order frame timestamps are accepted at the API boundary but ignored by downstream processing. This method returns immediately after the frame has been accepted for processing.

ParametersExpand Collapse
namespace: string

The namespace to ingest stream data into

body: StreamAddFrameParams { image_data_uri, stream_id, timestamp }
image_data_uri: string

A data URI containing a base64-encoded frame image. Only image/jpeg, image/png, and image/webp are accepted. The decoded bytes must match the declared mime type, decode as a valid image, stay within 5 MB, and stay within 4096x4096 / 16,000,000 total pixels.

stream_id: string
timestamp: number
minimum0
ReturnsExpand Collapse
StreamAddFrameResponse { requestId, status }

Stream ingestion request accepted for asynchronous processing.

requestId: string
status: "accepted"

Add frame

import Safetykit from 'safetykit';

const client = new Safetykit({
  apiKey: process.env['SAFETYKIT_API_KEY'], // This is the default and can be omitted
});

const response = await client.streams.addFrame('namespace', {
  image_data_uri: 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoQABAAPm02mUmkIyIh...',
  stream_id: 'YOUR_STREAM_ID',
  timestamp: 1000,
});

console.log(response.requestId);
{
  "requestId": "req_01h2m7qdmdjckc30e1mnq6xqfd",
  "status": "accepted"
}
Returns Examples
{
  "requestId": "req_01h2m7qdmdjckc30e1mnq6xqfd",
  "status": "accepted"
}