Runway failureCode is diagnostic: what to show users from Sume
Runway says not to show SAFETY failure codes to users. On Sume, show your own text keyed on code; keep message, request_id and details in logs.

Runway says the third part of a SAFETY.* failure code, such as SAFETY.INPUT.TEXT, may not match the real input and should be treated as diagnostic only, not shown to users. With Sume, do the same: map the stable code (or next_action) to your own user-facing sentence, and keep message, details and request_id for logs and support.
Runway text from its Dev docs; Sume text from Errors and spend and Errors and rate limits. Read 2026-10-01.
Why not show a diagnostic code?
Runway's example is a SAFETY.INPUT.TEXT failure on a task that sent no prompt text. A user shown that label would be told something false. The same risk applies to any provider-internal label.
Which Sume error fields are for whom?
The docs describe each field's job. Sort them into user-facing, dashboard, and log-only.
| Field | Docs say | Where to use it |
|---|---|---|
code | Stable token to switch on | Map to your own wording |
message | Written for a human, may change; log it, never match on it | Logs |
category, stage, public_reason | Coarser labels for dashboards and alerts | Dashboards |
next_action | A fixed set such as fix_input or retry_later | Drive the UI button |
request_id | Quote it to support; also the x-sume-request-id header | Support link or log |
What stays private?
Internal provider payloads are not public API fields, so there is nothing of that kind to relay. When you write to support, include the request id, and leave out API keys, signed URLs, raw media URLs and private workspace or user ids. See what not to log.
What should the user see?
Something short and true for the next_action: "fix the input", "add funds", "try again later". Do not echo the raw message. Branch on HTTP status first and then on code, as the docs advise, and keep the reasoning for rejected content in your own copy, not in a provider's label.
Sources
Related posts
More in Developers
- gen3a_turbo no longer available on Runway: re-read Sume's model list
Runway now fails requests for gen3a_turbo and gen4_aleph. Avoid the same break on Sume: read /v1/videos/models instead of hard-coding ids.
- Runway INTERNAL.BAD_OUTPUT.01: fix the prompt, then resubmit
Runway's INTERNAL.BAD_OUTPUT.01 may succeed after prompt fixes. Sume's equivalent step: inspect job events, fix the input, and send a new request.
- Runway INTERNAL or null failureCode: how long to delay a retry
Runway says to add a delay for INTERNAL or null failure codes but gives no number. Sume's errors carry retryable and retry_after_seconds fields.
- Runway Model Router allow and deny lists vs Sume auto
Runway's Model Router has allow and deny lists plus per-modality credit ceilings. Sume has no lists: pin a catalog id, or send sume/auto and accept its pick.
Written by Sume