Skip to main content

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.

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:
AttemptWait before
110s
220s
340s
480s
5+120s, capped
Stop polling once status is ready, archived, or deleted.
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 to be added to the early-access list.