https://api.edenai.run/v3 and the video API works as a drop-in replacement for OpenAI’s video generation.
Overview
The surface is a facade overPOST /v3/universal-ai/async for video/generation_async: same providers, same pricing, same job table, same polling and webhooks. Only the wire shape is OpenAI’s.
Usage
Image-to-Video
Image-to-video with the SDK’s file upload (multipart):input_reference accepts {"file_id": "<id from /v3/upload>"} or {"image_url": "https://..."} (an http(s) URL to a JPEG or PNG). Base64 data URLs are rejected; upload the image instead.
Request fields
Eden extensions (not in OpenAI’s API):
seed, provider_params (gated by the per-provider allow-list), webhook_receiver, user_webhook_parameters.
On a JSON body, unknown fields are rejected (422), so fallbacks and @edenai routing are not available here. A multipart form silently ignores unknown form fields instead.
Video object
status:queuedon the create response,in_progresson later reads while the job runs, thencompletedorfailed.progressgoes from 0 to 100.providerandcost(USD) are Eden extensions.costis 0 while the job is queued or in progress, and updates to the settled amount once the job completes or fails.idis the universal-ai job id: the same job is visible atGET /v3/universal-ai/async/{id}.
Limitations
- Response
size:sizeis only echoed on the create response; reads returnnull(the job row does not store the request).secondson reads is the duration the provider actually rendered. - Unsupported Routes: No remix, extensions, edits or characters: these OpenAI routes answer 400.
- Keyset Pagination:
afteris a keyset cursor on(created_at, id): pass the previous page’slast_idto get the jobs that follow it in newest-first order, rather than an offset-style page number. - Only the
videocontent variant (no thumbnails / spritesheets). - The content redirect points at a signed link valid for 7 days; after that the endpoint serves the stored bytes directly.
- Authentication errors (401 for a bad token, 403 when the header is missing), rate-limit (429) and query-parameter validation errors (e.g.
?limit=0) use the platform’s{"detail": ...}shape rather than the OpenAI error envelope.
Pricing
Identical to universal-ai video generation:info_pricing rows per provider/model, per-second or per-request, with resolution tiers where seeded. Nothing is priced differently for coming through this surface.