Skip to content

Workflows

Update workflow trigger

Enable or disable one trigger of the live deployment without redeploying. Requires workspace write access. Enabling resets `failedCount`, schedules the next run, and clears any polling backoff; a schedule whose cron expression is invalid or has no future runs returns `400`. A permission group that blocks webhook triggers returns `403` when a member it governs enables a polling, internal-event, or webhook trigger; a workspace API key is not governed by permission groups, as with every other capability. Disabling a completed schedule marks it disabled. A block with several live rows switches them together. Requesting the current state changes nothing. Disabling only stops Sim from accepting the trigger; nothing is removed at the provider. A disable lasts until the next deploy or version activation, which re-enables every trigger, the same way it clears a trigger that disabled itself after repeated failures. Deliveries to a disabled webhook receive `404`, and some providers disable their subscription after repeated failures, which requires a redeploy to restore. OAuth scope: `api:write`.

PATCH/api/v2/workflows/{workflowId}/triggers/{blockId}

Enable or disable one trigger of the live deployment without redeploying. Requires workspace write access. Enabling resets failedCount, schedules the next run, and clears any polling backoff; a schedule whose cron expression is invalid or has no future runs returns 400. A permission group that blocks webhook triggers returns 403 when a member it governs enables a polling, internal-event, or webhook trigger; a workspace API key is not governed by permission groups, as with every other capability. Disabling a completed schedule marks it disabled. A block with several live rows switches them together. Requesting the current state changes nothing.

Disabling only stops Sim from accepting the trigger; nothing is removed at the provider. A disable lasts until the next deploy or version activation, which re-enables every trigger, the same way it clears a trigger that disabled itself after repeated failures. Deliveries to a disabled webhook receive 404, and some providers disable their subscription after repeated failures, which requires a redeploy to restore.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

workflowIdstringRequired

Unique workflow identifier.

minLength
1
blockIdstringRequired

Trigger block in the deployed workflow.

minLength
1
maxLength
128

Request body

Required

Enable or disable one trigger of the live deployment.

object

Enable or disable one trigger of the live deployment.

1 field
enabledbooleanRequired

Whether the trigger should fire. A disable lasts until the next deploy or version activation, which re-enables every trigger.

Additional properties are not allowed.

Request example 1

json
{
  "enabled": true
}

Responses

200

The trigger after the update.

object

The trigger after the update.

1 field
dataobjectRequired

Response data.

12 fields
blockIdstringRequired

Trigger block in the deployed workflow.

kindstringRequired

How the trigger fires: schedule on a cron, polling when Sim polls the source, event on an event raised inside Sim, webhook when an external sender delivers to its URL.

enum
["schedule","polling","event","webhook"]
providervalueRequired

Trigger provider, e.g. gmail or github; null for schedules.

Schema details

Any of

Option 1string
Option 2null
enabledbooleanRequired

Whether the trigger currently fires.

statusstringRequired

disabled after a manual disable or an automatic one following repeated failures. completed applies only to schedules that have no runs left.

enum
["active","disabled","completed"]
failedCountintegerRequired

Consecutive failures since the last success; the trigger disables itself at 100. Always 0 for webhook and event triggers.

minimum
0
maximum
9007199254740991
lastFailedAtvalueRequired

ISO 8601 timestamp of the most recent counted failure, or null.

format
date-time
Schema details

Any of

Option 1string
Option 2null
nextRunAtvalueRequired

ISO 8601 timestamp of the next scheduled run; null when disabled and for non-schedules.

format
date-time
Schema details

Any of

Option 1string
Option 2null
lastRanAtvalueRequired

ISO 8601 timestamp of the last scheduled run; null for non-schedules.

format
date-time
Schema details

Any of

Option 1string
Option 2null
cronExpressionvalueRequired

Cron expression of a schedule; null for non-schedules.

Schema details

Any of

Option 1string
Option 2null
timezonevalueRequired

IANA timezone the cron expression runs in; null for non-schedules.

Schema details

Any of

Option 1string
Option 2null
urlvalueRequired

Delivery URL of a webhook trigger; null for other kinds and for providers on a shared endpoint.

Schema details

Any of

Option 1string
format
uri
Option 2null

Additional properties are not allowed.

Additional properties are not allowed.

Response example 1

json
{
  "data": {
    "blockId": "blk_01J8ZK3QW4M6X2R9T7B5C0V4",
    "kind": "schedule",
    "provider": null,
    "enabled": true,
    "status": "active",
    "failedCount": 0,
    "lastFailedAt": "2026-08-09T18:04:11.000Z",
    "nextRunAt": "2026-08-10T09:00:00.000Z",
    "lastRanAt": "2026-08-09T18:04:00.000Z",
    "cronExpression": "0 * * * *",
    "timezone": "UTC",
    "url": null
  }
}

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit