Skip to main content

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

POSThttps://api.tapeapp.com/v1/automation/app/{app_id}

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

ParameterTypeRequiredDescription
namestringyes1–5000 characters.
descriptionstringnoUp to 25000 characters.
triggerobjectnoA trigger { type, config }.
filterobjectnoA filter group.
actionsarraynoAn ordered list of actions.
➡️ Request
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": {} }
}'

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

GEThttps://api.tapeapp.com/v1/automation/{automation_id}
➡️ Request
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

GEThttps://api.tapeapp.com/v1/automation/app/{app_id}
GEThttps://api.tapeapp.com/v1/automation/workspace/{workspace_id}
GEThttps://api.tapeapp.com/v1/automation/org

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

ParameterTypeDescription
cursorstringCursor from the previous page. null on the last page.
limitintegerPage size, 1100. Defaults to 50.
➡️ Request
curl "https://api.tapeapp.com/v1/automation/app/87?limit=2" -u user_key_replace_with_your_api_key:
⬅️ Response
{
"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

PUThttps://api.tapeapp.com/v1/automation/{automation_id}

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)

ParameterTypeDescription
namestringNew name (1–5000).
descriptionstring | nullSet, or null to clear.
triggerobject | nullReplace, or null to remove.
filterobject | nullReplace, or null to clear.
actionsarrayReplace the whole list.
➡️ Request
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

Create and update don't re-validate the definition, so broken reflects the last activation. Call validate for a fresh verdict, or activate it.

Replace the trigger

PUThttps://api.tapeapp.com/v1/automation/{automation_id}/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.

➡️ Request
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

POSThttps://api.tapeapp.com/v1/automation/{automation_id}/activate

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.)

➡️ Request
curl -X POST https://api.tapeapp.com/v1/automation/4021/activate -u user_key_replace_with_your_api_key:

Pause an automation

POSThttps://api.tapeapp.com/v1/automation/{automation_id}/pause

Pauses the automation. Idempotent, and never blocked by a broken definition. No request body.

➡️ Request
curl -X POST https://api.tapeapp.com/v1/automation/4021/pause -u user_key_replace_with_your_api_key:

Delete an automation

DELETEhttps://api.tapeapp.com/v1/automation/{automation_id}

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.

➡️ Request
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.