react-1:flowdefaultReact 1 API — how to connect and pay
React-1 — lips, facial expression (emotion) and optional head motion for a fragment up to 15 s. Requires video_url and audio_url. Output length with sync_mode=cut_off (default) is min(video, audio). Price per second of output video.
Channel comparison
last 7 days
| Channel | Price |
|---|---|
Flow react-1:flowdefault | from $0.239 / s |
Build the result you need
react-1:flowThis model only publishes its minimum price in the catalog.
What is React 1
React-1 — lips, facial expression (emotion) and optional head motion for a fragment up to 15 s. Requires video_url and audio_url. Output length with sync_mode=cut_off (default) is min(video, audio). Price per second of output video.
Contract at a glance
- Input
- video, audio
- Output
- video
- Mode
- async (job + polling)
- Status polling
- every 3 s · up to 600 s
Strengths
- Pricing: per second
- Inputs: video, audio
- 6 configurable options
- One API key for media generation
Where it is used
- Social media clips
- Promos and title sequences
- Still-image animation
- Storyboards and animatics
API contract
Generation runs asynchronously: create a job, then poll its status until completion.
- Create job
- POST /api/media/generate
- Check status
- GET /api/media/jobs/{jobId}
- Input
- video, audio
- Output
- video
- Polling
- every 3 s · up to 600 s
- Authentication
- Authorization: Bearer sk-pv-…
Example request
Pass your key in the Bearer header. The API returns jobId for polling the status.
curl -sS https://getvibeapi.com/api/media/generate \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary '{"model":"react-1:flow","opts":{"video_url":"https://example.com/video_url.mp4","audio_url":"https://example.com/audio_url.mp3","emotion":"neutral","model_mode":"face","sync_mode":"cut_off"}}'JavaScript
const response = await fetch('https://getvibeapi.com/api/media/generate', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.GETVIBE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"model": "react-1:flow",
"opts": {
"video_url": "https://example.com/video_url.mp4",
"audio_url": "https://example.com/audio_url.mp3",
"emotion": "neutral",
"model_mode": "face",
"sync_mode": "cut_off"
}
}),
});
if (!response.ok) throw new Error(`GetVibe API: ${response.status}`);
const { jobId } = await response.json();
console.log(jobId);API request parameters
Parameters for requests to React 1 via the GetVibe API.
video_urlaudio_urlemotionmodel_modetemperaturesync_modevideo_file_idvideo_base64audio_file_idaudio_base64| Parameter | Type | Values | Default | Price |
|---|---|---|---|---|
video_url | URL | Public video URL | — | — |
audio_url | URL | Public audio URL | — | — |
emotion | option selection | Neutral (default) · Happy · Sad · Angry · Disgusted · Surprised | Neutral | Included in the base price |
model_mode | option selection | Lips only · Lips and facial expression (default) · Lips, expression and head motion | Lips and facial expression | Included in the base price |
temperature | text / number | any value | — | Included in the base price |
sync_mode | option selection | Cut to the shorter (length = min) (default) · Loop the video (length = audio) · Ping-pong the video (length = audio) · Stretch the video (length = audio) · Pad with silence (length = max) | Cut to the shorter (length = min) | Included in the base price |
video_file_id | text | Alternative to video_url: the id of your own file from POST /v1/files (file-pv-…) | — | Included in the base price |
video_base64 | text | Alternative to video_url: the file inline, as base64 or a data: URI | — | Included in the base price |
audio_file_id | text | Alternative to audio_url: the id of your own file from POST /v1/files (file-pv-…) | — | Included in the base price |
audio_base64 | text | Alternative to audio_url: the file inline, as base64 or a data: URI | — | Included in the base price |
Request: POST https://getvibeapi.com/api/media/generate. Prices in USD.
Price of React 1
The cost of React 1: from $0.239 per second. The price is calculated dynamically at the current exchange rate, and the final charge is shown in the API response (priceRub). Payment in USD, no subscriptions.
What a default request costs
With no parameters sent, the request uses these values: Emotion — Neutral, What to change — Lips and facial expression, When lengths differ — Cut to the shorter (length = min). That request costs $0.239.
Channels and prices for every parameter combination
For every channel, the price of every parameter combination. It is exactly the amount a successful generation is charged, and the same figure as in the machine-readable table linked below.
Flowreact-1:flowfrom $0.239 / sexact prices
| Price | Price |
|---|---|
| Flow | $0.239 / s |
Price per second of the generated video. The charge is this price × the actual length of the result.
Every combination as JSON: /api/media/price-table?model=react-1%3Aflow
README
The machine-readable contract for React 1 contains the request schema, operations, limits, polling and response examples.
# React 1
Public model: react-1:flow
Create job: POST /api/media/generate
Check status: GET /api/media/jobs/{jobId}
## Input parameters
- `video_url` (URL): Public video URL; default: —
- `audio_url` (URL): Public audio URL; default: —
- `emotion` (option selection): Neutral (default) · Happy · Sad · Angry · Disgusted · Surprised; default: Neutral
- `model_mode` (option selection): Lips only · Lips and facial expression (default) · Lips, expression and head motion; default: Lips and facial expression
- `temperature` (text / number): any value; default: —
- `sync_mode` (option selection): Cut to the shorter (length = min) (default) · Loop the video (length = audio) · Ping-pong the video (length = audio) · Stretch the video (length = audio) · Pad with silence (length = max); default: Cut to the shorter (length = min)
- `video_file_id` (text): Alternative to video_url: the id of your own file from POST /v1/files (file-pv-…); default: —
- `video_base64` (text): Alternative to video_url: the file inline, as base64 or a data: URI; default: —
- `audio_file_id` (text): Alternative to audio_url: the id of your own file from POST /v1/files (file-pv-…); default: —
- `audio_base64` (text): Alternative to audio_url: the file inline, as base64 or a data: URI; default: —
## Public variants
- `react-1:flow`: FlowFAQ about the React 1 API
How much does React 1 cost?
The price of React 1: from $0.239 per second. The price is calculated dynamically at the current exchange rate.
Is it compatible with the OpenAI SDK?
Yes, the API is fully OpenAI-compatible. Just change base_url to https://getvibeapi.com/v1 and set your key — the rest of the code stays the same.