Enable a workflow
This page needs your own installation with an Embed license.
POST/
Publishes a workflow’s draft, so its trigger goes live.
Needs a partner key: Authorization: Bearer gre_…, from Platform › Partner keys. Call it from your server only.
Parameters
Path
accountIdRequired · stringYour ID for the customer’s account: 1 to 255 bytes of UTF-8, case-sensitive. URL-encode it: it may contain
/.workflowIdRequired · UUIDThe workflow’s ID, as the install or the list answered it.
Headers
Idempotency-KeyOptional · stringUp to 255 characters. The same request with the same key within 24 hours answers the first result again, with
Idempotency-Replayed: true.
Responses
- 200OK
The workflow, live. A live workflow whose draft hasn’t changed stays as it is.
The account ID isn’t allowed as written.
details.fieldnames it.- 404
NOT_FOUNDNo such account, or no such workflow in it.
The account is deleted. Restore it first, within 30 days.
- 409
CONFLICTAnother change to this workflow is being saved. Try again in a moment.
It can’t go live: the message names the first problem, such as a step without its connection. Nothing changed.
A step uses an app this account may not use. Nothing changed.
Something failed on the installation’s side. Try again.
The apps the account may use couldn’t be read. Nothing was written. Try again.
Any call can also answer: 401 UNAUTHORIZED · 403 EMBED_NOT_LICENSED · 403 IP_NOT_ALLOWED · 413 PAYLOAD_TOO_LARGE · 415 INVALID_CONTENT_TYPE · 429 RATE_LIMITED · 503 BUSY. See Errors.
Request
GORUNNER="https://automations.example.com"
GORUNNER_EMBED_KEY="YOUR_PARTNER_KEY" # gre_…
ACCOUNT_ID="acct-bakery"
WORKFLOW_ID="your-workflow-id"
URL="$GORUNNER/api/embed/v1/accounts/$ACCOUNT_ID/"
URL="${URL}workflows/$WORKFLOW_ID/enable"
curl -X POST "$URL" \
-H "Authorization: Bearer $GORUNNER_EMBED_KEY" \
-H "Idempotency-Key: $(uuidgen)"const GORUNNER = "https://automations.example.com";
const KEY = process.env.GORUNNER_EMBED_KEY; // gre_…
const ACCOUNT_ID = encodeURIComponent("acct-bakery");
const WORKFLOW_ID = encodeURIComponent("your-workflow-id");
const res = await fetch(
`${GORUNNER}/api/embed/v1/accounts/` +
`${ACCOUNT_ID}/workflows/${WORKFLOW_ID}/` +
`enable`,
{
method: "POST",
headers: {
Authorization: `Bearer ${KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
},
);
const { data } = await res.json();import os, uuid, requests
from urllib.parse import quote
GORUNNER = "https://automations.example.com"
KEY = os.environ["GORUNNER_EMBED_KEY"] # gre_…
ACCOUNT_ID = quote("acct-bakery", safe="")
WORKFLOW_ID = quote("your-workflow-id", safe="")
res = requests.post(
f"{GORUNNER}/api/embed/v1/accounts/"
f"{ACCOUNT_ID}/workflows/{WORKFLOW_ID}/enable",
headers={
"Authorization": f"Bearer {KEY}",
"Idempotency-Key": str(uuid.uuid4()),
},
)
data = res.json()["data"]Response · 200 OK
{
"data": {
"id": "3b1e5c2a-7d4f-4e8b-a1c6-5f2d9b0e7a31",
"name": "New orders to Sheets",
"description": "Adds each new order as a row.",
"status": "live",
"triggerType": "webhook",
"workspace": {
"id": null,
"default": true
},
"templateId": "9c4e2a17-3d5b-4f86-b0e2-8a1c7d3f5e29",
"createdAt": "2026-10-20T08:00:00Z",
"updatedAt": "2026-10-25T09:00:00Z"
}
}Every field
It takes no body.
Response · 200 OK
dataobjectidUUIDnamestringdescriptionstringstatusstringdraft: never published;live: its trigger is on;paused: published, trigger off.One of
draft,live,paused.triggerTypestringworkspaceobjectidstring or nullThe partner’s workspace id; null for the default workspace.
defaultbooleantemplateIdUUID or nullThe template it was installed from.
webhookUrlURLWhere this workflow takes deliveries (
POST /api/webhooks/{token}): on a webhook-triggered workflow, once its first publish or save has made the address, and only in the two reads,GET .../workflowsandGET .../workflows/{workflowId}(Cache-Control: no-store), never in a write’s answer, which anIdempotency-Keycan keep for a day. It takes deliveries while the workflow isliveand answers 404 otherwise. It starts production runs with no other credential: hold it as you hold this key. It stays the same across enable and disable, and changes only when a token rotates it (POST /api/workflows/{id}/webhook/rotate). Absent otherwise.createdAttimeupdatedAttime