openapi: 3.0.3 info: title: Castr Analytics Sub-Second Streams API description: 'Castr is a live video streaming, multistreaming, and video-hosting (VOD) platform. This OpenAPI describes Castr''s documented, self-serve REST API at https://api.castr.com/v2 for managing live streams and their multistream platform destinations, sub-second (WebRTC) streams, video hosting folders and uploads, live-to-VOD recordings, activity logs/events and stream stats, and webhook endpoints. Requests are authenticated with an API token issued from the account settings API section and sent in an authorization header. Endpoint paths, methods, and resource groupings are taken from Castr''s published developer reference and its machine index (developers.castr.com, including llms.txt). The request/response schemas here are honestly modeled from the documentation rather than copied from a Castr-published OpenAPI file; verify property-level detail against the live reference.' version: '1.0' contact: name: Castr url: https://castr.com x-modeled: true servers: - url: https://api.castr.com/v2 description: Castr production API security: - apiToken: [] tags: - name: Sub-Second Streams description: Ultra-low-latency (WebRTC) live streams. paths: /sub_second_streams: get: operationId: listSubSecondStreams tags: - Sub-Second Streams summary: List sub-second streams responses: '200': description: A list of sub-second streams. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SubSecondStream' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createSubSecondStream tags: - Sub-Second Streams summary: Create a new sub-second stream description: Creates an ultra-low-latency (WebRTC) live stream. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SubSecondStreamCreate' responses: '201': description: The created sub-second stream. content: application/json: schema: $ref: '#/components/schemas/SubSecondStream' '401': $ref: '#/components/responses/Unauthorized' /sub_second_streams/{stream_id}: parameters: - $ref: '#/components/parameters/StreamId' get: operationId: getSubSecondStream tags: - Sub-Second Streams summary: Get a sub-second stream responses: '200': description: The requested sub-second stream. content: application/json: schema: $ref: '#/components/schemas/SubSecondStream' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateSubSecondStream tags: - Sub-Second Streams summary: Update a sub-second stream requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SubSecondStreamCreate' responses: '200': description: The updated sub-second stream. content: application/json: schema: $ref: '#/components/schemas/SubSecondStream' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteSubSecondStream tags: - Sub-Second Streams summary: Delete a sub-second stream responses: '204': description: The sub-second stream was deleted. '404': $ref: '#/components/responses/NotFound' components: responses: NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid API token. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: SubSecondStreamCreate: type: object required: - name properties: name: type: string enabled: type: boolean SubSecondStream: type: object properties: id: type: string name: type: string enabled: type: boolean ingest: type: object properties: rtmp_url: type: string webrtc_url: type: string playback: type: object properties: webrtc_url: type: string embed_url: type: string Error: type: object properties: error: type: string message: type: string parameters: StreamId: name: stream_id in: path required: true description: The unique identifier of the stream. schema: type: string securitySchemes: apiToken: type: apiKey in: header name: authorization description: API token issued from the Castr account settings API section (https://castr.com/app/manage/api), sent in the authorization header.