Overview
Oxygen is a video generation model provided by AZ8, an AI video creation platform based in Singapore (formerly Videoinu). APIYI serves it asoxygen-1.0 through an OpenAI Videos-compatible API (POST /v1/videos to submit, GET /v1/videos/{id} to query), with 4–15 second clips at 480p / 768p, billed at $0.02 per second regardless of resolution.
Video Generation API Reference
Top-up Bonuses
Let an AI Agent Integrate It for You
Copy this prompt and paste it into Codex / Claude Code / Cursor
The agent first fetches the plain-text version of this page (append .md to any docs URL), then writes code for your stack. The common mistakes are already spelled out: always pass size, put advanced parameters in the input_reference JSON envelope, and set the length only with seconds.
Integrate or debug Oxygen (oxygen-1.0) video generation in this project (text-to-video / first frame / first and last frame / reference media).
Read the docs before writing code: fetch https://docs.apiyi.com/en/api-capabilities/oxygen/overview.md for the plain-text version of this page; parameters and code samples are at https://docs.apiyi. …
- Endpoints: OpenAI Videos format. Submit with
POST https://api.apiyi.com/v1/videos(JSON), query withGET https://api.apiyi.com/v1/videos/{id}. Subm …
10 requirements in total. Use the button below to copy the full prompt.
What this prompt protects you from
What this prompt protects you from
Why APIYI’s Oxygen?
Volume pricing
Automatic refunds
OpenAI Videos compatible
/v1/videos, so existing Sora-style code needs few changesTop-up bonuses stack
Full video model lineup
Global access
api.apiyi.com with one API key, no overseas account neededKey Features
Four generation modes
Two resolutions
Any whole length from 4 to 15 s
Built-in audio
Pricing
- Billed by the requested
seconds, charged when the task is accepted; the actual clip runs slightly longer (about 4.5 s for a 4 s request) at no extra cost - Resolution, aspect ratio, quality tier (
quality), prompt enhancement (prompt_enhance), and reference media do not affect the price - Failed tasks (provider failure, timeout, etc.) are refunded in full automatically
- Submissions that return 400 are not charged; queries and downloads are free
Group Setup
oxygen-1.0 works in the default group, and the svip group works too. Set the token’s billing mode to Pay-as-you-go Priority. If a call returns “no available channel in the current group”, the token’s group does not include this model or the model name is misspelled.
Technical Specs
API Endpoints
Generation Modes
Only five top-level fields take effect:model, prompt, seconds, size, and input_reference. First and last frames, reference media, 1:1, and the quality tier are advanced parameters that go into the input_reference JSON envelope (a JSON string starting with {):
size maps to resolution:
Best Practices
Test with 4 seconds first
Always set size
1280x720, portrait 720x1280; for more detail use 1792x1024 / 1024x1792 (768p)Use first and last frames with similar aspect ratios
Host media on stable public storage
Poll every 5 seconds with a 15-minute timeout
Copy video_url to your storage right away
Error Codes & Retries
message field, e.g. {"message":"{\"error\":{\"code\":\"invalid_params\",...}}","type":"task_error"}, so parse it a second time.FAQ
Why did my landscape video come out portrait?
Why did my landscape video come out portrait?
size was not passed. Without it the gateway defaults to 720x1280 (portrait). For landscape, pass 1280x720 or 1792x1024 explicitly.Why do last_image / reference_images have no effect?
Why do last_image / reference_images have no effect?
model, prompt, seconds, size, and input_reference take effect there; everything else is silently dropped. Put them in the input_reference JSON envelope, see “Generation Modes” above.Can I still use 320p?
Can I still use 320p?
"resolution":"320p" in the envelope returns 400 at submission (must be one of 480p/768p) and is not charged. Use 480p instead.Passing resolution does nothing?
Passing resolution does nothing?
resolution is dropped. Put it in the envelope: "input_reference": "{\"resolution\":\"768p\"}", or pick it with size (1792x1024 / 1024x1792 = 768p). Both resolutions cost the same.Do the resolutions cost different amounts?
Do the resolutions cost different amounts?
What are quality and prompt_enhance? Do I need them?
What are quality and prompt_enhance? Do I need them?
quality is the quality tier (high / normal); prompt_enhance controls whether the model rewrites your prompt: refine polishes and expands it, format only tidies the formatting, none uses it as written. The defaults, high + refine, match the behavior before 2026-10-14. To have your prompt applied word for word, send "prompt_enhance":"none" in the envelope. Neither parameter affects the price.The status says completed but /content returns 400?
The status says completed but /content returns 400?
completed, /v1/videos/{id}/content may need a few more seconds. Use video_url from the query response instead.How long does the video link last?
How long does the video link last?
expires_at in the query response). Download and store it promptly.Am I charged for failed tasks?
Am I charged for failed tasks?
failed is refunded in full automatically, and submissions that return 400 are not charged.What should I do about an occasional upstream_error?
What should I do about an occasional upstream_error?
Why is the clip slightly longer than seconds?
Why is the clip slightly longer than seconds?
seconds, so there is no extra charge.Can the first frame be Base64?
Can the first frame be Base64?
input_reference and images in the envelope accept image data URIs (such as data:image/jpeg;base64,...). Reference video and audio accept https URLs only.Can I set the aspect ratio for image-to-video?
Can I set the aspect ratio for image-to-video?
aspect_ratio. You can still pick the resolution via size or resolution in the envelope.