avatar-image-to-video_create: audio_url and duration_seconds

avatar-image-to-video_create needs a Sume-hosted audio_url and duration_seconds (1 to 300) matching the audio. Missing either gives missing_payload_field.

4 min readSume
All posts

avatar-image-to-video_create is the hosted MCP tool that turns a still and an audio clip into a talking video. An agent that calls it with only an image and a prompt gets the error code missing_payload_field twice over: once for audio_url, and then for duration_seconds. Each error names the field in a path, so the repair is mechanical.

The three required parts

The payload needs a non-empty audio_url, which the message says is a Sume-hosted URL, typically a tts_create segment. It needs duration_seconds, a number from 1 to 300 that matches the length of the audio. And it needs one visual source: image_url, or avatar_id or avatar_handle, not both.

The checks run in that order. The tool first applies the allowed-key list, then checks audio_url, then duration_seconds, then the visual source. So a call missing everything fails on audio_url first, and each retry reveals the next gap.

avatar-image-to-video_create payload checks in Sume's MCP code (read 2026-10-05)
OrderFieldError code if wrong
1unknown keysunsupported_payload_keys
2audio_url (Sume-hosted, non-empty)missing_payload_field
3duration_seconds (number, 1 to 300)missing_payload_field
4image_url XOR avatar_id / avatar_handleconflicting_payload_fields or missing_payload_field

Get the audio from Sume first

A third-party audio link is not accepted: the tool wants a Sume-hosted audio_url. The usual flow is tts_create for the line, then a wait for the job, then passing the resulting URL on. Read the length from the audio job result instead of guessing, because duration_seconds must match it.

If the lip-sync model minimax/h3-max/lip-sync is your target, the error text for the wrong tool says the audio should run 5 to 14.8 seconds. Keep the line within that range, or split a long script into several clips.

Retry rules

Each of these errors comes before admission, so no job is created and no hold is made. Reuse the same idempotency_key on the corrected call. Use dry_run to read the price of the clip before you submit it.

{
  "idempotency_key": "host-intro-3",
  "dry_run": true,
  "payload": {
    "avatar_handle": "my-host",
    "audio_url": "https://media.sume.com/example/line-1.mp3",
    "duration_seconds": 9
  }
}

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume