Overshoot integrations and supported boundaries

Overshoot integrations use two interfaces. LiveKit carries WebRTC video from browser, native, or server publishers. The /v1beta API manages Streams, lists models, and accepts OpenAI-compatible chat completions. Requests can use ovs:// Stream references, HTTPS media, or data URLs, and responses can stream over SSE. Camera protocols, recording, workflows, and application actions connect through code your team owns around these boundaries.

Response
200msTypical response time for Overshoot-hosted vision models.
Media forms
3Use an ovs:// Stream reference, HTTPS URL, or data URL.
Video default
1.0 max_fpsDefault sampling ceiling for a referenced video segment.
History
600 secondsRolling retained context for each active Stream.
Regions
2The documented regions are us-west1 and us-central1.

Integrate a browser publisher

A browser can request a camera or screen-share MediaStreamTrack, create a Stream through your server, connect a LiveKit Room with the returned URL and token, and publish the track. Keep the organization API key on the server. Handle permission denial, track ending, network changes, and shutdown. Renew the 300-second lease, apply each fresh token, and replace an ended Stream.

Treat room connectivity and frame readiness as separate states. A publisher may be connected while capture is stalled. Check Stream status before inference, show a source-not-ready state, and stop local tracks when the user leaves.

Integrate native and server publishers

Use a LiveKit SDK suitable for the native or server environment and publish a video track to the returned room. Overshoot does not certify named hardware or expose direct USB, RTSP, RTMP, or ONVIF ingest. A gateway can consume another internal source and publish WebRTC through LiveKit. Validate capture, encoding, resource use, latency, buffering, security, and reconnect behavior on the target runtime.

Integrate OpenAI-shaped model clients

POST to https://api.overshoot.ai/v1beta/chat/completions with bearer authentication, a ready model id, messages, and multimodal content. Use max_completion_tokens to bound output and stream=true for SSE. Query /v1beta/models and filter status ready instead of relying on a hard-coded id. Configure the base URL, authentication, and media references explicitly, test provider-specific features, and distinguish API errors from valid unknown answers.

Existing OpenAI clients can supply familiar message and streaming primitives, but compatibility does not guarantee identical provider features. Test response_format, tools, image input, and video input with the exact ready model selected for the integration.

Streaming completion request

const response = await fetch("https://api.overshoot.ai/v1beta/chat/completions", {
  method: "POST",
  headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model, messages, stream: true, max_completion_tokens: 80 }),
})

Integrate live and supplied media

An ovs:// reference selects retained Stream media. Use image_url with frame_index=-1 for the latest frame or another anchor for a stable moment. Use video_url with start and end anchors for a segment; max_fps defaults to 1.0. Overshoot parses the identifier, so browsers cannot fetch it. HTTPS and data URLs support request-scoped media where the selected model accepts them. Apply current body limits.

Integrate SSE into the application

Read the response body as bytes, decode incrementally, process complete data lines, and stop at data: [DONE]. Retain partial text between network chunks and cancel the reader when the user leaves. Overshoot-hosted models respond in 200ms; measure first token and completion across the full integration. Reject interrupted structured output before dispatching an application event.

Expose loading, receiving, complete, cancelled, and interrupted states separately. Log the model, media anchor, prompt version, output limit, and timing boundary so an engineer can reproduce a slow or malformed result without guessing which request ran.

Integrate regions, history, and cleanup

Use us-west1 or us-central1 and store region with each Stream. One request cannot mix Stream references from different regions. Each active Stream keeps 600 seconds of history, so copy required evidence under an explicit policy. On cleanup, stop tracks and keepalive, disconnect LiveKit, cancel chat requests, and DELETE the Stream. Add idempotent server cleanup and monitor stale frames and ended reasons.

References

Connect the first supported source

Start with the browser publisher, then carry the same Stream lifecycle into your native or server integration.