GoRunner

Authentication

Scoped bearer tokens, minted per workspace — a token's authority is exactly its scopes, nothing more.

Minting a token

Settings → Workspace → API tokens (requires the workspace:manage permission, i.e. a workspace admin). Choose a name, the scopes, and an optional expiry. The raw token — grt_ + 40 hex characters — is shown once; only its hash is stored.

curl -s "$BASE/api/workflows" -H "Authorization: Bearer grt_xxxxxxxx…"

Tokens are workspace-scoped: every call operates in the workspace the token was minted in. Machine calls skip CSRF entirely (no cookies involved).

Scopes

A token holds exactly the scopes granted at mint — never its creator's live role. Reads are enforced as strictly as writes.

ScopeGrants
workflow:readList/read workflows, versions, exports, validation.
workflow:writeCreate, update, import, duplicate, folders/tags.
workflow:deleteDelete workflows.
workflow:publishPublish and unpublish.
workflow:runTrigger runs, test steps, arm test listeners.
connection:readConnection metadata (never credential values).
connection:writeCreate/update/test/replace connections.
connection:deleteDelete connections.
run:readRuns, step data, live streams, stats.
run:manageCancel and delete runs.

Deliberately not grantable to tokens: workspace:manage and org:manage. A leaked token can never escalate into tenancy management, mint further tokens, or read Keel conversations.

Failure semantics

StatusMeaning
401 UNAUTHORIZEDMissing, malformed, expired or revoked credential. A token pasted without the Bearer prefix gets a message saying exactly that.
403 FORBIDDENAuthenticated, but the token lacks the scope. The message names the missing permission.
404 NOT_FOUNDAlso the answer for resources in other tenants — existence is never disclosed across workspace boundaries.

Revoke tokens from the same settings page; revocation is immediate.

On this page