GPT Image 2.5 is live — OpenAI's newest image model, targeted edits that leave the rest of the frame alone
rreAPI Docs

pixverse-v6-max

PixVerse V6 Max on reAPI — text to video and image to video from one still, 1–15 second clips at 360p to 1080p with optional native audio, billed per second.

PixVerse V6 Max, the Max tier of PixVerse V6, live on reAPI. One model id, pixverse-v6-max, covers two jobs: text to video, and image to video from one still with an optional prompt. Every clip is 1–15 seconds at 360p, 540p, 720p or 1080p, with optional native audio. Sending an image picks image to video. See current pricing on the model page.

Quick example

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "pixverse-v6-max",
    "prompt": "A vintage red convertible drives along a coastal cliff road at golden hour, low tracking shot, engine hum and crashing waves. No text, no logos.",
    "resolution": "720p",
    "duration": 5,
    "aspect_ratio": "16:9",
    "audio": true
  }'
import requests

response = requests.post(
    "https://reapi.ai/api/v1/videos/generations",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "model": "pixverse-v6-max",
        "prompt": "A vintage red convertible drives along a coastal cliff road at golden hour, low tracking shot, engine hum and crashing waves. No text, no logos.",
        "resolution": "720p",
        "duration": 5,
        "aspect_ratio": "16:9",
        "audio": True,
    },
    timeout=60,
)
response.raise_for_status()
task_id = response.json()["id"]
const response = await fetch('https://reapi.ai/api/v1/videos/generations', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'pixverse-v6-max',
    prompt:
      'A vintage red convertible drives along a coastal cliff road at golden hour, low tracking shot, engine hum and crashing waves. No text, no logos.',
    resolution: '720p',
    duration: 5,
    aspect_ratio: '16:9',
    audio: true,
  }),
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const { id: taskId } = await response.json();
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "strings"
    "time"
)

func main() {
    body := strings.NewReader(`{
      "model": "pixverse-v6-max",
      "prompt": "A vintage red convertible drives along a coastal cliff road at golden hour, low tracking shot, engine hum and crashing waves. No text, no logos.",
      "resolution": "720p",
      "duration": 5,
      "aspect_ratio": "16:9",
      "audio": true
    }`)
    req, err := http.NewRequest("POST", "https://reapi.ai/api/v1/videos/generations", body)
    if err != nil { panic(err) }
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{Timeout: 60 * time.Second}
    res, err := client.Do(req)
    if err != nil { panic(err) }
    defer res.Body.Close()
    var task struct { ID string `json:"id"` }
    if err := json.NewDecoder(res.Body).Decode(&task); err != nil { panic(err) }
    fmt.Println(task.ID)
}

Authentication

Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.

Authorization: Bearer YOUR_API_KEY

Endpoint

POST /api/v1/videos/generations
GET  /api/v1/tasks/{id}

Submission is async. The POST returns a task id right away; poll the task endpoint until status is completed or failed. Polling does not consume credits.

Request body

FieldTypeDefaultNotes
modelstring—pixverse-v6-max. Required.
promptstring—Describe subject, place, camera move, light and sound. Text to video: required, up to 5,000 characters. With an image: optional, up to 2,048 characters.
image_urlsstring[]—Image to video: exactly 1 public HTTP(S) URL. JPG, PNG or WebP, up to 20 MB and 10,000 pixels on each side. Leave it out for text to video.
resolutionstring540p360p / 540p / 720p / 1080p. Sets the per-second rate.
qualitystring—Alias of resolution, same values. Used only when resolution is not sent; resolution wins when both are.
durationinteger51–15 seconds.
aspect_ratiostring16:916:9 / 9:16 / 4:3 / 3:4 / 1:1 / 2:3 / 3:2 / 21:9. Text to video only; with an image the clip follows the image's shape.
audiobooleanfalsetrue generates native sound and bills at the audio rate.
seedinteger—0–2147483647. The same request and seed give similar results.

There is no mode field, and no negative_prompt, watermark, motion_mode or multi-clip field. First and last frames, reference images and extend are PixVerse V6 features.

Checked by reAPI before anything is charged:

  • every field is in the table above — unknown fields are refused, not ignored
  • image_urls holds exactly one public HTTP(S) URL — base64 and data: URIs are rejected
  • a request without an image has a prompt; with an image the prompt is at most 2,048 characters
  • resolution, aspect_ratio, duration and seed are in their ranges, and so is quality when it is used (no resolution)
  • prompt lengths count characters, so an emoji is one character

The image's format, size and dimensions are checked by the model when the task starts. A request that breaks one ends as a failed task with code 80007 and the exact reason, and is refunded in full.

Modes

ModeHow to select it
Text to videoNo image_urls. prompt is required; aspect_ratio sets the shape.
Image to videoOne image in image_urls. The clip starts from it and keeps its shape; prompt is optional.

Image to video

{
  "model": "pixverse-v6-max",
  "prompt": "The subject slowly turns toward the camera, soft natural light.",
  "image_urls": ["https://example.com/start.png"],
  "resolution": "1080p",
  "duration": 5
}

Troubleshooting

FailureWhat it meansWhat to do
Synchronous 400 (code 20002)No prompt and no imageAdd a prompt for text to video, or one image. Nothing was charged
Synchronous 400 (codes 20003 / 20005 / 20006)A field is out of range, unknown, or not a public URL; more than one imageThe message names the field. Nothing was charged
Task fails with code 80007The model refused the input, for example an image it cannot readThe message names the reason. Fully refunded
Task fails with code 80006The prompt or image was rejected by content reviewFully refunded. Revise the prompt or image
402 on submitNot enough credits for the reserveTop up, or lower duration or resolution
Task stays processingGeneration takes a minute or more, longer at higher resolutionsKeep polling; a task that can never finish is failed and refunded automatically

No data: URIs. reAPI rejects base64 inputs platform-wide — every URL field must be a public HTTP(S) URL. Upload to your own object storage and pass the URL.

Response envelope

{
  "id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
  "model": "pixverse-v6-max",
  "status": "completed",
  "created_at": 1789689600,
  "output": {
    "video_urls": ["https://cdn.reapi.ai/media/tasks/.../0.mp4"]
  },
  "error": null
}

Poll GET /api/v1/tasks/{id} (see the Tasks reference) until status === "completed", then read output.video_urls. A failed task carries error.code and error.message; see the errors catalog.

Pricing

PixVerse V6 Max bills per second of video, at a rate set by the resolution and by whether audio is on:

credits = ceil(per_second_rate × duration × 1000)     1 credit = $0.001

The resolution is resolution, else quality, else 540p; duration defaults to 5. Text to video and image to video cost the same. The amount reserved when the task is accepted is the amount charged, and failed tasks are refunded in full.

Live per-second rates for every resolution, with and without audio, are on the model page.

Tips

  • Describe subject, place, camera move and light; name the sounds you want when audio is on.
  • Draft at 360p for a second or two, then render the final shot at 1080p with the same request and seed.
  • For vertical video, send aspect_ratio: "9:16" with text to video, or a portrait image.
  • Add No text, no logos. to keep invented marks out of the frame.
  • Need a transition between two frames, several references, or a longer continued shot? Use PixVerse V6.

Table of Contents