Beta Odyssey

Odyssey API (interactive world model video)

Streams an interactive AI-generated video world you can steer with text prompts in realtime, over WebRTC with JS and Python SDKs.

Est. per minuten/a
1 high-severity warning

Overview

Best for: Interactive storytelling, prototypes and demos of playable AI video.

At a glance

Free tierYes
Resolution p720
FPS20
Max session min2.5
Concurrency5
WebRTCYes
WebSocketYes
Self-hostNo
Open weightsNo

Streams end after 150 s by default; connections max 60 min. Concurrency 5 is the free tier. No published pricing. Resolution and fps (20-22) are third-party reports.

Audio in

None

Audio out

Not documented

Languages

Text prompts.

Latency

Third-party reports about 20-22 fps at 720p (frame every ~50 ms); no official latency figure.

Regions

Not published.

Compliance

Not verified.

Features

  • text-to-interactive-video
  • image-to-video start frames (resized to 1280x704)
  • interact() mid-stream prompts
  • broadcast/viewable streams
  • async simulation jobs
  • short-lived session JWTs for browsers

Pricing

WhatPriceUnitNotes
Free tier$0Five concurrent interactive streams; total hours set by account quota
How the per-minute estimate was worked out

No public price list found; pricing page 404s

Free tier: Free accounts get 5 concurrent streams; hour quota not published.

Source: documentation.api.odyssey.ml

Setup

  1. Get an API key at developer.odyssey.ml.
  2. npm install @odysseyml/odyssey.
  3. connect() to get a MediaStream, attach it to a video element.
  4. startStream with a prompt, interact() to steer, endStream() and disconnect() when done.
  5. Mint session JWTs server-side for browser use instead of exposing the key.

Endpoint

@odysseyml/odyssey SDK (WebRTC + WebSocket signaling)

Authentication

API key (ody_...) or short-lived session JWT

Quick start javascript

import { Odyssey } from "@odysseyml/odyssey";

// Use a server-minted session credential in production, not the raw key
const client = new Odyssey({ apiKey: "ody_your_api_key_here" });

const mediaStream = await client.connect();
document.querySelector("video").srcObject = mediaStream;

await client.startStream({ prompt: "A cat on a sunny windowsill" });
await client.interact({ prompt: "Pet the cat" });
// each stream lasts max 150 s by default
await client.endStream();
client.disconnect();

Written from the current docs. Check the vendor's SDK version before you ship.

Warnings

No published pricing

Odyssey's pricing URL redirects to a 404 on odyssey.systems; usage is metered in hours against an account quota. Get rates in writing before launch.

2.5 minute stream cap

Streams end after 150 s by default; the docs suggest a dual-session rollover pattern that uses two concurrent slots.

Research-grade output

World models drift and lose consistency over time; do not promise game-like persistence.

Domain move

The company appears to be moving from odyssey.ml to odyssey.systems; docs still live at documentation.api.odyssey.ml.

Plus 9 warnings that apply to all avatars and live video APIs. See category warnings.

Limits

  • Each stream max 150 s by default (start a new stream to continue)
  • Each connection max 60 min
  • Idle connection with no active stream disconnects after 15 min
  • Up to 10 queued simulation jobs
  • Total streaming hours capped by account quota

Models and products

NameStatusNotes
Odyssey-2 ProGAModel named in the API quickstart; developer API launched 23 Jan 2026.
Odyssey-2 MaxBetaReleased April 2026 per third-party listings.
Odyssey-3PreviewShown on odyssey.systems as the newest foundation world model; API availability not confirmed.

Docs and sources

Docs

Sources used

Not fully verified

Pricing, fps/latency, which model the API serves today, Odyssey-3 API availability.

Similar avatars + video APIs

Spotted a wrong price or a dead link?