Fetch tool to media input: which URLs Sume accepts

A model can fetch a page, but Sume media inputs must be public HTTPS image or video URLs, not web pages. Here is what each Sume endpoint accepts.

4 min readSume
All posts

A web fetch tool returns page content, but Sume's generation inputs must be fetchable public HTTPS URLs of the media file itself: an image or a video, with a matching content type. Have your agent extract the direct media URL from the page before it calls Sume, and do not pass the page URL.

What Vercel announced

The Vercel changelog for Sep 30, 2026 says AI Gateway now supports Browserbase Search and Fetch, giving models web discovery. That helps an agent find reference pages. It says nothing about media inputs, which is where Sume's rules apply.

What Sume accepts

Launch generation requests take media as public HTTPS URLs in the fields named by the OpenAPI schema. Localhost, private-network, non-HTTPS, signed or private URLs, and mismatched content types are rejected before generation is submitted.

Sume media input fields (read 2026-10-03)
WorkflowField
Avatar from a photoinput.image_url
Avatar video product imageproduct_image
Avatar video scene photoscene.image_url
Face swap (Beta) source videovideo_url
Video captionsvideo_url

Sume-hosted sources for editing tools

Some tools are stricter. Video trim and Timeline 1.0 take only this workspace's media.sume.com artifacts or assets, and reject off-host URLs with unsupported_media_source. Import first with POST /v1/media-imports (media-imports_create over MCP), then use the resulting Sume URL.

A guard for your agent

Before calling Sume, check that the candidate is an HTTPS URL that ends in a file the agent can identify as media. This small Python check catches the common mistake of passing a page URL; the server still does the final validation.

from urllib.parse import urlparse
import requests


def looks_like_media(url: str) -> bool:
    u = urlparse(url)
    if u.scheme != "https" or not u.hostname:
        return False
    r = requests.head(url, allow_redirects=True, timeout=15)
    kind = r.headers.get("content-type", "").split(";")[0]
    return r.ok and kind.startswith(("image/", "video/"))

Trending videos is a different case: it returns public watch URLs for research and does not mirror downloadable source files, so those URLs are not generation inputs. See Media inputs.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume