Why a Sume scheduled run's events_url is null, and what to poll

Action runs always return events_url null; Format runs expose a phase timeline. What to poll for a scheduled run and how to read skipped.

5 min readSume
All posts

events_url is always null on a Sume scheduled (action) run; it is a field kept for shape parity with Format runs, which do return a real phase timeline. For an action run, poll status_url until a terminal status and read result_url for the output. cancel_url is present while the run is cancelable.

Fields by run type

Receipt fields (read 2026-10-04)
FieldFormat runScheduled (action) run
status_urlYesYes
result_urlYesYes
events_urlPhase timelineAlways null
cancel_urlYesYes, while cancelable
Per-run spend capUp to $500Clamped to the lower of the request and the schedule cap

Statuses to handle

An action run can be queued, processing, completed, failed, canceled or skipped. skipped is not a failure: overlap policy skip records a tick that arrived while a run was active, with skip_reason previous_run_active. Treat it as no output and wait for the next tick.

Poll without the timeline

Without events, use status and time. Back off between polls, stop on any terminal status, and send an alert when a run has been processing past your own limit.

import json, os, time, urllib.request

TERMINAL = {"completed", "failed", "canceled", "skipped"}

def wait(status_url: str, limit_s: int = 1800) -> dict:
    end = time.time() + limit_s
    while time.time() < end:
        req = urllib.request.Request(status_url, headers={
            "Authorization": "Bearer " + os.environ["SUME_API_KEY"]})
        with urllib.request.urlopen(req) as resp:
            run = json.load(resp)
        if run.get("status") in TERMINAL:
            return run
        time.sleep(15)
    raise TimeoutError(status_url)

If you need phases

If you need a phase timeline or an output schema per call, run a Format on your own tick instead; the events endpoint on a Format run reports preparing, running and finalizing.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume