Measured on production · 2026-07-30
Performance & latency
Real numbers from the live API — every figure below was measured againstapi.primateintelligence.ai, and you can repeat the measurement with a free key in one POST. No estimates, no lab conditions.
How fast is streaming analysis (live video over WebRTC)?
Point a camera or stream a file; results arrive on a data channel while the video plays.
| Metric | p50 | p95 | Samples | Notes |
|---|---|---|---|---|
| Per-frame model inference | 45 ms | 316 ms | 183 frames / 10 sessions | GPU pipeline time per analyzed frame, reported in every result payload (timing.inference_ms). |
| Sustained analysis rate | 11.8 fps | 13.3 fps | 183 frames / 10 sessions | Analyzed frames per second per live session (session_fps), open-vocabulary prompt. |
| Session setup (create → live) | 6.6 s | 6.9 s | 10 sessions | One-time: POST /v1/streams → client token → WebRTC offer/answer/ICE → session live. First result arrives with frame 0 immediately at live. |
| Result delivery (model → your WebRTC data channel) | 1.4 ms | 1.4 ms | 183 frames | Server-side hop from model output to the WebRTC data channel (sidecar_to_webrtc). Network transit to your client adds your RTT. |
What do real production sessions see?
Server-side telemetry from every customer streaming session, last 30 days (2026-07-01 → 2026-07-30) — not a synthetic benchmark. All sessions with duration > 0 are included.
| Metric | p50 | p95 | Samples | Notes |
|---|---|---|---|---|
| Time to first analyzed frame (session join → first result) | 1.09 s | 4.25 s | 46 sessions | Server-side metered on every production session (time_to_first_frame_s). Measured from WebRTC join to the first analyzed-frame result. |
| GPU queue wait before session start | 0 s | 0 s | 46 sessions | 0 of 46 sessions waited in queue in the window — capacity headroom, not luck of sampling. Queued time is never billed. |
How long does an async analysis take (upload, then ask)?
POST /v1/analyses with Prefer: wait — one request, terminal answer. Wall-clock includes queue time; queued time is never billed.
| Metric | p50 | p95 | Samples | Notes |
|---|---|---|---|---|
| End-to-end analysis, 6-second video | 48.5 s | 110 s | 9 runs | Wall-clock from POST /v1/analyses to terminal status (Prefer: wait), including queue time. Video already uploaded. p95 reflects one queue-delayed outlier. |
| End-to-end analysis, 23-second video | 57.1 s | 59.6 s | 12 runs | Same methodology, longer clip. Queued time is never billed. |
How accurate is the model? (published benchmarks)
Darwin, our video JEPA model, benchmarked with a linear probe on a frozen backbone. Full protocol, figures, and CPU/GPU throughput comparisons inDarwin: Video JEPA model that outperforms SOTA models while running on edge CPU (Mehdi Nikkhah, 2026-07-29).
| Benchmark | Result | Protocol |
|---|---|---|
| Something-Something V2 (video) | ~73% | linear probe, frozen backbone |
| Kinetics-700 (video) | ~78% | linear probe, frozen backbone |
| ImageNet-1K (image) | ~88% | linear probe, frozen backbone |
How were these numbers measured?
- All latency numbers were measured against the live production API (api.primateintelligence.ai) on 2026-07-30 from a client in US-East. No staging environments, no cherry-picking: every run in each batch is included in the percentiles.
- Fleet telemetry: server-side metering recorded on every production streaming session (time_to_first_frame_s, queue_wait_s in our metering store), aggregated over the trailing 30 days — real customer sessions, all included, no filtering beyond duration > 0.
- Streaming: 10 complete WebRTC sessions via the public streaming API (create stream → mint client token → signaling → live), using the open-source example client from github.com/Primate-Intelligence/primate-examples. 183 result frames collected.
- Async: repeated POST /v1/analyses calls with Prefer: wait against pre-uploaded videos; wall-clock measured to terminal status, queue time included.
- You can repeat this yourself with a free key: POST https://api.primateintelligence.ai/v1/sandbox (no signup) — and per-frame timing is included in every streaming result payload, so the API self-reports its own latency in production.
Performance FAQ
What is the latency of the Primate Vision streaming API?
Measured against production on 2026-07-30: per-frame model inference is 45 ms p50 / 316 ms p95, sustaining 11.8 analyzed frames per second per session (p50). Session setup (stream create through WebRTC connection to live) is a one-time ~6.6 s, and the first result arrives with frame 0 the moment the session is live.
How long does an async video analysis take?
Measured end-to-end on production (including queue time): 48.5 s p50 for a 6-second clip and 57.1 s p50 for a 23-second clip, from POST /v1/analyses to terminal status. Use Prefer: wait to collapse the poll loop into a single request; for latency-critical work use the streaming path. Queued time is never billed.
How accurate is the model?
Darwin (our video JEPA model) scores ~73% on Something-Something V2, ~78% on Kinetics-700, and ~88% on ImageNet-1K with a linear probe on a frozen backbone — matching or exceeding V-JEPA 2 class models while running in real time on a single commodity CPU. Full protocol in the published benchmarks post.
How long until the first result on a live stream?
Across all production sessions in the last 30 days (n=46, server-side metering): 1.09 s p50 / 4.25 s p95 from WebRTC join to the first analyzed-frame result, and 0 of 46 sessions waited in a GPU queue. This is fleet telemetry from real customer sessions, not a synthetic benchmark.
Can I verify these numbers myself?
Yes — that is the point of this page. Get a free key with one call (POST https://api.primateintelligence.ai/v1/sandbox, no signup), and every streaming result payload carries its own timing block (inference_ms, session_fps), so the API self-reports latency in production. The measurement client is open source at github.com/Primate-Intelligence/primate-examples.
Measure it yourself
# Free key, no signup
curl -s -X POST https://api.primateintelligence.ai/v1/sandbox