Roboflow Serverless Video Streaming (WebRTC)
Stream a webcam, RTSP camera or file to Roboflow Cloud over WebRTC and run detection models or Workflows on every frame, getting annotated video and JSON results back.
Overview
Best for: Object detection, counting and safety monitoring on live cameras without running your own GPU.
At a glance
Price is CPU streaming; GPU medium about $0.05-$0.10/min, GPU large up to $0.20/min. Free plan 10 credits/month. 10 concurrent streams per workspace by default. GPU large runs about 5 FPS.
None
None
n/a
Quality and FPS can take up to a minute to ramp up at 1080p30 (vendor docs).
us, eu, ap
Not verified in this pass.
Features
- any Roboflow model or Workflow
- bidirectional video track with annotations
- reliable JSON data channel
- regions us / eu / ap
- same SDK works against self-hosted Inference server
Pricing
| What | Price | Unit |
|---|---|---|
| GPU small / medium / large | 1 credit per 80 / 60 / 30 min | of video |
| CPU stream | 1 credit per 10 h | of video |
| Credit price (Core plan) | $2.86 to $3.90 | per credit |
| Core plan | $39 | per month |
CPU 0.1 credit/h at $2.86 = $0.005/min; GPU large 2 credits/h at $6 = $0.20/min; GPU medium $0.05-$0.10/min
Free tier: Free plan includes 10 credits per month (about 10 hours of GPU-medium streaming).
Source: roboflow.com
Setup
- Create a Roboflow workspace, API key and a model or Workflow.
- pip install "inference-sdk[webrtc]" (or npm install @roboflow/inference-sdk).
- Point the client at https://serverless.roboflow.com and start a WebRTC stream with a StreamConfig (plan, region, outputs).
- Handle JSON predictions from the data channel; stop the session to stop billing.
Endpoint
https://serverless.roboflow.com (WebRTC signalling via SDK)
Authentication
Roboflow API key
Quick start python
# pip install "inference-sdk[webrtc]" (SDK marked experimental)
# Sketch based on documented parameters; check field names
# against the examples/webrtc_sdk scripts in roboflow/inference.
from inference_sdk import InferenceHTTPClient
from inference_sdk.webrtc import StreamConfig, WebcamSource
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY",
)
session = client.webrtc.stream(
source=WebcamSource(),
workflow="your-workflow-id",
workspace="your-workspace",
config=StreamConfig(
data_output=["predictions"],
requested_plan="webrtc-gpu-small",
requested_region="us",
),
)
@session.on_data("predictions")
def handle(predictions, metadata):
print(metadata.frame_id, predictions)
session.run()
Written from the current docs. Check the vendor's SDK version before you ship.
Warnings
Streams die at zero credits
A user reported HTTP 402 CreditsExceededError mid-stream even with ~50 credits showing; keep a buffer and enable top-ups for production cameras.
Billed from connection, not from first result
Billing starts when the function spawns and WebRTC connects, including the up to one minute ramp-up.
Credit price varies a lot
The same credit costs $2.86 to $6 depending on pack versus on-demand; budget at the on-demand rate.
Experimental SDK
The WebRTC SDK is labelled experimental; pin versions.
Plus 9 warnings that apply to all avatars and live video APIs. See category warnings.
Limits
- 10 concurrent streams per workspace by default
- Billing starts when the serverless function spawns and WebRTC connects
- Streams stop with HTTP 402 when credits run out
Models and products
| Name | Status |
|---|---|
| webrtc-gpu-medium | GA |
| webrtc-gpu-small | GA |
| webrtc-gpu-large | GA |
| CPU video streams | GA |
Docs and sources
Docs
Sources used
- docs.roboflow.com/deploy/serverless-video-streaming-api
- roboflow.com/credits
- roboflow.com/pricing
- discuss.roboflow.com/t/http-402-payment-required-creditsexceedederror-when-usin...
Exact SDK call signature, max stream duration, when billing stops.