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

# Checking status

> How to know when a video is live.

After `POST /v1/videos`, your video is processing. To know when it's
live, poll `GET /v1/videos/{id}`.

A video is live when:

* `status` is `"ready"`
* `is_available` is `true`
* `playback` contains a `playback_id`

## Suggested polling schedule

Short videos finish in 90 seconds; full games can take 30 minutes.
Exponential backoff works well:

| Attempt | Wait before  |
| ------- | ------------ |
| 1       | 10s          |
| 2       | 20s          |
| 3       | 40s          |
| 4       | 80s          |
| 5+      | 120s, capped |

Stop polling once `status` is `ready`, `archived`, or `deleted`.

```javascript theme={null}
async function waitForReady(videoId, apiKey, { maxAttempts = 25 } = {}) {
  for (let i = 0; i < maxAttempts; i++) {
    const wait = Math.min(10_000 * 2 ** i, 120_000);
    await new Promise((r) => setTimeout(r, wait));

    const res = await fetch(`https://api.myeden.me/v1/videos/${videoId}`, {
      headers: { Authorization: `Bearer ${apiKey}` },
    });
    if (!res.ok) throw new Error(`status check failed: ${res.status}`);
    const body = await res.json();

    if (body.status === 'ready' && body.is_available) return body;
    if (body.status === 'deleted') throw new Error('Video was deleted');
  }
  throw new Error('timeout waiting for video to become ready');
}
```

## Coming in v1.1: webhooks

Polling works, but webhooks are better. We're shipping `video.ready` and
`video.failed` webhooks in v1.1. Email [support@myeden.me](mailto:support@myeden.me) to be added
to the early-access list.
