API Errors
JSON errors use {"error":"…"}. Raw fetches use text/plain and sometimes HTTP 200 stubs.
API
JSON body always {"error":"…"} (or {"ok":true} on archive).
- 401
unauthorized - 403
API access requires Pro. - 404Missing script (message from the service).
- 422Validation (title, runtime, visibility, expiry, size, plan gates).
- 429
rate limited - 500
internal error
{ "error": "rate limited" }
Raw fetches
Raw responses are text/plain. Several failure modes still use HTTP 200 so curl -fsSL | runtime prints a stub instead of hiding the error.
- Missing / bad slug
404not found - Revoked or archived
410gone - Expired or fetch-capped
410expired - Private, bad token
200stub,X-Runny-Status: denied - Quarantined
200stub,X-Runny-Status: quarantined - Scan hold
200stub,X-Runny-Status: scanning - Free fetch quota
200stub,X-Runny-Status: quota - IP rate limit
429rate limited
There is no distinct raw body for “deleted” other than archive/revoke gone.