Manage automations
Internal beta — not released yet
The Automation API is an internal beta and is not released yet. Its endpoints and payloads are not final and may change or be withdrawn at any time without notice.
Create, retrieve, list, update, replace the trigger, activate, pause and delete automations.
Requires a user API key
Every endpoint here requires a user API key, and you must administrate the workspace the automation's app
belongs to. Unavailable automations answer a uniform 404 — see
Authentication and permissions. The returned
shape is the automation object, always wrapped as { automation }.
Create an automation
Creates an automation in the app. It lands paused and not broken — a valid draft you finish, then
activate. Node IDs inside filter / actions are optional (server-minted when omitted).
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | 1–5000 characters. |
description | string | no | Up to 25000 characters. |
trigger | object | no | A trigger { type, config }. |
filter | object | no | A filter group. |
actions | array | no | An ordered list of actions. |
- cURL
- JSON
curl -X POST https://api.tapeapp.com/v1/automation/app/87 \
-u user_key_replace_with_your_api_key: \
-H "Content-Type: application/json" \
--data '{
"name": "Email the owner on a new high-priority lead",
"trigger": { "type": "record_created", "config": {} }
}'
{
"name": "Email the owner on a new high-priority lead",
"trigger": { "type": "record_created", "config": {} }
}
Returns 201 with the created automation. null is not accepted for
description or trigger here (unlike update). The create and update bodies are validated
against a closed schema — any top-level property not in the table above is rejected with a 400 (as is an unknown
key inside a trigger's config).
Limit — 500 automations per app
An app can hold at most 500 automations. Once an app has reached this limit, further create requests are rejected with an error until you delete an existing automation.
Retrieve an automation
curl https://api.tapeapp.com/v1/automation/4021 -u user_key_replace_with_your_api_key:
Returns { automation } with its trigger, filter and actions inlined.
List automations
List automations in an app, a workspace, or across every workspace you administrate in your organization. The org
variant derives the organization from your key — it has no path scope, and returns an empty page (not a 404) if
you administrate nothing.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
cursor | string | Cursor from the previous page. null on the last page. |
limit | integer | Page size, 1–100. Defaults to 50. |
curl "https://api.tapeapp.com/v1/automation/app/87?limit=2" -u user_key_replace_with_your_api_key:
{
"total": 12,
"automations": [ { "id": 4021, "name": "Email the owner on a new high-priority lead", "paused": false, "broken": false } ],
"cursor": "eyJhbGciOiJI..."
}
Each entry is a full automation object. Results are ordered
oldest-first (by ID). total is a snapshot taken on the first page. See Pagination. The
cursor is scope-pinned — it is bound to the exact list scope that issued it (this app, this workspace, or your
org). Replaying a cursor against a different scope is rejected with a 400, not answered with an empty page; pass each
cursor back only to the same list call that produced it.
Update an automation
A partial update: an omitted field is left unchanged; an explicit null clears description, trigger or
filter. name is never nullable. actions, when present, replaces the whole list (send [] to empty it).
Every update mints a new revision.
Body Parameters (all optional)
| Parameter | Type | Description |
|---|---|---|
name | string | New name (1–5000). |
description | string | null | Set, or null to clear. |
trigger | object | null | Replace, or null to remove. |
filter | object | null | Replace, or null to clear. |
actions | array | Replace the whole list. |
curl -X PUT https://api.tapeapp.com/v1/automation/4021 \
-u user_key_replace_with_your_api_key: \
-H "Content-Type: application/json" \
--data '{ "description": "Notifies the owner of new leads." }'
broken is not re-checked on write
Replace the trigger
The whole body is the trigger { type, config }. It replaces any existing trigger and mints a revision. To
remove a trigger, use update with trigger: null instead.
curl -X PUT https://api.tapeapp.com/v1/automation/4021/trigger \
-u user_key_replace_with_your_api_key: \
-H "Content-Type: application/json" \
--data '{ "type": "record_updated", "config": {} }'
Activate an automation
Takes the automation live. Validity is recomputed server-side — a broken definition is refused with 409
(point users at validate for the reasons). No request body. Idempotent
for a valid automation: re-activating an already-live one succeeds as a no-op. (Unlike pause, activate re-runs the
broken-gate every call, so this holds only while the definition stays valid.)
curl -X POST https://api.tapeapp.com/v1/automation/4021/activate -u user_key_replace_with_your_api_key:
Pause an automation
Pauses the automation. Idempotent, and never blocked by a broken definition. No request body.
curl -X POST https://api.tapeapp.com/v1/automation/4021/pause -u user_key_replace_with_your_api_key:
Delete an automation
Soft-deletes the automation (same as in the product): it drops out of every listing and is no longer retrievable,
but the data persists. Returns 200 with the final soft-deleted automation
as confirmation — not 204.
curl -X DELETE https://api.tapeapp.com/v1/automation/4021 -u user_key_replace_with_your_api_key:
Rate limit credits
The three list endpoints cost 2x base credits; every other endpoint on this page costs 1x. See
Request limits.