GoRunner docs
Search or askSearch⌘K

Run a run again

Since v2026.10.4

POST/api/embed/v1/accounts/{accountId}/runs/{runId}/rerun

Runs a run again, as Run again on the Runs page does.

Needs a partner key: Authorization: Bearer gre_…, from Platform › Partner keys. Call it from your server only.

Embed · Self-hosted with an Embed license

Parameters

Path

accountIdRequired · string

Your ID for the customer’s account: 1 to 255 bytes of UTF-8, case-sensitive. URL-encode it: it may contain /.

runIdRequired · UUID

The run’s ID.

Headers

Idempotency-KeyOptional · string

Up to 255 characters. The same request with the same key within 24 hours answers the first result again, with Idempotency-Replayed: true.

What runs

A new production run of the workflow’s published version, with the trigger data the run started with (headers, query and body as they arrived), marked as its retry (retryOf). Over a runs-at-once limit it waits in line. The account’s audit log gets an embed.run.rerun row.

Responses

  • 201Created

    The new run.

  • The account ID isn’t allowed as written. details.field names it.

  • No such account or run, or its workflow was deleted.

  • The workflow isn’t on, so it has nothing published to run.

  • The account is suspended. Resume it first.

  • The account is deleted. Restore it first, within 30 days.

  • A request with this Idempotency-Key is still running. Retry shortly.

  • The published version has a step the account may not use. Nothing started.

  • The published version can’t run. Nothing started.

  • Too many runs are already waiting, for the account or this workflow. Try again later.

  • The workflow is at its runs-at-once limit and is set to Refuse.

  • Something failed on the installation’s side. Try again.

  • The apps the account may use couldn’t be read. Nothing started. Try again.

Any call can also answer: 401 UNAUTHORIZED · 403 EMBED_NOT_LICENSED · 403 IP_NOT_ALLOWED · 413 PAYLOAD_TOO_LARGE · 415 INVALID_CONTENT_TYPE · 429 RATE_LIMITED · 503 BUSY. See Errors.

Request

GORUNNER="https://automations.example.com"
GORUNNER_EMBED_KEY="YOUR_PARTNER_KEY"  # gre_…
ACCOUNT_ID="acct-bakery"
RUN_ID="your-run-id"

URL="$GORUNNER/api/embed/v1/accounts/$ACCOUNT_ID/"
URL="${URL}runs/$RUN_ID/rerun"
curl -X POST "$URL" \
  -H "Authorization: Bearer $GORUNNER_EMBED_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

Response · 201 Created

json
{
  "data": {
    "run": {
      "id": "1d7f3b9e-2c4a-4e6b-8d0f-5a3c9e1b7d26",
      "workflowId": "3b1e5c2a-7d4f-4e8b-a1c6-5f2d9b0e7a31",
      "workspace": {
        "id": null,
        "default": true
      },
      "status": "queued",
      "trigger": "webhook",
      "startedAt": "2026-10-25T08:59:58Z",
      "firstStartedAt": null,
      "finishedAt": null,
      "durationMs": null,
      "error": null,
      "failure": null,
      "retryOf": "8f0c41d2-6b7e-4c1a-9d3f-2a5b7c9e1f04"
    }
  }
}
Every field

It takes no body.

Response · 201 Created

dataobject
runobject
idUUID
workflowIdUUID
workspaceobject
idstring or null

The partner’s workspace id; null for the default workspace.

defaultboolean
statusstring

queued: accepted, waiting for a worker or a free slot. running: a worker has it. held: waiting on a person or a timer.

One of queued, running, held, worked, failed, cancelled.

triggerstring

What started it: the trigger’s type (webhook, cron, manual, …).

startedAttime

When the run was accepted. It may then wait in line for a free slot before a worker starts it (firstStartedAt).

firstStartedAttime or null

When a worker first started the run. durationMs counts from here, so the time from startedAt to this is the time the run waited in line. Null until a worker starts the run, and for a run started on v2026.10.5 or earlier or one that ran inline (an error handler’s), whose durationMs counts from startedAt.

finishedAttime or null
durationMsinteger or null

How long the run took, in milliseconds: from the first time a worker started the run (firstStartedAt, else startedAt) to its finish. Waits inside the run (a Delay, an Approval) count; the time it waited in the line for a free slot does not. A run cancelled while it waited has none. Null until it finishes.

errorstring or null

Why it did not work, as a sentence: a failed run’s failure, or Cancelled by user on a cancelled run (whoever cancelled it).

failureobject or null

A failed run’s error in the shape the run.failed event carries: the message (as error) and the first step that failed. Null for every other run.

messagestring
stepobject or null

The first step that failed; null when the run failed around its steps.

namestring

The step’s name in the definition (step_2).

displayNamestring
retryOfUUID

The run this one runs again.