Blog
AI Image & Video API Guides
Hands-on model tests, production tutorials, prompt techniques, and current API pricing for generative media teams.

flux-2 for E-Commerce Product Images: A hiapi API Recipe
A working recipe for e-commerce product images with flux-2/text-to-image on hiapi — every image reproduced from the exact prompt printed above it. flux-2 leans on prompt adherence and high fidelity: exact counts, exact colours, clean backgrounds, and blank labels, followed literally. Verified API facts: async /v1/tasks endpoint, resolution in MP form (0.5/1/2/4 MP), aspect_ratio optional; pricing $0.0375–$0.125 per image. Includes copy-paste create/poll/download code plus a batch loop for generating a whole catalog by SKU.

seedance-2-0 for Short-Form Video: A hiapi API Recipe
A working recipe for short-form vertical video with seedance-2.0 on hiapi — the 9:16 clip on the page was rendered from the exact prompt printed above it. seedance-2.0 does text-to-video and image-to-video from the same async task endpoint; short-form just means asking for aspect_ratio 9:16. Verified API facts: /v1/tasks endpoint, input needs prompt + required aspect_ratio + resolution (480p/720p/1080p) + duration; output is an MP4 at output[0].url. Pricing is per second of output: 480p $0.136/s, 720p $0.293/s, 1080p $0.729/s. Includes copy-paste submit/poll/download code plus a batch loop.

Seedance 2.5 vs 2.0: Release Date, Price per Second and Real Output
Seedance 2.5 makes up to 30 seconds in one shot and takes up to 50 reference files. Seedance 2.0's ext route is the cheapest at $0.134 per second at 720p and is the only one with 4K. On one 8-second prompt, all three followed the prompt; current estimates: 2.5 $1.63, 2.0 ext $1.07, 2.0 standard $2.34.

Free Text-to-Video API: Video APIs With a Free Tier vs Paid (2026)
There is no provider in 2026 that gives you production-grade text-to-video at zero marginal cost with no friction — only three real routes that get close: Hugging Face's free Inference Provider credits, self-hosting an open model, or a small per-second paid API. Hugging Face's free tier is the closest thing to a true free API: routed OpenAI-compatible access to open video models on Replicate, fal, and Novita, with monthly credits good for roughly 5–50 short clips per month. Self-hosting Wan 2.1/2.2, HunyuanVideo, CogVideoX, or LTX-Video on owned or rented GPUs is genuinely cheaper per clip at volume — but only after you absorb the model selection, quantization, and ops cost. For 20+ five-second 720p clips per month, hiapi's wan2.7-video/text-to-video at $0.10/sec ($0.50/clip, $40/mo for 80 clips) usually beats both routes once you price in your engineering time.

HiAPI Output URL Expired? Download Within 7 Days or Keep It Persistent
Temporary outputs are deleted about 7 days after the task finishes; expireAt gives the exact time. Expired links can't be revived, and re-running a task bills again. Set storage to persistent, or promote outputs before they expire, to keep them on HiAPI.

Happyhorse Image to Video API: Working curl and Python Examples (hiapi)
Animate one still image into a 720p or 1080p MP4 with `happyhorse-1.1/image-to-video` on the hiapi tasks endpoint. Working curl and Python examples that pass schema validation today, with the actual field names and value ranges the API enforces. Production callback pattern (`callback.url` + `when: "final"`) plus the exact error strings you will hit, so you can match on them in your handler. Guidance on downloading the output URL before its `expireAt` timestamp drops it from temp storage.

When a hiapi /v1/tasks Job Hangs or Times Out: Diagnosis and Retry
Tasks that sit in `pending` or hit `timeout` almost always trace back to four causes: queue backlog, an underlying model failure, oversized inputs, or an unreachable callback URL. Diagnose by polling `GET /v1/tasks/{id}` and reading `status` + `error.code` before you retry anything. Retry with exponential backoff (e.g. 5s → 15s → 45s, max 3 tries) and always create a **new** task — never POST the same idempotency body twice without a key. If a task stays in `pending` for over 90 seconds with no `error`, it's almost always a queue backlog — back off, don't hammer. For callback delivery issues, verify the URL is publicly reachable and returns 2xx within 10s; the hiapi platform does not retry indefinitely.

HappyHorse 1.1 Text-to-Video API via HiAPI: a working curl + Python tutorial
Call Alibaba's HappyHorse 1.1 text-to-video model through HiAPI's unified /v1/tasks endpoint with a working curl request, a Python polling client, and a production-ready callback pattern. The exact input schema (prompt, resolution, aspect_ratio, duration) plus the two non-obvious 400s — audio and seed are not accepted — are spelled out so the first request actually goes through.

HappyHorse 1.1 reference-to-video API: a working curl + Python tutorial
HappyHorse 1.1 R2V turns 1-9 reference images plus a text prompt into a short video over the unified async task endpoint on HiAPI. Point at each reference image inside the prompt as [Image 1], [Image 2] ... so the model knows which face, costume or setting comes from where. Resolution is 720p or 1080p, aspect_ratio is one of 9 fixed values, duration is an integer 3-15 seconds; everything else is rejected. Switch from GET polling to callback.url + callback.when="final" once you ship, and dedupe terminal events by taskId. Catch 401 permission_denied (bad key), 400 INVALID_REQUEST (the message names the bad field), and task-level status="fail" with error.code/error.message.

Happyhorse 1.1 text-to-video API: a working curl and Python tutorial
happyhorse-1.1/text-to-video is served on the unified async /v1/tasks endpoint — submit, get a taskId, then poll or receive a callback. The only required input field is `prompt`. Optional: `aspect_ratio` (9 ratios), `resolution` (720p|1080p), `duration` (3–15 seconds). Fields that look obvious but are rejected today: `size`, `audio`, `seed`, `negative_prompt` — the schema is strict, not loose. Pricing is per second of generated video, so `duration` is the cost lever; `resolution` is not. Use `callback.when="final"` in production to skip polling; only `final` is supported. Keep polling as a fallback sweeper for missed callbacks.
Build with the models you just read about.
Compare image, video, and audio models, then use the same API workflow in production.