openapi: 3.0.0
info:
contact: {}
description: API for managing automation workflows.
title: Automations API
version: 2026-preview
x-api-evangelist:
harvested: '2026-08-13'
method: searched
source: https://dash.readme.com/api/v1/api-registry/9c1ckrq1msfxryzj
source-note: Published by Omnisend on its own docs host api-docs.omnisend.com (ReadMe project @omnisend,
branch v2026-03-15); registry document referenced by the reference page as oasPublicUrl.
paths:
/automations:
get:
description: 'List automation workflows with filtering, sorting, and cursor-based pagination.
**Scopes:**
`automations.read`
**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.
**Pagination:**
This endpoint uses cursor-based pagination.
- Use the `paging.cursors.after` value from the response to get the next page
- Use the `paging.cursors.before` value to get the previous page
- The `paging.hasMore` field indicates if more results are available
- Maximum page size is 250 items. Default: 100'
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: 'Number of items per page. Range: 1-250. Default: 100'
in: query
name: limit
schema:
type: integer
minimum: 1
maximum: 250
- description: Opaque cursor for the next page
in: query
name: after
schema:
type: string
- description: Opaque cursor for the previous page
in: query
name: before
schema:
type: string
- description: 'Sort field. Default: createdAt'
in: query
name: sort
schema:
type: string
enum:
- createdAt
- updatedAt
- description: 'Sort direction. Default: desc'
in: query
name: direction
schema:
type: string
enum:
- asc
- desc
- description: If true, only enabled automations; if false, only disabled. Omit for no filter.
in: query
name: isEnabled
schema:
type: boolean
- description: Filter by name (partial match, max 200 characters)
in: query
name: nameContains
schema:
type: string
maxLength: 200
- description: Filter automations created after this timestamp (ISO 8601, e.g. 2026-01-01T00:00:00Z)
in: query
name: createdAtFrom
schema:
type: string
format: date-time
- description: Filter automations created before this timestamp (ISO 8601, e.g. 2026-01-01T00:00:00Z)
in: query
name: createdAtTo
schema:
type: string
format: date-time
- description: Filter automations updated after this timestamp (ISO 8601, e.g. 2026-01-01T00:00:00Z)
in: query
name: updatedAtFrom
schema:
type: string
format: date-time
- description: Filter automations updated before this timestamp (ISO 8601, e.g. 2026-01-01T00:00:00Z)
in: query
name: updatedAtTo
schema:
type: string
format: date-time
responses:
'200':
description: List of automations with pagination
content:
application/json:
schema:
$ref: '#/components/schemas/ListAutomationsResponse'
'400':
description: Request contains invalid or missing fields
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.read
- ApiKeyAuth: []
summary: List automation workflows
tags:
- Automations
post:
description: "Create a new automation workflow.\n\n**Scopes:**\n`automations.write`\n\n**Rate Limiting:**\n\
This endpoint is rate limited to 400 requests per minute.\n\n## Trigger condition examples\n\n\
The `trigger.condition` field defines the event that enrolls contacts into the automation. Most\
\ trigger events use standard Events API event names and may require `origin`. Built-in trigger\
\ events, such as `\"birthday\"`, do not use `origin`.\n\nFor the `\"birthday\"` trigger, omit\
\ `trigger.condition.filterGroups` to enroll contacts on the day of their birthday. To shift the\
\ trigger time, add one filter group with exactly one filter:\n\n| Field | Operator | Value shape\
\ |\n|---|---|---|\n| `birthdate` | `eq` | Hour offset string from the birthday, e.g. `\"-24h\"\
`, `\"48h\"` |\n\n<details id=\"example-trigger-birthday-exact-day\">\n<summary>Birthday trigger\
\ on the contact birthday</summary>\n\n```json\n{\n \"condition\": {\n \"event\": \"birthday\"\
\n }\n}\n```\n\n</details>\n\n<details id=\"example-trigger-birthday-before-birthday\">\n<summary>Birthday\
\ trigger before the contact birthday</summary>\n\n```json\n{\n \"condition\": {\n \"event\"\
: \"birthday\",\n \"filterGroups\": [\n {\n \"logicalOperator\": \"and\",\n \
\ \"filters\": [\n {\"field\": \"birthdate\", \"operator\": \"eq\", \"value\": \"\
-24h\"}\n ]\n }\n ]\n }\n}\n```\n\n</details>\n\n<details id=\"example-trigger-birthday-after-birthday\"\
>\n<summary>Birthday trigger after the contact birthday</summary>\n\n```json\n{\n \"condition\"\
: {\n \"event\": \"birthday\",\n \"filterGroups\": [\n {\n \"logicalOperator\"\
: \"and\",\n \"filters\": [\n {\"field\": \"birthdate\", \"operator\": \"eq\"\
, \"value\": \"48h\"}\n ]\n }\n ]\n }\n}\n```\n\n</details>\n\nTo trigger an automation\
\ when a contact enters a specific segment, use the `entered segment` event with `origin: \"omnisend\"\
` and filter the trigger condition by `segment_id`. This is different from `audienceFilterGroup`,\
\ which only restricts who can enter after the trigger fires.\n\n<details id=\"example-trigger-entered-segment\"\
>\n<summary>Trigger when a contact enters a specific segment</summary>\n\n```json\n{\n \"condition\"\
: {\n \"event\": \"entered segment\",\n \"origin\": \"omnisend\",\n \"filterGroups\"\
: [\n {\n \"logicalOperator\": \"and\",\n \"filters\": [\n {\"field\"\
: \"segment_id\", \"operator\": \"eq\", \"value\": \"000000000000000000000001\"}\n ]\n\
\ }\n ]\n }\n}\n```\n\n</details>\n\n## Audience filter group examples\n\nThe `trigger.audienceFilterGroup`\
\ field is optional. When set, only contacts matching the filters are enrolled when the trigger\
\ fires — omit it to enroll everyone who triggers the event.\n\n### Supported fields\n\n| Field\
\ | Operators | Value shape |\n|---|---|---|\n| `segmentID` | `eq`, `neq` | Segment ID string,\
\ e.g. `\"000000000000000000000001\"` |\n| `tag` | `eq`, `neq` | Tag name, e.g. `\"vip\"\
` |\n| `dateAdded` | `eq`, `neq`, `gt`, `lt` | ISO-8601 date, e.g. `\"2025-03-15\"` |\n| `firstName`\
\ | `eq`, `neq`, `contains`, `notContains` | Free string, e.g. `\"John\"` |\n| `lastName` |\
\ `eq`, `neq`, `contains`, `notContains` | Free string, e.g. `\"Smith\"` |\n| `gender` | `eq`\
\ | `\"m\"` or `\"f\"` |\n| `country` | `eq`, `neq`, `contains`, `notContains` | ISO-2 country\
\ code, e.g. `\"US\"` |\n| `state` | `eq`, `neq`, `contains`, `notContains` | State / region\
\ name, e.g. `\"California\"` |\n| `city` | `eq`, `neq`, `contains`, `notContains` | City\
\ name, e.g. `\"New York\"` |\n| `postalCode` | `eq`, `neq`, `contains`, `notContains` | Postal\
\ code string, e.g. `\"10001\"` |\n\n### Where it fits\n\n`audienceFilterGroup` is a sibling of\
\ `condition` inside `trigger`:\n\n```json\n{\n \"name\": \"...\",\n \"trigger\": {\n \"\
condition\": {\n \"event\": \"...\",\n \"origin\": \"...\"\n },\n \"audienceFilterGroup\"\
: { ... }\n },\n \"blocks\": [ ... ]\n}\n```\n\nEach example below shows only the `audienceFilterGroup`\
\ value — slot it into the skeleton above.\n\n<details id=\"example-audience-filter-by-segment\"\
>\n<summary>Restrict to a single segment</summary>\n\n```json\n{\n \"logicalOperator\": \"and\"\
,\n \"filters\": [\n {\"field\": \"segmentID\", \"operator\": \"eq\", \"value\": \"000000000000000000000001\"\
}\n ]\n}\n```\n\n</details>\n\n<details id=\"example-audience-filter-by-tag-include-exclude\"\
>\n<summary>Include one tag, exclude another</summary>\n\n```json\n{\n \"logicalOperator\": \"\
and\",\n \"filters\": [\n {\"field\": \"tag\", \"operator\": \"eq\", \"value\": \"early-adopter\"\
},\n {\"field\": \"tag\", \"operator\": \"neq\", \"value\": \"beta-churned\"}\n ]\n}\n```\n\
\n</details>\n\n<details id=\"example-audience-filter-by-gender\">\n<summary>Gender (only `eq`,\
\ only `\"m\"` or `\"f\"`)</summary>\n\n```json\n{\n \"logicalOperator\": \"and\",\n \"filters\"\
: [\n {\"field\": \"gender\", \"operator\": \"eq\", \"value\": \"f\"}\n ]\n}\n```\n\n</details>\n\
\n<details id=\"example-audience-filter-by-location\">\n<summary>Country + city substring match</summary>\n\
\n```json\n{\n \"logicalOperator\": \"and\",\n \"filters\": [\n {\"field\": \"country\",\
\ \"operator\": \"eq\", \"value\": \"US\"},\n {\"field\": \"city\", \"operator\":\
\ \"contains\", \"value\": \"York\"}\n ]\n}\n```\n\n</details>\n\n<details id=\"example-audience-filter-by-date-added\"\
>\n<summary>Recent contacts only (date cohort)</summary>\n\n```json\n{\n \"logicalOperator\"\
: \"and\",\n \"filters\": [\n {\"field\": \"dateAdded\", \"operator\": \"gt\", \"value\":\
\ \"2025-01-01\"}\n ]\n}\n```\n\n</details>\n\n<details id=\"example-audience-filter-combined-or\"\
>\n<summary>OR across multiple tags</summary>\n\n```json\n{\n \"logicalOperator\": \"or\",\n\
\ \"filters\": [\n {\"field\": \"tag\", \"operator\": \"eq\", \"value\": \"vip\"},\n {\"\
field\": \"tag\", \"operator\": \"eq\", \"value\": \"beta\"}\n ]\n}\n```\n\n</details>\n\n<details\
\ id=\"example-audience-filter-combined-and\">\n<summary>AND across name, country, and tag</summary>\n\
\n```json\n{\n \"logicalOperator\": \"and\",\n \"filters\": [\n {\"field\": \"firstName\"\
, \"operator\": \"contains\", \"value\": \"John\"},\n {\"field\": \"country\", \"operator\"\
: \"eq\", \"value\": \"US\"},\n {\"field\": \"tag\", \"operator\": \"eq\", \
\ \"value\": \"vip\"}\n ]\n}\n```\n\n</details>\n"
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAutomationRequest'
description: Automation to create
required: true
responses:
'201':
description: Created automation workflow
content:
application/json:
schema:
$ref: '#/components/schemas/Automation'
'400':
description: Request contains invalid or missing fields
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.write
- ApiKeyAuth: []
summary: Create automation workflow
tags:
- Automations
/automations/{id}:
delete:
description: 'Delete a single automation workflow by ID.
This operation is idempotent — deleting a non-existent automation returns a success response.
**Scopes:**
`automations.write`
**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.'
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: Automation workflow ID (24 character hexadecimal)
in: path
name: id
required: true
schema:
type: string
responses:
'204':
description: Automation workflow deleted successfully
'400':
description: Request contains invalid or missing fields
content:
'*/*':
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
'*/*':
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.write
- ApiKeyAuth: []
summary: Delete automation workflow
tags:
- Automations
get:
description: 'Get a single automation workflow by ID.
**Scopes:**
`automations.read`
**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.'
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: Automation workflow ID (24 character hexadecimal)
in: path
name: id
required: true
schema:
type: string
responses:
'200':
description: Automation workflow
content:
application/json:
schema:
$ref: '#/components/schemas/Automation'
'400':
description: Request contains invalid or missing fields
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'404':
description: Automation workflow not found
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.read
- ApiKeyAuth: []
summary: Get automation workflow
tags:
- Automations
patch:
description: "Partially update an automation workflow. Only the fields provided in the request body\
\ are updated.\n\nEnabled automations cannot be patched. Disable the automation via\n`POST /automations/{id}/disable`,\
\ make changes, then re-enable via\n`POST /automations/{id}/enable` when ready. When disabling,\
\ `contactsInWorkflow`\ncontrols whether contacts already in the workflow continue through the\
\ remaining\nblocks (`keep`) or exit immediately (`exit`). Enable/disable state is controlled\n\
exclusively via the `/automations/{id}/enable` and `/automations/{id}/disable`\nendpoints.\n\n\
`trigger` sub-fields (condition, audienceFilterGroup, inactivitySettings) are patched\nindividually\
\ — each provided sub-field replaces the corresponding sub-field in full.\n`exitConditions` are\
\ **replaced in full** when provided. `blocks` are patched individually.\n\n**Scopes:**\n`automations.write`\n\
\n**Rate Limiting:**\nThis endpoint is rate limited to 400 requests per minute.\n\n## Audience\
\ filter group examples\n\nThe `trigger.audienceFilterGroup` field in PATCH requests replaces\
\ the existing audience filter group in full (or sets it for the first time). Omit it to leave\
\ the existing audience filter group unchanged.\n\n### Supported fields\n\n| Field | Operators\
\ | Value shape |\n|---|---|---|\n| `segmentID` | `eq`, `neq` | Segment ID string, e.g. `\"000000000000000000000001\"\
` |\n| `tag` | `eq`, `neq` | Tag name, e.g. `\"vip\"` |\n| `dateAdded` | `eq`, `neq`,\
\ `gt`, `lt` | ISO-8601 date, e.g. `\"2025-03-15\"` |\n| `firstName` | `eq`, `neq`, `contains`,\
\ `notContains` | Free string, e.g. `\"John\"` |\n| `lastName` | `eq`, `neq`, `contains`, `notContains`\
\ | Free string, e.g. `\"Smith\"` |\n| `gender` | `eq` | `\"m\"` or `\"f\"` |\n| `country`\
\ | `eq`, `neq`, `contains`, `notContains` | ISO-2 country code, e.g. `\"US\"` |\n| `state`\
\ | `eq`, `neq`, `contains`, `notContains` | State / region name, e.g. `\"California\"` |\n\
| `city` | `eq`, `neq`, `contains`, `notContains` | City name, e.g. `\"New York\"` |\n|\
\ `postalCode` | `eq`, `neq`, `contains`, `notContains` | Postal code string, e.g. `\"10001\"\
` |\n\n### Where it fits\n\n`audienceFilterGroup` sits inside `trigger` in the PATCH request body,\
\ alongside `condition` and `inactivitySettings`:\n\n```json\n{\n \"trigger\": {\n \"audienceFilterGroup\"\
: { ... }\n }\n}\n```\n\nEach example below shows only the `audienceFilterGroup` value — slot\
\ it into the skeleton above.\n\n<details id=\"example-patch-replace-audience-filter\">\n<summary>Replace\
\ audience filter without touching trigger event or blocks</summary>\n\n```json\n{\n \"logicalOperator\"\
: \"or\",\n \"filters\": [\n {\"field\": \"tag\", \"operator\": \"eq\", \"value\": \"vip\"\
},\n {\"field\": \"tag\", \"operator\": \"eq\", \"value\": \"beta\"}\n ]\n}\n```\n\n</details>\n\
\n<details id=\"example-patch-narrow-audience\">\n<summary>Narrow to US women</summary>\n\n```json\n\
{\n \"logicalOperator\": \"and\",\n \"filters\": [\n {\"field\": \"country\", \"operator\"\
: \"eq\", \"value\": \"US\"},\n {\"field\": \"gender\", \"operator\": \"eq\", \"value\": \"\
f\"}\n ]\n}\n```\n\n</details>\n\n<details id=\"example-patch-swap-segment-for-tag\">\n<summary>Swap\
\ a segment-based audience for a tag-based one</summary>\n\n```json\n{\n \"logicalOperator\"\
: \"and\",\n \"filters\": [\n {\"field\": \"tag\", \"operator\": \"eq\", \"value\": \"vip\"\
},\n {\"field\": \"tag\", \"operator\": \"neq\", \"value\": \"beta-churned\"}\n ]\n}\n```\n\
\n</details>\n"
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: Automation workflow ID (24 character hexadecimal)
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchAutomationRequest'
description: Fields to update
required: true
responses:
'200':
description: Updated automation workflow
content:
application/json:
schema:
$ref: '#/components/schemas/Automation'
'400':
description: Request contains invalid or missing fields
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'404':
description: Automation workflow not found
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'409':
description: Cannot update an enabled automation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.write
- ApiKeyAuth: []
summary: Patch automation workflow
tags:
- Automations
/automations/{id}/blocks:
put:
description: 'Replace the full block tree for an automation workflow.
Blocks identified by `id` are updated in place.
Blocks identified by `temporaryID` are created as new blocks.
Existing blocks not included in this array are removed.
Enabled automations cannot be restructured. Disable the automation via
`POST /automations/{id}/disable`, send the new block tree, then re-enable via
`POST /automations/{id}/enable` when ready. When disabling, `contactsInWorkflow`
controls whether contacts already in the workflow continue through the remaining
blocks (`keep`) or exit immediately (`exit`).
**Scopes:**
`automations.write`
**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.'
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: Automation workflow ID (24 character hexadecimal)
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PutBlocksRequest'
description: Full block tree replacement
required: true
responses:
'200':
description: Updated automation workflow
content:
application/json:
schema:
$ref: '#/components/schemas/Automation'
'400':
description: Request contains invalid or missing fields
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'404':
description: Automation workflow not found
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'409':
description: Cannot update an enabled automation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.write
- ApiKeyAuth: []
summary: Replace automation workflow blocks
tags:
- Automations
/automations/{id}/blocks/{blockID}/test-email:
post:
description: 'Send the saved email content of a specific email block as a test
email to up to 5 recipients. The email is rendered and delivered
asynchronously.
**Scopes:**
`automations.write`
**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.'
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: Automation workflow ID (24 character hexadecimal)
in: path
name: id
required: true
schema:
type: string
- description: Block identifier
in: path
name: blockID
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SendTestEmailRequest'
description: Test email recipients
required: true
responses:
'204':
description: Test email accepted for delivery
'400':
description: Request contains invalid or missing fields
content:
'*/*':
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'402':
description: Payment is required to send emails
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'404':
description: Automation or block not found
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'409':
description: Brand state or suppressed recipients prevent sending the test email
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'422':
description: Block does not support test emails or has no saved content
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
'429':
description: Rate limit exceeded
content:
'*/*':
schema:
$ref: '#/components/schemas/RateLimitProblem'
'500':
description: Unexpected error occurred
content:
'*/*':
schema:
$ref: '#/components/schemas/Problem'
security:
- Bearer:
- automations.write
- ApiKeyAuth: []
summary: Send test email
tags:
- Automations
/automations/{id}/blocks/{blockID}/utm:
get:
description: 'Retrieve UTM tracking tags for a specific send-action block.
Missing or cleared tags are returned with their default values.
**Scopes:**
`automations.read`
**Rate Limiting:**
This endpoint is rate limited to 400 requests per minute.'
parameters:
- $ref: '#/components/parameters/APIVersionHeader'
- description: Automation workflow ID (24 character hexadecimal)
in: path
name: id
required: true
schema:
type: string
- description: Block identifier
in: path
name: blockID
required: true
schema:
type: string
responses:
'200':
description: UTM tags for the block
content:
application/json:
schema:
$ref: '#/components/schemas/UTMResponse'
'400':
description: Request contains invalid or missing fields
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationProblem'
'401':
description: Authentication is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'403':
description: Insufficient permissions for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'404':
description: Automation or block not found
content:
application/json:
schema:
$ref: '#/components/schemas/Problem'
'410':
description: API version has been retired
content:
application/json:
schema:
$ref: '#/components/sc
# --- truncated at 32 KB (163 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/omnisend/refs/heads/main/openapi/omnisend-automations-api-openapi.yml