Menu QaldyDocs

Automations

Roads between apps: schedules, webhooks, forms and heartbeats, pausing them and running them now. 14 routes, from the API’s own OpenAPI document.

14 routes. Every path starts at https://cloud-api.qaldy.com. Sign-in, tokens, errors and limits are on the overview.

Routes

MethodPathWhat it does
GET/​v1/​automations/​{id}One automation with its recent runs
PATCH/​v1/​automations/​{id}Rename an automation, change its trigger or schedule, or redraw its stops
DELETE/​v1/​automations/​{id}Delete an automation: its road leaves the City, its past runs stay
GET/​v1/​automations/​{id}/​heartbeatThe heartbeat: what is expected, how it is doing, runs per day and who is told
PUT/​v1/​automations/​{id}/​heartbeatSet how often it must run (at least N per hour or day) and who hears when it is quiet
POST/​v1/​automations/​{id}/​pausePause an automation: its road stays, nothing drives it
POST/​v1/​automations/​{id}/​resumeResume a paused automation: it comes back as healthy or failing as its gates, app and last run say
POST/​v1/​automations/​{id}/​runsRun an automation now: a car drives its road
GET/​v1/​automations/​{id}/​webhookThe webhook: its address, switches, secret hint and the last ten deliveries
POST/​v1/​automations/​{id}/​webhookSet the webhook up: creates its secret (or token), shown once
PATCH/​v1/​automations/​{id}/​webhookSwitch the webhook on or off, change its proof mode or its rate limit
POST/​v1/​automations/​{id}/​webhook/​rotateRotate the secret: a new one, shown once; the old one stops working at once
POST/​v1/​automations/​{id}/​webhook/​testSend a signed sample event through the real webhook path (a run starts)
GET/​v1/​workspaces/​{ws}/​automationsEvery automation (road) in a workspace you can see, with this week’s numbers

Reference

GET /v1/automations/{id}

One automation with its recent runs.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: can_view on every app it stops at, else 404
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
idstringyesat least 1 characters
namestringyesat least 1 characters
fromobjectyes
from.kind"gate" · "building"yes
from.idstringyesat least 1 characters
viaobject[]yesup to 6 items
via[].kind"gate" · "building"yes
via[].idstringyesat least 1 characters
toobjectyes
to.kind"gate" · "building"yes
to.idstringyesat least 1 characters
category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
status"active" · "paused" · "failing"yes
triggerobjectyes
appIdstring or nullyes
webhookUrlstring or nullyes
webhookLiveboolean
nextRunAtstring (date-time) or nullyes
statsobjectyes
stats.runsWeekintegeryesat least 0
stats.failedWeekintegeryesat least 0
stats.minutesSavedWeeknumberyesat least 0
stats.lastRunAtstring (date-time) or nullyes
stats.lastRunStatus"queued" · "running" · "waiting_approval" · "succeeded" · "failed" · "blocked" · null or nullyes
heartbeatobject or null
heartbeat.state"healthy" · "quiet" · "alerting" · "off"yes
heartbeat.expectobjectyes
heartbeat.quietSincestring (date-time) or nullyes
canEditbooleanyes
createdAtstring (date-time)yes

…and 2 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

PATCH /v1/automations/{id}

Rename an automation, change its trigger or schedule, or redraw its stops.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: can_edit on the driving app (+ every app when redrawn)
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
namestring1 to 60 characters
triggerobject
viaobject[]up to 6 items
via[].kind"gate" · "building"yes
via[].idstringyesat least 1 characters

Response 200

FieldTypeRequiredNotes
idstringyesat least 1 characters
namestringyesat least 1 characters
fromobjectyes
from.kind"gate" · "building"yes
from.idstringyesat least 1 characters
viaobject[]yesup to 6 items
via[].kind"gate" · "building"yes
via[].idstringyesat least 1 characters
toobjectyes
to.kind"gate" · "building"yes
to.idstringyesat least 1 characters
category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
status"active" · "paused" · "failing"yes
triggerobjectyes
appIdstring or nullyes
webhookUrlstring or nullyes
webhookLiveboolean
nextRunAtstring (date-time) or nullyes
statsobjectyes
stats.runsWeekintegeryesat least 0
stats.failedWeekintegeryesat least 0
stats.minutesSavedWeeknumberyesat least 0
stats.lastRunAtstring (date-time) or nullyes
stats.lastRunStatus"queued" · "running" · "waiting_approval" · "succeeded" · "failed" · "blocked" · null or nullyes
heartbeatobject or null
heartbeat.state"healthy" · "quiet" · "alerting" · "off"yes
heartbeat.expectobjectyes
heartbeat.quietSincestring (date-time) or nullyes
canEditbooleanyes
createdAtstring (date-time)yes

