GoRunner docs
Search or askSearch⌘K

Test a connection

POST/api/connections/{id}/test

Tests a saved connection against its service and records the result.

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

Parameters

Path

idRequired · UUID

The connection’s ID.

Read it

success: true
The service accepted it. status becomes active.
success: true, unverified: true
The app can’t be tested without a real step. Nothing was proven. status becomes unverified.
success: false
The service refused it (error, cause). status becomes error, or pending before a first sign-in.
success: false, noVerdict: true
No answer came back: no worker, the time ran out, or this installation doesn’t run the app (reason). Nothing was learned. status stays as it was.

unavailable: true means this installation doesn’t run the app. A test waits up to 30 seconds. It takes no body and no Idempotency-Key.

Responses

  • 200OK

    The result, even a failed one. Read success and noVerdict.

  • id isn’t a UUID.

  • The token lacks the Write permission for connections.

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

  • The worker’s answer couldn’t be read.

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
CONNECTION_ID="your-connection-id"

URL="$GORUNNER/api/connections/$CONNECTION_ID/test"
curl -X POST "$URL" \
  -H "Authorization: Bearer $GORUNNER_TOKEN"

Response · 200 OK

json
{
  "data": {
    "success": true,
    "message": "Connected as gorunner-bot",
    "account": "gorunner-bot",
    "status": "active"
  }
}
Every field

It takes no body.

Response · 200 OK

dataobject

The verdict from a connection test. Delivered inside an HTTP 200 in every case, INCLUDING failure and "no worker available" — branch on success/unverified, never on the status code.

successboolean

True when the test did not fail. Note that success: true together with unverified: true means nothing was actually proven.

unverifiedboolean

Present and true when the app cannot verify credentials without running a real step. The connection row is set to unverified and the credentials are checked on first real use. Deliberately not reported as a pass.

messagestring

The app’s own words on success, or the explanation of an unverified result.

errorstring

Present when success is false. Either the provider’s refusal (the row becomes error, or pending for an unauthorized OAuth2 connection), or the fixed text "No worker is available to run this right now..." — in which case NOTHING was learned about the credentials and the stored status is deliberately left unchanged.

causestring

Why a failed test failed. expired: the refresh was refused during the test and the connection stays expired.

One of refused, expired, server, forbidden, other.

noVerdictboolean

Present and true when no verdict came back (no worker, the time ran out, an app this build does not serve): nothing was learned about the credentials and the stored status is unchanged.

reasonstring

Why, with noVerdict.

One of no_worker, timeout, not_served.

accountstring

Who the credential signs in as, when the test learned it.

statusstring

The status recorded.

unavailableboolean

This installation does not serve the app: nothing could test it, and nothing was recorded.