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-v6Seedance 2.5doubao-seedance-2.0doubao-seedance-2.0-officialseedance-2-0-minihappyhorse-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.0-official

Happy Horse 1.0 Official Channel — direct first-party Aliyun Model Studio routing with ReAPI's URL-only media contract.

Happy Horse 1.0 Official Channel — direct first-party routing, distinct from the standard happyhorse-1.0 channel. It uses the official Aliyun Model Studio SKUs behind one ReAPI model id and keeps ReAPI's URL-only media contract.

Official channel, ReAPI boundary. The upstream provider is Aliyun Model Studio first-party. Media inputs must still be public http(s) URLs; base64/data URI media is not accepted by ReAPI even where upstream docs show base64 examples.

Watermark policy is also a ReAPI override: Aliyun's official default is true, but ReAPI defaults watermark to false. Send "watermark": true if you want the upstream watermark.

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.0-official",
    "prompt": "A coastal road at sunset, slow-motion camera push-in, cinematic feel",
    "resolution": "1080P",
    "size": "4:5",
    "duration": 5,
    "seed": 42
  }'
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.0-official",
        "prompt": "A coastal road at sunset, slow-motion camera push-in",
        "resolution": "1080P",
        "size": "4:5",
        "duration": 5,
        "seed": 42,
    },
    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.0-official",
    prompt: "A coastal road at sunset, slow-motion camera push-in",
    resolution: "1080P",
    size: "4:5",
    duration: 5,
    seed: 42,
  }),
});
console.log(await r.json());
package main

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

func main() {
    body, _ := json.Marshal(map[string]any{
        "model":      "happyhorse-1.0-official",
        "prompt":     "A coastal road at sunset, slow-motion camera push-in",
        "resolution": "1080P",
        "size":       "4:5",
        "duration":   5,
        "seed":       42,
    })
    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()
    out, _ := io.ReadAll(resp.Body)
    fmt.Println(string(out))
}

Request surface

The public endpoint and async response envelope are the same as the standard channel:

POST /api/v1/videos/generations

One model id auto-routes by request shape:

ShapeOfficial upstream SKU
prompt onlyhappyhorse-1.0-t2v
first_frame_image (+ optional prompt)happyhorse-1.0-i2v
image_urls 1-9 + prompthappyhorse-1.0-r2v
video_url (+ optional image_urls 0-5) + prompthappyhorse-1.0-video-edit

first_frame_image, image_urls, and video_url are mutually exclusive except for the legal EDIT combination: video_url + image_urls.

Official-channel constraints

FieldOfficial channel behavior
modelMust be "happyhorse-1.0-official"
promptRequired for T2V / R2V / EDIT, optional for I2V. Aliyun truncates over-length prompt text upstream; ReAPI does not reject official-channel prompts at the standard-channel 2500-character cap.
first_frame_imagePublic http(s) URL only. Base64/data URI is rejected by ReAPI.
image_urlsPublic http(s) URLs only. R2V accepts 1-9 images; EDIT accepts 0-5 reference images.
video_urlPublic http(s) URL only. EDIT source video must be 3-60 seconds, long side ≤2160 px, short side ≥320 px, and aspect ratio between 1:2.5 and 2.5:1. Aliyun also enforces file size ≤100 MB and fps >8.
resolution"720P" or "1080P"; omitted lets upstream apply its default.
sizeT2V/R2V ratio: "16:9", "9:16", "1:1", "4:3", "3:4", "4:5", "5:4". Ignored for I2V and EDIT because output shape follows the source media.
duration3-15 seconds for T2V/I2V/R2V. Ignored for EDIT because output length follows the source video.
watermarkReAPI default is false even though Aliyun's official default is true. Explicit true / false is honored.
seedInteger from 0 to 2147483647.
audio_settingEDIT only: "auto" or "origin".

Differences from happyhorse-1.0

Aspecthappyhorse-1.0happyhorse-1.0-official
Upstream channelStandardAliyun Model Studio official
Wire model value"happyhorse-1.0""happyhorse-1.0-official"
T2V/R2V ratios16:9, 9:16, 1:1, 4:3, 3:4Adds 4:5 and 5:4
Prompt capReAPI rejects above 2500 charsAliyun truncation semantics; no local 2500-char reject
EDIT video dimensionsStandard channel validation rulesOfficial Aliyun validation rules
Default watermarkReAPI default falseReAPI default false (intentional override from Aliyun default true)
Per-second rateBaseline10% off the baseline
Validation error prefixhappyhorse:happyhorse-official:

Pricing

Per-second × resolution. 10% off the standard channel at every supported resolution. See current 720P / 1080P / 4K rates on the Happy Horse model page.

Bill formula (1 credit = $0.001):

ModeBillable seconds
T2V / I2V / R2Vduration you sent (default 5)
EDITceil(probed_source_seconds) + min(ceil(probed_source_seconds), 15) — vendor processes the source AND produces a capped output; both sides are billable. Failed probe → 400 PRICING_UNAVAILABLE, no charge.

Final bill: ceil(per_second_usd_after_discount × billable_seconds × 1000) credits. Failed jobs refund automatically.

Examples

Source videoModeBillable seconds
—T2V, duration=55
—T2V, duration=1010
5s clipEDIT5 + min(5, 15) = 10
8.3s clipEDIT9 + min(9, 15) = 18
60s clipEDIT60 + min(60, 15) = 75
20s clipEDIT20 + min(20, 15) = 35

Apply ceil(per_second_usd_after_discount × billable_seconds × 1000) for the credit charge.


Validation errors

The response envelope and numeric error-code system match the standard channel, but official-channel validation follows the official Aliyun rules listed above. Error messages from this channel use the happyhorse-official: prefix.

Pattern-match on the numeric code, not the message string.


When to pick which channel

NeedChannel
Lowest unit pricehappyhorse-1.0-official
Official Aliyun Model Studio routehappyhorse-1.0-official
size values 4:5 or 5:4happyhorse-1.0-official
Existing integration with no migrationhappyhorse-1.0
Standard channel route / existing constraintshappyhorse-1.0

Switching channels = changing the model string in your request body. The response envelope and polling flow are shared; provider-specific validation and pricing differ as documented above.


Related

  • happyhorse-1.0 — full reference
  • Errors catalog
  • Authentication
  • Aliyun official T2V reference
  • Aliyun official I2V reference
  • Aliyun official R2V reference
  • Aliyun official EDIT reference

Table of Contents

Quick example
Request surface
Official-channel constraints
Differences from happyhorse-1.0
Pricing
Examples
Validation errors
When to pick which channel
Related