> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.api.odyssey.ml/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

<Accordion title="What is the difference between a connection and a stream?">
  A **connection** represents an active session between your application and Odyssey. Opening a connection reserves a GPU-backed streamer resource, minimizing the time required to start streaming.

  A **stream** is the real-time video output generated by the world model.

  Key relationship:

  * A connection can exist **without** an active stream.
  * A stream **cannot exist without** a connection.
  * A single connection can run **multiple streams sequentially**.

  For a full explanation, see [**Connections vs Streams**](/connection-vs-stream).
</Accordion>

<Accordion title="Do I need to disconnect when I finish streaming?">
  Yes.

  Connections reserve resources until they are explicitly closed or until they time out due to inactivity.

  Always call `disconnect()` when your application is finished streaming.

  Using cleanup patterns such as `try/finally` (or React `useEffect` cleanup) helps prevent dangling sessions.
</Accordion>

<Accordion title="Why does my concurrent stream count appear higher than expected?">
  This is usually caused by **dangling sessions**.

  Common causes include:

  * Browser tab closures without disconnect
  * Network interruptions
  * Application crashes
  * Hot module reload during development
  * Multiple tabs running the same application

  Odyssey will automatically clean up stale sessions after a timeout window, but explicit cleanup is recommended.

  See [**Session Management**](/session-management) for best practices.
</Accordion>

***

## Broadcast

<Accordion title="What is Broadcast?">
  Broadcast allows **multiple clients to watch the same running stream**. Instead of creating separate streams per viewer, Broadcast delivers the same live output to all spectators.
</Accordion>

<Accordion title="Can spectators send prompts in Broadcast mode?">
  No.

  Broadcast is responsible only for **shared streaming output**.

  If you want multiple users to send prompts or interactions, your application must implement an orchestration layer that decides how and when prompts are forwarded to the model.
</Accordion>

<Accordion title="Does Broadcast change how recordings work?">
  No.

  Broadcast streams produce recordings **the same way as standard streams**.

  Recordings are tied to the **stream ID**, not to individual spectators.
</Accordion>

***

## Simulations

<Accordion title="What is the difference between streaming and simulations?">
  Streaming generates **real-time interactive video output**.

  Simulations run **asynchronous jobs** and produce output once the job completes.

  Simulations are commonly used for:

  * batch generation
  * scripted world sequences
  * offline processing

  Broadcast is only available for **interactive streaming sessions**.
</Accordion>

<Accordion title="How many simulation jobs can I submit at the same time?">
  Odyssey allows up to **10 simulation jobs** to be queued at the same time.

  Pending jobs include simulations that are:

  * waiting to be processed
  * currently being processed

  If you attempt to submit another job when the queue is full, the API will return a **429 quota exceeded** error.

  To maximize throughput, submit up to 10 jobs, and then submit a new job whenever one completes so the queue stays near its limit.
</Accordion>

<Accordion title="What happens if I submit simulation #11 while 10 are already queued?">
  The API will return a **429 quota exceeded** error.

  You must wait until one of the queued simulations completes before submitting another.
</Accordion>

<Accordion title="Will simulations run in parallel if I submit them together?">
  Possibly, but **execution order and timing are not guaranteed**.

  There are no guarantees about:

  * exact execution order
  * when a specific job will start
  * how many jobs run concurrently

  Simulation scheduling is managed internally by Odyssey.
</Accordion>

<Accordion title="Do broadcast spectators count toward concurrent stream limits?">
  No.

  Only the **stream owner** counts toward concurrent stream limits.

  Spectators connected through Broadcast do not create additional streams, so they do not consume additional stream slots.
</Accordion>

***

## Streaming Usage

<Accordion title="Can I reuse a connection for multiple streams?">
  Yes — this is recommended.

  A single connection can start and stop multiple streams sequentially. Reusing the same connection avoids repeated connection setup and allows new streams to start faster.

  Typical lifecycle:

  ```text theme={null}
  connect()

  startStream()
  endStream()

  startStream()
  endStream()

  disconnect()
  ```

  Keeping the connection open while starting new streams is the recommended pattern for interactive applications.
</Accordion>

<Accordion title="How long can a stream run?">
  A single interactive stream can run for up to **150 seconds**.

  If you need longer sessions, you can start a new stream after the previous one ends while keeping the same connection open.

  Odyssey supports **contiguous streaming sessions of up to 1 hour** within the same connection.
</Accordion>

<Accordion title="What happens if I forget to call disconnect()?">
  If a connection is not closed, it remains active until it times out.

  During that time, it will still count against:

  * concurrent stream limits
  * active session usage

  Explicit cleanup is strongly recommended.
</Accordion>