…and 1 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

DELETE /v1/automations/{id}

Delete an automation: its road leaves the City, its past runs stay.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: can_edit on the driving app
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
oktrueyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/automations/{id}/heartbeat

The heartbeat: what is expected, how it is doing, runs per day and who is told.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
settingsobject or nullyes
settings.enabledbooleanyes
settings.expectobjectyes
settings.notifyobject[]yesup to 4 items
statusobject or nullyes
status.state"healthy" · "quiet" · "alerting" · "off"yes
status.expectobjectyes
status.quietSincestring (date-time) or nullyes
seriesinteger[]yes
expectedPerDaynumber or nullyesat least 0
windowCountintegeryesat least 0
alertedAtstring (date-time) or nullyes
channelsobjectyes
channels.telegramobject[]yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

PUT /v1/automations/{id}/heartbeat

Set how often it must run (at least N per hour or day) and who hears when it is quiet.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
enabledbooleanyes
expectobjectyes
expect.atLeastintegeryes1 to 10000
expect.per"hour" · "day"yes
notifyobject[]yesup to 4 items

Response 200

FieldTypeRequiredNotes
settingsobject or nullyes
settings.enabledbooleanyes
settings.expectobjectyes
settings.notifyobject[]yesup to 4 items
statusobject or nullyes
status.state"healthy" · "quiet" · "alerting" · "off"yes
status.expectobjectyes
status.quietSincestring (date-time) or nullyes
seriesinteger[]yes
expectedPerDaynumber or nullyesat least 0
windowCountintegeryesat least 0
alertedAtstring (date-time) or nullyes
channelsobjectyes
channels.telegramobject[]yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/automations/{id}/pause

Pause an automation: its road stays, nothing drives it.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: can_edit on the driving app
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
idstringyesat least 1 characters
namestringyesat least 1 characters
fromobjectyes
from.kind"gate" · "building"yes
from.idstringyesat least 1 characters
viaobject[]yesup to 6 items
via[].kind"gate" · "building"yes
via[].idstringyesat least 1 characters
toobjectyes
to.kind"gate" · "building"yes
to.idstringyesat least 1 characters
category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
status"active" · "paused" · "failing"yes
triggerobjectyes
appIdstring or nullyes
webhookUrlstring or nullyes
webhookLiveboolean
nextRunAtstring (date-time) or nullyes
statsobjectyes
stats.runsWeekintegeryesat least 0
stats.failedWeekintegeryesat least 0
stats.minutesSavedWeeknumberyesat least 0
stats.lastRunAtstring (date-time) or nullyes
stats.lastRunStatus"queued" · "running" · "waiting_approval" · "succeeded" · "failed" · "blocked" · null or nullyes
heartbeatobject or null
heartbeat.state"healthy" · "quiet" · "alerting" · "off"yes
heartbeat.expectobjectyes
heartbeat.quietSincestring (date-time) or nullyes
canEditbooleanyes
createdAtstring (date-time)yes

…and 1 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/automations/{id}/resume

Resume a paused automation: it comes back as healthy or failing as its gates, app and last run say.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: can_edit on the driving app
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
idstringyesat least 1 characters
namestringyesat least 1 characters
fromobjectyes
from.kind"gate" · "building"yes
from.idstringyesat least 1 characters
viaobject[]yesup to 6 items
via[].kind"gate" · "building"yes
via[].idstringyesat least 1 characters
toobjectyes
to.kind"gate" · "building"yes
to.idstringyesat least 1 characters
category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
status"active" · "paused" · "failing"yes
triggerobjectyes
appIdstring or nullyes
webhookUrlstring or nullyes
webhookLiveboolean
nextRunAtstring (date-time) or nullyes
statsobjectyes
stats.runsWeekintegeryesat least 0
stats.failedWeekintegeryesat least 0
stats.minutesSavedWeeknumberyesat least 0
stats.lastRunAtstring (date-time) or nullyes
stats.lastRunStatus"queued" · "running" · "waiting_approval" · "succeeded" · "failed" · "blocked" · null or nullyes
heartbeatobject or null
heartbeat.state"healthy" · "quiet" · "alerting" · "off"yes
heartbeat.expectobjectyes
heartbeat.quietSincestring (date-time) or nullyes
canEditbooleanyes
createdAtstring (date-time)yes

…and 1 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/automations/{id}/runs

Run an automation now: a car drives its road.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the write scope.
  • Who: can_run on the driving app
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
runIdstringyesat least 1 characters
heldboolean

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/automations/{id}/webhook

