GoRunner docs
Search or askSearch⌘K

Check how a connection sign-in ended

Since v2026.10.10

GET/api/embed/v1/accounts/{accountId}/connections/oauth2/attempts/{attemptId}

Reads how a connection sign-in your server started has ended: pending, then connected or failed.

Needs a partner key: Authorization: Bearer gre_…, from Platform › Partner keys. It sees only sign-ins that this key started for this account.

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: an ID may contain /.

attemptIdRequired · string

The attemptId that Start a connection sign-in from your own button answered.

No query, headers or body beyond the key.

Request

GORUNNER="https://automations.example.com"
GORUNNER_EMBED_KEY="YOUR_PARTNER_KEY"  # gre_…, from Platform › Partner keys
ACCOUNT_URL="$GORUNNER/api/embed/v1/accounts/acct-bakery"
ATTEMPT="Zq3XbN0iJm7dQe8TfR2wLg"  # from the start

curl "$ACCOUNT_URL/connections/oauth2/attempts/$ATTEMPT" \
  -H "Authorization: Bearer $GORUNNER_EMBED_KEY"

Response · 200 OK

json
{
  "data": {
    "attemptId": "Zq3XbN0iJm7dQe8TfR2wLg",
    "status": "connected",
    "connectionId": "0f8b2c7e-4a51-4d3e-9b2a-6c1d2e3f4a5b",
    "account": "ada@bakery.example",
    "expiresAt": "2026-10-21T12:10:00Z"
  }
}

What the status means

pending
The provider hasn’t sent the browser back yet. Ask again in a few seconds.
connected
The connection holds its tokens. connectionId names it. account says who signed in, when the test after the sign-in named them.
failed
reason says why, and error says it as a sentence for a person.

Reasons

denied
The person said no on the provider’s page.
service_error
The provider answered with an error.
failed
Something went wrong on GoRunner’s side.
cancelled
The sign-in was stopped.
expired
The sign-in link ran out first.

A sign-in can be read for an hour after its link runs out.

Response · 200 OK, failed

json
{
  "data": {
    "attemptId": "Zq3XbN0iJm7dQe8TfR2wLg",
    "status": "failed",
    "reason": "denied",
    "error": "…a sentence for a person",
    "expiresAt": "2026-10-21T12:10:00Z"
  }
}

Responses

  • 200OK

    Where the sign-in stands.

  • No such account, or no sign-in with that ID started by this key for it.

  • The sign-in couldn’t be read. Try again.

  • Sign-ins can’t be read on this server now. Try again.

Any call can also answer: 401 UNAUTHORIZED · 403 EMBED_NOT_LICENSED · 403 IP_NOT_ALLOWED · 429 RATE_LIMITED. See Errors.

Response · 404 Not Found

json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "…"
  }
}
Every field

It takes no body.

Response · 200 OK

dataobject
attemptIdstring
statusstring

pending — the provider has not sent the browser back yet; connected — the connection holds its tokens; failed — see reason.

One of pending, connected, failed.

connectionIdUUID

Only when connected: the connection made (or signed in again).

reasonstring

Only when failed: denied — the person said no on the provider’s page; service_error — the provider answered with an error; failed — anything on this side; cancelled — the sign-in was stopped (POST /api/connections/oauth2/attempts/{attemptId}/cancel, by the token that started it; no partner endpoint stops one); expired — the link ran out first.

One of denied, service_error, failed, cancelled, expired.

errorstring

Only when failed: why, as a sentence for a person.

accountstring

Only when connected: who signed in, when the test after the sign-in named them.

expiresAttime