{
  "name": "Eternal AI Image-to-Video API",
  "description": "Production REST API for animating a still image into a short video. Async submit + poll flow.",
  "api_base_url": "https://open.eternalai.org",
  "docs_host": "https://eternalai.org",
  "warning": "API requests must go to api_base_url, NOT to docs_host or any staging/preview subdomain. The docs host 307-redirects /api/image-to-video paths as a safety net, but write the right URL.",
  "authentication": {
    "primary": {
      "type": "bearer",
      "header": "Authorization",
      "value_format": "Bearer sk_<your-key>"
    },
    "alternative": {
      "type": "api_key",
      "header": "api-key",
      "value_format": "sk_<your-key>",
      "note": "Header name has no `x-` prefix. The `x-api-key` header is rejected by keys."
    },
    "get_key_url": "https://eternalai.org/api/keys",
    "server_rejection_text": "missing or invalid API key (expected Authorization: Bearer sk_... or api-key header)"
  },
  "endpoints": [
    {
      "name": "submit",
      "method": "POST",
      "url": "https://open.eternalai.org/api/image-to-video",
      "returns": "result.request_id (uuid)",
      "docs": "https://eternalai.org/api/docs#submit"
    },
    {
      "name": "poll_status",
      "method": "GET",
      "url": "https://open.eternalai.org/api/image-to-video/{request_id}/status",
      "cadence_seconds": [
        2,
        5
      ],
      "typical_completion_seconds": [
        30,
        90
      ],
      "terminal_states": [
        "completed",
        "failed"
      ],
      "success_field": "result.video_url",
      "failure_field": "result.error",
      "docs": "https://eternalai.org/api/docs#poll"
    }
  ],
  "type_gotchas": {
    "duration": "string, not number. Send '3' not 3. Numeric returns 'invalid JSON body'.",
    "cfg_scale": "number (0.0 to 1.0)",
    "seed": "integer"
  },
  "models": {
    "image_to_video": [
      "wan-ai/wan2.2-i2v-a14b-lightning"
    ]
  },
  "limits": {
    "image_input": "jpg/png/webp supplied as a public URL or base64 data URI. Maximum image file size is 15 MB.",
    "resolutions": [
      "480p",
      "580p",
      "720p"
    ],
    "cdn_retention": "Generated video_url assets expire about 24 hours after generation. Download and re-host videos that need long-term availability."
  },
  "references": {
    "openapi": "https://eternalai.org/api/openapi.json",
    "openapi_well_known": "https://eternalai.org/.well-known/openapi.json",
    "llms_txt": "https://eternalai.org/llms.txt",
    "human_docs": "https://eternalai.org/api/docs",
    "skill_md": "https://eternalai.org/skills/eternal-ai-image-to-video/SKILL.md"
  }
}