The webhook: its address, switches, secret hint and the last ten deliveries.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
webhookobjectyes
webhook.configuredbooleanyes
webhook.urlstring or nullyes
webhook.enabledbooleanyes
webhook.mode"signed" · "github" · "token" · "telegram" · "form" · "unsigned"yes
webhook.secretHintstring or nullyes
webhook.ratePerMinintegeryes1 to 600
webhook.createdAtstring (date-time) or nullyes
webhook.rotatedAtstring (date-time) or nullyes
webhook.formobject or nulldefault null
deliveriesobject[]yesup to 50 items
deliveries[].idstringyesat least 1 characters
deliveries[].atstring (date-time)yes
deliveries[].outcome"accepted" · "duplicate" · "rejected"yes
deliveries[].statusintegeryes100 to 599
deliveries[].reasonstring or nullyes
deliveries[].runIdstring or nullyes
deliveries[].bytesintegeryesat least 0
deliveries[].samplebooleanyes
deliveries[].deadLetterIdstring or nulldefault null

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/automations/{id}/webhook

Set the webhook up: creates its secret (or token), shown once.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
mode"signed" · "github" · "token" · "telegram" · "form" · "unsigned"

Response 200

FieldTypeRequiredNotes
webhookobjectyes
webhook.configuredbooleanyes
webhook.urlstring or nullyes
webhook.enabledbooleanyes
webhook.mode"signed" · "github" · "token" · "telegram" · "form" · "unsigned"yes
webhook.secretHintstring or nullyes
webhook.ratePerMinintegeryes1 to 600
webhook.createdAtstring (date-time) or nullyes
webhook.rotatedAtstring (date-time) or nullyes
webhook.formobject or nulldefault null
secretstring or nullyesat least 1 characters

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

PATCH /v1/automations/{id}/webhook

Switch the webhook on or off, change its proof mode or its rate limit.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
enabledboolean
mode"signed" · "github" · "token" · "telegram" · "form" · "unsigned"
ratePerMininteger1 to 600
acknowledgeUnsignedboolean
formobject
form.honeypotstringyes
form.redirectstring or nullyesup to 500 characters
form.originsstring[]yesup to 5 items

Response 200

FieldTypeRequiredNotes
webhookobjectyes
webhook.configuredbooleanyes
webhook.urlstring or nullyes
webhook.enabledbooleanyes
webhook.mode"signed" · "github" · "token" · "telegram" · "form" · "unsigned"yes
webhook.secretHintstring or nullyes
webhook.ratePerMinintegeryes1 to 600
webhook.createdAtstring (date-time) or nullyes
webhook.rotatedAtstring (date-time) or nullyes
webhook.formobject or nulldefault null
secretstring or nullyesat least 1 characters

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/automations/{id}/webhook/rotate

Rotate the secret: a new one, shown once; the old one stops working at once.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
webhookobjectyes
webhook.configuredbooleanyes
webhook.urlstring or nullyes
webhook.enabledbooleanyes
webhook.mode"signed" · "github" · "token" · "telegram" · "form" · "unsigned"yes
webhook.secretHintstring or nullyes
webhook.ratePerMinintegeryes1 to 600
webhook.createdAtstring (date-time) or nullyes
webhook.rotatedAtstring (date-time) or nullyes
webhook.formobject or nulldefault null
secretstring or nullyesat least 1 characters

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/automations/{id}/webhook/test

Send a signed sample event through the real webhook path (a run starts).

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
deliveryobjectyes
delivery.idstringyesat least 1 characters
delivery.atstring (date-time)yes
delivery.outcome"accepted" · "duplicate" · "rejected"yes
delivery.statusintegeryes100 to 599
delivery.reasonstring or nullyes
delivery.runIdstring or nullyes
delivery.bytesintegeryesat least 0
delivery.samplebooleanyes
delivery.deadLetterIdstring or nulldefault null
runIdstring or nullyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/workspaces/{ws}/automations

Every automation (road) in a workspace you can see, with this week’s numbers.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: member (only roads whose apps you can view)
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
itemsobject[]yes
items[].idstringyesat least 1 characters
items[].namestringyesat least 1 characters
items[].fromobjectyes
items[].viaobject[]yesup to 6 items
items[].toobjectyes
items[].category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
items[].status"active" · "paused" · "failing"yes
items[].triggerobjectyes
items[].appIdstring or nullyes
items[].webhookUrlstring or nullyes
items[].webhookLiveboolean
items[].nextRunAtstring (date-time) or nullyes
items[].statsobjectyes
items[].heartbeatobject or null
items[].canEditbooleanyes
items[].createdAtstring (date-time)yes
items[].updatedAtstring (date-time)yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

Type to search. Up and down to choose, Enter to open, Esc to close.