Format io is null on older Formats: pick by your own input kind

On Sume's Format list, the io block is null for Formats saved before the field existed. Do not route on it alone; read input_kind and output_kind when present.

4 min readSume
All posts

On GET /v1/formats, the io block is null for Formats saved before the field existed. If your router picks a Format by io.input_kind and io.output_kind, an older Format will fall through unless you handle the null. Treat null as unknown, not as a mismatch.

What io says when it is present

io describes what a Format takes and makes. input_kind is url, text, image or product, and output_kind is video, image or text. The list item also carries profile, for example url_to_video.

Format io fields on the list endpoint (read 2026-10-06)
FieldValues
io.profileA short profile name such as url_to_video
io.input_kindurl, text, image or product
io.output_kindvideo, image or text
ionull on Formats saved before this field existed

Routing a product feed safely

A holiday feed of 100 products with a product URL each is a url input and a video output. Filter the list on those, but keep a second path for the Formats where io is null.

  • Read the Format's showcase (a real output made at registration, or null) before you spend on it.
  • Open the call sheet at https://docs.sume.com/formats/{handle}/{slug} for the curl, scopes and poll loop; it shows nothing from the Format body.
  • Pin the Format you chose by invoke_url (the skl_ path), which survives a rename.

A router that tolerates null

Write the filter so that io === null is its own branch. In that branch, fall back to the Format title, the call sheet, or a quick manual check, and record which Formats took that path so you can fix the metadata where you own it.

For Formats by Sume, the list shows them at the reserved sume handle, and any key with the right scopes can call them. The run, its media and its spend belong to the key that made the call.

Treat a null io as unknown rather than as empty. Read the Format's own description and your own input kind to choose, and send a small test run before you commit a whole batch to it.

Tradeoff

Metadata saves you a trial run, but it is the author's description of the Format, not a promise about every input. Run one SKU before you queue 100, and read the status and api_trigger_enabled fields with care: a Format never run over the API can show them as inactive and false and still run.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume