GoRunner docs
Search or askSearch⌘K

Approve or reject a held run

Since v2026.10.8

POST/api/runs/{id}/decision

Approves or rejects the approval a held run waits for, as its own link would.

Needs an API token with the Cancel and delete permission for runs (run:manage).

Parameters

Path

idRequired · UUID

The run’s ID.

Body

decisionRequired · string

approve or reject, in any case. approved, rejected, decline and declined work too.

Who may answer

Deciding carries a run on, so it needs the same permission as cancelling. A reader without it doesn’t get the approve and reject links in Get a run either. The run records who answered.

Responses

  • 200OK

    The answer is recorded. A worker carries the run on shortly.

  • id isn’t a UUID, or decision isn’t approve or reject.

  • The token lacks the Cancel and delete permission for runs (run:manage), which deciding needs.

  • No run with this ID in the token’s workspace.

  • The run isn’t waiting for an approval.

  • Someone already answered it.

  • The workspace’s account is suspended.

  • The answer couldn’t be recorded. The run is still held.

  • The answer couldn’t be handed to a worker. The run is still held.

Any call can also answer: 401 UNAUTHORIZED · 401 TOKEN_ENDED · 403 TOKEN_SURFACE_OFF · 403 FEATURE_OFF · 403 EMBED_NOT_ALLOWED · 403 EMBED_NOT_AVAILABLE · 403 ACCOUNT_SUSPENDED · 413 PAYLOAD_TOO_LARGE · 415 INVALID_CONTENT_TYPE · 429 RATE_LIMITED · 503 BUSY · 503 PAUSED · 503 SERVICE_UNAVAILABLE. See Errors.

Request

GORUNNER="https://api.gorunner.io"
GORUNNER_TOKEN="grt_…"  # needs Cancel and delete for runs
RUN_ID="your-run-id"

curl -X POST "$GORUNNER/api/runs/$RUN_ID/decision" \
  -H "Authorization: Bearer $GORUNNER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "decision": "approve"
  }'

Response · 200 OK

json
{
  "data": {
    "runId": "8f0c41d2-6b7e-4c1a-9d3f-2a5b7c9e1f04",
    "status": "resuming",
    "waitStep": "manager_ok",
    "decision": "approved"
  }
}
Every field

Body

decisionRequired · string

approved/rejected, and decline/declined for a rejection, are accepted too, in any case.

One of approve, reject.

Response · 200 OK

dataobject
runIdUUID
statusstring

One of resuming.

waitStepstring
decisionstring

One of approved, rejected.