Skip to main content
A run moves to BLOCKED when it hits something it cannot get past on its own. BLOCKED is not terminal — almost every cause is recoverable, but the right recovery depends on the cause.
Start with last_error. Fetch the run with Get Run and read last_error.error_label, plus params.appendix when the label is LIMIT_REACHED. Everything below keys off those two fields.

Find the cause

The response carries status, last_error, retry_count and postponed_until. When postponed_until is set, Edges has already scheduled the retry for you — see below.

Cause → recovery

For anything cookie- or login-related, reconnect before you resume. Resuming a run whose identity is still invalid consumes a retry and blocks again.

Resume the run

Resuming a BLOCKED run:
  • sets the run back to SCHEDULED
  • clears last_error
  • resets retry_count to 0
  • clears postponed_until
  • moves every BLOCKED input in that run back to SCHEDULED
So a resumed run gets a full fresh set of retries, and inputs that failed are attempted again. Inputs that already succeeded are not re-run.
A run that belongs to a flow run cannot be resumed on its own — the API returns 422. Resume the flow run instead.

Resume vs. continue

These are different operations and are not interchangeable.

I hit a limit

When error_label is LIMIT_REACHED, params.appendix tells you which window was exhausted and therefore how long to wait:
All limits use rolling windows, not calendar ones — a daily limit resets 24 hours after the calls that consumed it, not at midnight. If postponed_until is present, use it rather than computing the wait yourself.
If the identity was connected in the last few days, check Identity Ramp-Up before assuming the quota table applies.

Manage Runs

The full run lifecycle and status list.

Error Reference

Every error label and what to do about it.

Rate Limits

Workspace and plan limits.