Skip to main content
POST
/
v1
/
videos
/
generations
curl --request POST \
  --url https://api.foxapi.cc/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "lipsync-2",
  "video_url": "https://v3.fal.media/files/tiger/IugLCDJRIoGqvqTa-EJTr_3wg74vCqyNuQ-IiBd77MM_output.mp4",
  "audio_url": "https://fal.media/files/lion/vyFWygmZsIZlUO4s0nr2n.wav",
  "sync_mode": "loop"
}
'
{
  "created": 1757165031,
  "id": "task-unified-1757165031-uyujaw3d",
  "model": "<string>",
  "object": "video.generation.task",
  "progress": 0,
  "status": "pending",
  "task_info": {
    "can_cancel": true,
    "estimated_time": 45
  },
  "type": "video"
}

Documentation Index

Fetch the complete documentation index at: https://docs.foxapi.cc/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

All APIs require Bearer Token authentication

Add to request header:

Authorization: Bearer YOUR_API_KEY

Body

application/json
model
string
default:lipsync-2
required

lipsync-2: Standard quality lipsync-2-pro: Higher quality sync-3: Next-generation, professional quality; does not support temperature or active_speaker

Examples:

"lipsync-2"

"lipsync-2-pro"

"sync-3"

video_url
string
required

Public URL of the input video file

Notes:

  • Format: MP4
  • Must be a publicly accessible URL
Example:

"https://v3.fal.media/files/tiger/IugLCDJRIoGqvqTa-EJTr_3wg74vCqyNuQ-IiBd77MM_output.mp4"

audio_url
string
required

Public URL of the input audio file

Notes:

  • Format: MP3 / WAV
  • Must be a publicly accessible URL
  • Audio duration directly affects output video duration and billing (depends on sync_mode)
Example:

"https://fal.media/files/lion/vyFWygmZsIZlUO4s0nr2n.wav"

sync_mode
string
default:loop

Video-audio synchronization mode, determines output video duration

Options:

  • bounce — Video plays back and forth to match audio length, output duration = audio duration
  • loop — Video loops to match audio length, output duration = audio duration
  • cut_off — Audio is trimmed when video ends, output duration = min(video, audio)
  • silence — Video is padded with silence at the end, output duration = video duration
  • remap — Audio timeline is remapped to match video, output duration = audio duration
Example:

"loop"

temperature
number | null

Mouth movement expressiveness control, default 0.5

Notes:

  • Range: 0.0 - 1.0
  • Only supported by lipsync-2 and lipsync-2-pro
  • sync-3 does not support this parameter

Do not pass this parameter unless necessary.

Required range: 0 <= x <= 1
Example:

0.8

active_speaker
boolean | null

Enable active speaker detection

Notes:

  • Only supported by lipsync-2 and lipsync-2-pro
  • sync-3 does not support this parameter

Do not pass this parameter unless necessary.

Example:

true

Response

Task created successfully

created
integer

Task creation timestamp

Example:

1757165031

id
string

Task ID

Example:

"task-unified-1757165031-uyujaw3d"

model
string

Actual model name used

object
enum<string>

Specific task type

Available options:
video.generation.task
progress
integer

Task progress percentage (0-100)

Required range: 0 <= x <= 100
Example:

0

status
enum<string>

Task status

Available options:
pending,
processing,
completed,
failed
Example:

"pending"

task_info
object

Asynchronous task info

type
enum<string>

Task output type

Available options:
video
Example:

"video"