Is there a lipsync-1.0 endpoint on Sume? Old paths 404; use Fabric

Sume's old /v1/lipsync-1.0 paths return 404 and its model ids return model_not_found. Send the same still and audio to veed/fabric-1.0 or H3 Max lip-sync.

4 min readSume
All posts

No. Sume has no lipsync-1.0 endpoint any more: POST /v1/lipsync-1.0/generate and the model-run paths /v1/models/sume/lipsync-1.0/runs, /v1/models/sume/lipsync/v1/runs and /v1/models/sume/lipsync/v1.0/runs all return 404, and sume/lipsync-1.0, sume/lipsync/v1 and sume/lipsync/v1.0 return model_not_found on the admission preview. A talking clip from a still plus audio is now POST /v1/veed/fabric-1.0, or POST /v1/minimax/h3-max/lip-sync when the audio is 5 to 14.8 seconds.

If you saw lipsync-1 in an old script, a log or a pricing sheet, Sume's tests still use lipsync-1 as the internal model id behind VEED Fabric 1.0, so the public Fabric route is the one to call. Both current routes take a still and an audio URL, but check your old body against the field rules below, since audio_url must be Sume-hosted and duration_seconds is required. Facts here come from the Models overview, the API reference and Sume's API tests, read 2026-10-10.

What 404s and what still works

Sume's tests assert the removed paths directly, so the 404 is deliberate and not an outage. Do not retry it or switch keys; change the route.

Two older Fabric aliases are different: they are deprecated but still accepted with the same body, so a script on those can migrate by changing the URL only.

Lip-sync route status (checked against the Models overview and API tests, read 2026-10-10)
Route or idResult todaySend instead
POST /v1/lipsync-1.0/generate404POST /v1/veed/fabric-1.0
POST /v1/models/sume/lipsync-1.0/runs404POST /v1/models/veed/fabric-1.0/runs
POST /v1/models/sume/lipsync/v1/runs and /v1.0/runs404POST /v1/models/veed/fabric-1.0/runs
model sume/lipsync-1.0, sume/lipsync/v1, sume/lipsync/v1.0 (admission preview)404 model_not_foundveed/fabric-1.0
POST /v1/avatar-1.0/image-to-videoWorks, deprecated aliasPOST /v1/veed/fabric-1.0
POST /v1/models/sume/avatar-1.0/image-to-video/runsWorks, deprecated aliasPOST /v1/models/veed/fabric-1.0/runs

The two routes to move to

VEED Fabric 1.0 (veed/fabric-1.0) takes a still image or a ready avatar plus Sume-hosted audio. Send exactly one visual source: image_url, or avatar_id / avatar_handle. audio_url must be on the Sume media host and at most 10 MB, duration_seconds is 1 to 300, and resolution is 480p or 720p (default 720p).

MiniMax H3 Max Lip Sync (minimax/h3-max/lip-sync) takes the same still-plus-audio body. It is the explicit alternative when the audio is 5 to 14.8 seconds, and its list price is multiplied by 1.25. The Models overview states both rules.

  • Import any outside audio first so it has a media.sume.com URL; see Media inputs.
  • Keep the Idempotency-Key header on every submit; both routes return the usual job envelope.
  • Poll status_url or use a webhook as described in Jobs and results.

What the move costs

Fabric bills the audio length rounded up to whole seconds. A 4.62-second line at 720p reserves 5 seconds at $0.1875 per second, which is $0.9375. At 480p the rate is $0.10 per second: a 30-second line is $3.00.

H3 Max follows the same rounding. In Sume's golden price tests, 14.8 seconds at 1080p bills as 15 seconds for $3.00. Check the live rate in GET /v1/catalog before you budget a batch, because these rates are fixtures of a dated test run.

Example lip-sync charges from Sume's golden price tests (read 2026-10-10)
RouteInputBilled secondsCharge
veed/fabric-1.0 at 720p4.62 s audio5$0.9375
veed/fabric-1.0 at 480p30 s audio30$3.00
minimax/h3-max/lip-sync at 1080p14.8 s audio15$3.00

A working replacement call

This Python call sends the same body you used before to the Fabric route. It needs httpx and SUME_API_KEY in the environment, and it prints the job envelope so you can read the job id and result URL.

import asyncio
import os

import httpx


async def main() -> None:
    async with httpx.AsyncClient(base_url="https://api.sume.com") as client:
        r = await client.post(
            "/v1/veed/fabric-1.0",
            headers={
                "Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
                "Idempotency-Key": "lipsync-migrate-001",
            },
            json={
                "image_url": "https://example.com/still.png",
                "audio_url": "https://media.sume.com/artifacts/artf_demo/line.wav",
                "duration_seconds": 5,
                "resolution": "720p",
            },
        )
        print(r.status_code, r.json())


asyncio.run(main())

Check before you ship

Search your code and logs for lipsync and for /v1/avatar-1.0/image-to-video. Replace the first with a Fabric or H3 Max route today, and plan to move the second before Sume retires it. If a talking face must also look like a stored avatar, pass avatar_handle instead of image_url, not both.

For a talking face, the Models overview says to use a Fabric clip with an accepted still plus TTS audio, not a video model with narration under it.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume