Create Stream
POST /api/v1/streamsAccess
Section titled “Access”Authentication options declared in the contract include user cookie session or bearer service token.
The shared authentication policy requires streams:configure. Resource access also depends on the caller’s role, organization, camera grants, and the operation’s validation.
User-session writes require recent authentication.
Authentication and permissions explains tokens, cookies, CSRF, and workspace context.
Parameters
Section titled “Parameters”| Name | Location | Required | Type | Description and constraints |
|---|---|---|---|---|
Idempotency-Key |
header | No | string or null | |
X-EyesOnIt-Session-Id |
header | No | string (uuid) | The sessionId the caller expects. Required when switching workspaces and for cookie requests after workspace rotation. A mismatched value returns 409 with X-EyesOnIt-Workspace-Changed: 1. Bootstrap with getCurrentPrincipal; never replay a mutation automatically after changing context. Bearer clients do not use this header. |
X-CSRF-Token |
header | No | string | Required for unsafe requests authenticated by CookieSession; ignored for bearer clients. minimum length 32. maximum length 256 |
Request body
Section titled “Request body”Required.
application/json — CreateStreamBody.
| Field | Type | Required | Description and constraints |
|---|---|---|---|
name |
string | Yes | minimum length 1. maximum length 128 |
location |
string or null | No | |
description |
string or null | No | |
externalId |
string or null | No | |
tags |
object | No | Shared integration metadata. At most 32 public entries; keys up to 64 characters and values up to 256 characters. The additional server-managed eyesonit.rtsp.routing.v1 entry may contain up to 4096 characters and must be preserved unchanged on replacement. Camera organization uses its dedicated hierarchy APIs. maximum properties 33 |
timeZone |
string or null | No | |
targetAnalyzedFps |
number | No | greater than 0.0. maximum 120.0. default 5 |
enabled |
boolean | No | default true |
processingResolution |
VideoResolutionPolicyModel | No | |
scene |
StreamSceneModel | No | |
recording |
LocalRecordingPolicyModel | No | |
archiveIndexing |
ArchiveIndexingPolicyModel | No | |
faceRecognition |
FaceRecognitionPolicyModel | No | |
sourceRouting |
RtspSourceRoutingBody or null | No | |
source |
string or null | No | |
fileSource |
FileSourceBody or null | No | |
customer |
CustomerStreamCreationBody or null | No | Atomically create a disabled camera owned by this customer. Requires a signed-in provider and Idempotency-Key. Configure analytics and enable monitoring after creation. Identical retries return the current camera without restoring access or configuration. |
cURL request template
Section titled “cURL request template”Set the connection variables described in Get started. Replace each additional EOI_… variable with the parameter value for this request. Prepare the body file using the request schema above. This template sends the request when run.
curl --fail-with-body --silent --show-error \ --request POST \ --header "Authorization: Bearer ${EOI_SERVICE_TOKEN}" \ --header "Content-Type: application/json" \ --data-binary @request.json \ "${EOI_API_BASE_URL}/streams"Contract responses
Section titled “Contract responses”The table records responses declared by the OpenAPI contract. See Errors and status codes for the runtime error envelope and shared failures.
| Status | Description | Media type | Body |
|---|---|---|---|
| 201 | Successful Response | application/json |
StreamResponse |
| 422 | Validation Error | application/json |
HTTPValidationError |
Operation identifier createStream. Browse Streams.
