## Add Frame **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. ### Path Parameters - `namespace: string` The namespace to ingest stream data into ### Body Parameters - `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` ### Returns - `requestId: string` - `status: "accepted"` - `"accepted"` ### Example ```http curl https://api.safetykit.com/v1/streams/$NAMESPACE/frames \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $SAFETYKIT_API_KEY" \ -d '{ "image_data_uri": "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoQABAAPm02mUmkIyIh...", "stream_id": "YOUR_STREAM_ID", "timestamp": 1000 }' ```