GoRunner docs
Search or askSearch⌘K

Stop a sign-in

Since v2026.10.8

POST/api/connections/oauth2/attempts/{attemptId}/cancel

Stops a sign-in you started, so finishing it later connects nothing.

Needs an API token with the Write permission for connections (connection:write).

Parameters

Path

attemptIdRequired · string

The sign-in to stop.

Responses

  • 200OK

    The sign-in as it stands now, as Check a sign-in reads it. One that had already ended keeps its outcome. One that is gone answers {"status": "expired"}.

  • The token lacks the Write permission for connections.

  • Not a sign-in you started.

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

  • This server can’t reach sign-ins now.

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 Write for connections
ATTEMPT_ID="your-attempt-id"  # from the start

URL="$GORUNNER/api/connections/oauth2/attempts/"
URL="${URL}$ATTEMPT_ID/cancel"
curl -X POST "$URL" \
  -H "Authorization: Bearer $GORUNNER_TOKEN"

Response · 200 OK

json
{
  "data": {
    "attemptId": "Zq3XbN0iJm7dQe8TfR2wLg",
    "status": "failed",
    "reason": "cancelled",
    "error": "You stopped this sign-in.",
    "expiresAt": "2026-10-25T09:10:00Z"
  }
}
Every field

It takes no body.

Response · 200 OK, a sign-in from GoRunner’s own pages

dataobject
statusstring

pending — the popup has not bound yet; launched — the person is at the provider; connected — the tokens are stored; failed — see error; expired — the attempt aged out, or never existed.

One of pending, launched, connected, failed, expired.

connectionIdUUID

The connection signed in: for a sign-in that makes its connection, present once it connected.

reasonstring

Only when failed: denied — the person said no on the provider’s page; other_window — the sign-in finished in a browser that did not start it; service_error — the provider answered with an error; failed — anything on this side (the connection, its client, storage).

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

errorstring

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

accountstring

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

previousAccountstring

Only when a sign-in again signed in as someone else than before: who it was.

accountChangedboolean

Response · 200 OK, a sign-in an API token started

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