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)

Veo 3.1

Google Veo 3.1 — async video generation in five channels. Fast, Quality, and Lite for per-generation pricing; Fast Official and Quality Official for per-second pricing with audio and 4K.

Google's VEO 3.1 video model on reAPI. Five channels share one endpoint and submit shape — pick the channel via model.

ChannelBillsNotes
veo3.1-fastper generationImage-to-video (≤ 3 refs), remix-able
veo3.1-qualityper generationFrame-mode I2V only, remix-able
veo3.1-liteper generationPrompt-only — no images
veo3.1-fast-officialper secondFirst/last-frame I2V, audio, 4K
veo3.1-quality-officialper secondPremium per-second tier

8-second outputs on alt channels (4 / 6 / 8 seconds on official) at 720p / 1080p / 4K. Use the remix endpoint to extend Fast or Quality clips to 15 seconds. See current pricing on the model page.

Quick example

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo3.1-fast",
    "prompt": "A dolphin leaping through cobalt ocean waves at sunrise",
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'
import requests

resp = requests.post(
    "https://reapi.ai/api/v1/videos/generations",
    headers={
        "Authorization": "Bearer rk_live_xxx",
        "Content-Type": "application/json",
    },
    json={
        "model": "veo3.1-fast",
        "prompt": "A dolphin leaping through cobalt ocean waves at sunrise",
        "aspect_ratio": "16:9",
        "resolution": "720p",
    },
)
task_id = resp.json()["data"][0]["task_id"]
const res = 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: 'veo3.1-fast',
    prompt: 'A dolphin leaping through cobalt ocean waves at sunrise',
    aspect_ratio: '16:9',
    resolution: '720p',
  }),
});
const { data } = await res.json();
const taskId = data[0].task_id;
package main

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

func main() {
    body, _ := json.Marshal(map[string]any{
        "model":        "veo3.1-fast",
        "prompt":       "A dolphin leaping through cobalt ocean waves at sunrise",
        "aspect_ratio": "16:9",
        "resolution":   "720p",
    })
    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)
    _ = out
}

Endpoint

POST /api/v1/videos/generations

Returns a task_id immediately. Poll GET /api/v1/tasks/{task_id} until status is completed to retrieve the video URL.

Request fields

Common (every channel)

FieldTypeRequiredNotes
modelstringyesOne of the five channel ids above
promptstringyes≤ 4000 chars; English recommended
aspect_ratioenumno16:9 (default landscape) or 9:16
resolutionenumno720p (default), 1080p, or 4k

Alt channels (veo3.1-fast, veo3.1-quality, veo3.1-lite)

FieldTypeNotes
durationintFixed at 8 upstream
image_urlsstring[]Up to 3 public http(s) URLs (Fast / Quality only)
generation_typeenumframe or reference (Quality channel: frame only)
enable_gifboolOutput GIF instead of mp4. Mutex with 1080p / 4k

veo3.1-lite rejects image_urls and generation_type. Send only prompt + the common fields.

Official channels (veo3.1-fast-official, veo3.1-quality-official)

FieldTypeNotes
durationint4, 6, or 8 (default 8)
negative_promptstringWhat to avoid
first_frame_imagestringPublic http(s) URL — anchors opening frame
last_frame_imagestringRequires first_frame_image; interpolation target
seedint0–4294967295
sample_countint1–4 (default 1)
generate_audioboolAdds synthesized audio (audio pricing tier)
person_generationenumallow_adult (default) or disallow
resize_modeenumpad (default) or crop
enhance_promptboolMust be true if sent — omit to disable

Image inputs are URLs only. Every reference image / frame field rejects base64 and data: URIs at the gateway. Upload the image to any public HTTPS host first.

Image-to-video — alt channel

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo3.1-fast",
    "prompt": "The cat slowly walks forward and looks around",
    "image_urls": ["https://example.com/cat.png"],
    "generation_type": "frame",
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'

Image-to-video — official channel (first / last frame)

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo3.1-quality-official",
    "prompt": "Smooth cinematic transition from the first frame to the last frame",
    "first_frame_image": "https://example.com/start.png",
    "last_frame_image": "https://example.com/end.png",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "duration": 8,
    "generate_audio": true
  }'

Remix — extend an 8s clip to 15s

POST /api/v1/videos/{task_id}/remix

Available on veo3.1-fast and veo3.1-quality only. The path task_id is the reApi task id returned by the original generation; the source task must be in completed status. The model in the body must match the source task's model.

curl https://reapi.ai/api/v1/videos/{TASK_ID}/remix \
  -H "Authorization: Bearer rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo3.1-fast",
    "prompt": "The dolphin dives back into the wave and surfaces a moment later",
    "raw": false,
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'
FieldTypeNotes
modelenumveo3.1-fast or veo3.1-quality — must equal source
promptstringContinuation prompt; ≤ 4000 chars
rawbooltrue returns only the extension segment; false (default) returns the combined clip
aspect_ratioenumOptional — same set as generations
resolutionenumOptional — same set as generations

The remix endpoint returns a fresh task_id. Poll GET /api/v1/tasks/{task_id} exactly like a generation.

Polling

curl https://reapi.ai/api/v1/tasks/{TASK_ID} \
  -H "Authorization: Bearer rk_live_xxx"

Response while in flight:

{ "code": 200, "data": { "id": "task_…", "status": "processing", "progress": 47 } }

Response on success:

{
  "code": 200,
  "data": {
    "id": "task_…",
    "status": "completed",
    "result": { "videos": [{ "url": ["https://cdn.reapi.ai/…/video.mp4"] }] }
  }
}

Generated video URLs are rehosted to reApi's CDN — they don't expire with the upstream signed-URL window.

Table of Contents

Quick example
Endpoint
Request fields
Common (every channel)
Alt channels (veo3.1-fast, veo3.1-quality, veo3.1-lite)
Official channels (veo3.1-fast-official, veo3.1-quality-official)
Image-to-video — alt channel
Image-to-video — official channel (first / last frame)
Remix — extend an 8s clip to 15s
Polling