GoRunner docs
Search or askSearch⌘K

Renew a session

Since v2026.10.4

POST/api/embed/v1/sessions/current/renew

Renews the frame’s session without a new login code. The frame calls it.

Needs the frame’s session: Authorization: Bearer gri_…. The SDK calls it; you rarely do.

Embed · Self-hosted with an Embed license

Request

It takes no parameters and no body.

How long it can renew

Once per session, 4 a minute per line of sessions, and for 12 hours after the login code that began the line (EMBED_SESSION_MAX_HOURS, renewableUntil). After that, and on any refusal, the frame asks your server for a login code again.

A removed person, a changed role or a deleted account or workspace ends the session as on any request.

Responses

  • 201Created

    The new session. The old one ends.

  • No session token.

  • The session ended. details.reason says why, such as access_removed, role_changed or workspace_deleted.

  • Embed isn’t licensed here, or sign-in is off (details.reason: not_licensed or sign_in_off).

  • It can’t be renewed (details.reason: account_suspended, preview, max_age, key or website). Ask your server for a login code.

  • This line of sessions’ renewals this minute are used up.

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

Any call can also answer: 413 PAYLOAD_TOO_LARGE · 415 INVALID_CONTENT_TYPE · 503 BUSY. See Errors.

Request

GORUNNER="https://automations.example.com"
GORUNNER_SESSION="gri_…"  # the frame’s session

URL="$GORUNNER/api/embed/v1/sessions/current/renew"
curl -X POST "$URL" \
  -H "Authorization: Bearer $GORUNNER_SESSION"

Response · 201 Created, shortened

json
{
  "data": {
    "token": "gri_…",
    "expiresAt": "2026-10-25T09:30:00Z",
    "renewAfter": "2026-10-25T09:25:00Z",
    "renewableUntil": "2026-10-25T21:00:00Z",
    "renewInSeconds": 1500,
    "account": {
      "id": "acct-bakery",
      "status": "active"
    },
    "workspace": {
      "id": null,
      "default": true
    },
    "user": {
      "id": "ada-123"
    },
    "role": "editor",
    "switches": {
      "overview": false,
      "workflows": true,
      "runs": true,
      "…": true
    },
    "ignored": []
  }
}
Every field

It takes no body.

Response · 201 Created

dataobject
tokenstring

gri_… — send as Authorization: Bearer; keep in memory only.

expiresAttime
renewAftertime
renewableUntiltime

When renewing in the frame stops for this line of sessions (12 hours after the login code, the EMBED_SESSION_MAX_HOURS setting). Absent for a platform preview.

renewInSecondsinteger

renewAfter as whole seconds from this answer, by the server’s clock: schedule the renewal from it, so a device whose clock is off still renews on time.

accountobject
idstring
statusstring
workspaceobject
idstring or null

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

defaultboolean
userobject
idstring
rolestring

One of viewer, operator, editor.

switchesobject

Every switch id with its effective value; a missing id is off.

{key}boolean

Each key’s value.

ignoredarray of strings
meobject

What GET /api/auth/me answers this session.