Multimodal
Face swap
A dedicated POST /v1/face-swap
endpoint — not one more /v1/videos
request shape, and not reachable through it. A single source face photo
(face_image_url) replaces the face
throughout an existing target video (video_url).
Output length always equals the target video's own probed duration — there's no
duration_secs field, and no
prompt either.
Consent is mandatory. Every request must include
source_face_consent: true,
affirming you have the right to use the uploaded face photo. A request without it is rejected
(400 consent_required) before any
pricing or upstream call happens. This covers only the source face — the target video is treated as
your own asset, like every other video-editing endpoint on this platform.
Swap a face into a video
import requests, time
job = requests.post(
"https://videorouter.sh/api/v1/face-swap",
headers={"Authorization": "Bearer llmr_sk_live_..."},
json={
"model": "segmind/hyperswap-video-faceswap",
"video_url": "https://example.com/clip.mp4",
"face_image_url": "https://example.com/face.jpg",
"source_face_consent": True,
},
).json()
# -> {"id": "fal:...", "status": "queued", ...}
status = requests.get(
f"https://videorouter.sh/api/v1/face-swap/{job['id']}",
headers={"Authorization": "Bearer llmr_sk_live_..."},
).json()
Billed reserve-then-settle — the price shown before submission is a sizing estimate, the real charge settles from the provider's own completed-job invoice (same flow as Atlas Cloud's video models). That cost already includes our 2% platform fee.
Which models
segmind/hyperswap-video-faceswapSegmind (FaceFusion Labs)~$0.00675/s estimate, real cost settles from Segmind's invoiceOne model, one provider today — no cross-provider failover pool yet. Also shows up under the Face Swap filter on the models catalog.