rreAPI Docs
rreAPI Docs
HomeWelcome

Image

midjourney-v8flux-2z-imageqwen-image-2midjourney-v7wan-2-7-imagegpt-image-2gpt-image-2-officialgemini-2.5-flash-image-previewgemini-3-pro-image-previewgemini-3.1-flash-image-previewdoubao-seedream-5-0-liteimagen-4-0

Audio

Mureka V9 Song APIVocal Remover APIMusic Extractor APIVoice Cleaner APIMultistem Splitter APIVoice Changer API

Video

topaz-video-upscalerkling-3-0-turbokling-3-0music-video-1-0wan-2-7-videokling-motion-controlpixverse-v6doubao-seedance-2.0doubao-seedance-2.0-officialdoubao-seedance-2.0-betahappyhorse-1-1happyhorse-1.0happyhorse-1.0-officialviduq3grok-imagine-video-1.5-betagrok-imagine-1.0-videoVeo 3.1gemini-omni

Chat

claude-fable-5minimax-m3deepseek-v4gpt-5.5gpt-5.4claude-opus-4-8claude-opus-4-7claude-sonnet-4-6

Text

ai-essay-writerhumanizeai-text-detector

Tools

enhance-video-1.0
X (Twitter)

happyhorse-1-1

Alibaba HappyHorse 1.1 — one async video endpoint that auto-routes text-to-video, image-to-video, and reference-to-video (up to 9 images) by request shape.

Alibaba HappyHorse 1.1 — a single async video endpoint that auto-routes between T2V / I2V / R2V based on which media field your request carries. 720p or 1080p, 3–15 second outputs, billed only by resolution × duration regardless of mode. See current pricing on the model page.

Generation is asynchronous: the POST returns a task id, then poll GET /api/v1/tasks/{id} until status is completed.

Quick example

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse-1-1",
    "prompt": "A coastal road at sunset, slow-motion camera push-in, cinematic feel",
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "duration": 5
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/videos/generations",
    headers={
        "Authorization": "Bearer rk_live_xxx",
        "Content-Type": "application/json",
    },
    json={
        "model": "happyhorse-1-1",
        "prompt": "A coastal road at sunset, slow-motion camera push-in",
        "resolution": "1080p",
        "aspect_ratio": "16:9",
        "duration": 5,
    },
    timeout=30,
)
print(resp.json())
const r = await fetch("https://reapi.ai/api/v1/videos/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer rk_live_xxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "happyhorse-1-1",
    prompt: "A coastal road at sunset, slow-motion camera push-in",
    resolution: "1080p",
    aspect_ratio: "16:9",
    duration: 5,
  }),
});
console.log(await r.json());
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	body, _ := json.Marshal(map[string]any{
		"model":        "happyhorse-1-1",
		"prompt":       "A coastal road at sunset, slow-motion camera push-in",
		"resolution":   "1080p",
		"aspect_ratio": "16:9",
		"duration":     5,
	})
	req, _ := http.NewRequest("POST",
		"https://reapi.ai/api/v1/videos/generations", bytes.NewReader(body))
	req.Header.Set("Authorization", "Bearer rk_live_xxx")
	req.Header.Set("Content-Type", "application/json")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
	var out map[string]any
	json.NewDecoder(resp.Body).Decode(&out)
	fmt.Println(out)
}

Endpoint

POST /api/v1/videos/generations
Authorization: Bearer rk_live_xxx
Content-Type: application/json

Submitting returns a task id; poll GET /api/v1/tasks/{id} for the result. Polling does not consume credits.

Parameters

ParameterTypeRequiredDefaultDescription
modelstringyes—happyhorse-1-1
promptstringT2V / R2V: yes · I2V: no—Any language. ≤5000 non-CJK / ≤2500 CJK characters (over-length is auto-truncated upstream). In R2V, reference images with [Image 1], [Image 2], …
image_urlsstring[]I2V—First-frame image, exactly 1 public URL. Presence selects image-to-video. JPEG/PNG/WEBP, short side ≥300px, ratio 1:2.5–2.5:1, ≤20MB.
reference_image_urlsstring[]R2V—1–9 reference image URLs. Presence selects reference-to-video. JPEG/PNG/WEBP, short side ≥400px, ≤20MB.
resolutionenumno720p720p · 1080p
aspect_ratioenumno16:916:9 9:16 3:4 4:3 4:5 5:4 1:1 9:21 21:9. T2V / R2V only — in I2V the orientation is derived from the source image.
durationintegerno5Output length in seconds, 3–15.

image_urls (I2V) and reference_image_urls (R2V) are mutually exclusive. All media inputs must be public HTTP(S) URLs — base64 / data: URIs are rejected.

Modes

Mode is implicit — selected by which inputs you send:

ModeTriggerpromptaspect_ratio
Text-to-video (T2V)no mediarequiredyes
Image-to-video (I2V)image_urls (1)optionalno (from image)
Reference-to-video (R2V)reference_image_urls (1–9)requiredyes
// I2V — animate a first frame
{ "model": "happyhorse-1-1", "image_urls": ["https://…/frame.jpg"], "resolution": "1080p", "duration": 5 }

// R2V — keep subjects consistent across the clip
{ "model": "happyhorse-1-1", "prompt": "the woman in [Image 1] walks through [Image 2]", "reference_image_urls": ["https://…/a.jpg", "https://…/b.jpg"], "resolution": "1080p", "duration": 5 }

Pricing

Billed by per-second rate × resolution × duration; the routing mode does not change the rate. Two tiers: 720p and 1080p. See the model page for current rates.

Bill formula (1 credit = $0.001):

credits = ceil(per_second_usd × duration × 1000)

Output

On success, GET /api/v1/tasks/{id} returns:

{
  "id": "task_…",
  "model": "happyhorse-1-1",
  "status": "completed",
  "output": { "video_urls": ["https://cdn.reapi.ai/media/tasks/…/0.mp4"] },
  "error": null
}

Errors

HTTPcodeWhen
40020002Missing / invalid parameter (e.g. prompt required in T2V/R2V, both image fields set)
40110001 – 10005Auth missing / invalid / revoked
40230001Insufficient credits
42950001Per-user rate limit exceeded

Failed generations are surfaced under error in the polling response and are refunded automatically. Full catalog: Errors.

Tips

  • Pick the mode by inputs, not a flag. Sending reference_image_urls switches to R2V; sending image_urls switches to I2V; neither → T2V.
  • In R2V, name each subject explicitly and reference it by [Image N] in the prompt, matching the array order, for the strongest identity retention.
  • aspect_ratio is ignored in I2V — crop your source image to the orientation you want instead.
  • Longer duration scales the bill linearly; start at 5s while iterating.

Related

  • Tasks — universal polling endpoint
  • Errors — full error catalog
  • happyhorse-1-0 — the previous generation

Table of Contents

Quick example
Endpoint
Parameters
Modes
Pricing
Output
Errors
Tips
Related