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).

  • 401unauthorized
  • 403API access requires Pro.
  • 404Missing script (message from the service).
  • 422Validation (title, runtime, visibility, expiry, size, plan gates).
  • 429rate limited
  • 500internal error
JSON
{ "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 slug404 not found
  • Revoked or archived410 gone
  • Expired or fetch-capped410 expired
  • Private, bad token200 stub, X-Runny-Status: denied
  • Quarantined200 stub, X-Runny-Status: quarantined
  • Scan hold200 stub, X-Runny-Status: scanning
  • Free fetch quota200 stub, X-Runny-Status: quota
  • IP rate limit429 rate limited

There is no distinct raw body for “deleted” other than archive/revoke gone.

Restore revision