---
title: "Bulk trigger event"
method: POST
path: "/v1/events/trigger/bulk"
tags: ["Events"]
---

# Bulk trigger event

`POST /v1/events/trigger/bulk`

Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.
      The bulk API is limited to 100 events per request.

## Request body

- BulkTriggerEventDto
  - `events` TriggerEventRequestDto[], required
    - `name` string, required — The trigger identifier of the workflow you wish to send. This identifier can be found on the workflow page.
    - `payload` object — The payload object is used to pass additional custom information that could be used to render the workflow, or perform routing rules based on it. This data will also be available when fetching the notifications feed from the API to display certain parts of the UI.
    - `bridgeUrl` string — Optional Bridge Endpoint URL used to route this trigger to a specific Bridge application. Useful during local development when multiple engineers share an organization: set this to your personal tunnel URL from `npx novu@latest dev` (for example via NOVU_BRIDGE_URL) so app-fired triggers hit your machine instead of the environment's synced Bridge URL. Must be a publicly reachable https URL — private or localhost addresses are rejected.
    - `overrides` TriggerOverrides
      - `steps` object — This could be used to override provider specific configurations or layout at the step level
      - `channels` ChannelOverrides
        - `email` EmailChannelOverrides
          - `layoutId` string, nullable — Override or remove the layout for all email steps in the workflow
      - `providers` object — Overrides the provider configuration for the entire workflow and all steps
      - `email` object — Override the email provider specific configurations for the entire workflow
      - `push` object — Override the push provider specific configurations for the entire workflow
      - `sms` object — Override the sms provider specific configurations for the entire workflow
      - `chat` object — Override the chat provider specific configurations for the entire workflow
      - `layoutIdentifier` string — Override the layout identifier for the entire workflow
      - `severity` 'high' | 'medium' | 'low' | 'none' — Severity of the workflow
    - `agentId` string, nullable — Override the workflow-assigned agent for this trigger using the public agent identifier. Omit to use the workflow default; pass null to disable agent routing for this execution.
    - `to` union, required — The recipients list of people who will receive the notification. Maximum number of recipients can be 100.
      - union[]
        - union
          - SubscriberPayloadDto
            - `firstName` string, nullable — First name of the subscriber
            - `lastName` string, nullable — Last name of the subscriber
            - `email` string, nullable — Email address of the subscriber
            - `phone` string, nullable — Phone number of the subscriber
            - `avatar` string, nullable — Avatar URL or identifier
            - `locale` string, nullable — Locale of the subscriber
            - `timezone` string, nullable — Timezone of the subscriber
            - `data` object, nullable — Additional custom data associated with the subscriber
            - `subscriberId` string, required — The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems
            - `channels` SubscriberChannelDto[] — An optional array of subscriber channels.
              - …
          - TopicPayloadDto
            - `topicKey` string, required
            - `type` 'Subscriber' | 'Topic', required
            - `exclude` string[] — Optional array of subscriber IDs to exclude from the topic trigger
          - string — Unique identifier of a subscriber in your systems
      - string — Unique identifier of a subscriber in your systems
      - SubscriberPayloadDto
        - `firstName` string, nullable — First name of the subscriber
        - `lastName` string, nullable — Last name of the subscriber
        - `email` string, nullable — Email address of the subscriber
        - `phone` string, nullable — Phone number of the subscriber
        - `avatar` string, nullable — Avatar URL or identifier
        - `locale` string, nullable — Locale of the subscriber
        - `timezone` string, nullable — Timezone of the subscriber
        - `data` object, nullable — Additional custom data associated with the subscriber
        - `subscriberId` string, required — The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems
        - `channels` SubscriberChannelDto[] — An optional array of subscriber channels.
          - `providerId` 'slack' | 'discord' | 'msteams' | 'webex-messaging' | 'mattermost' | 'ryver' | 'zulip' | 'grafana-on-call' | 'getstream' | 'rocket-chat' | 'whatsapp-business' | 'line' | 'chat-webhook' | 'novu-slack' | 'telegram' | 'sendblue' | 'novu-web-chat' | 'fcm' | 'apns' | 'expo' | 'one-signal' | 'pushpad' | 'push-webhook' | 'pusher-beams' | 'appio', required — The ID of the chat or push provider.
          - `integrationIdentifier` string — An optional identifier for the integration.
          - `credentials` ChannelCredentialsDto, required
            - `webhookUrl` string — The URL for the webhook associated with the channel.
            - `deviceTokens` string[] — An array of device tokens for push notifications.
      - TopicPayloadDto
        - `topicKey` string, required
        - `type` 'Subscriber' | 'Topic', required
        - `exclude` string[] — Optional array of subscriber IDs to exclude from the topic trigger
    - `transactionId` string — A unique identifier for deduplication. If the same **transactionId** is sent again, the trigger is ignored. Useful to prevent duplicate notifications. The retention period depends on your billing tier.
    - `actor` union — It is used to display the Avatar of the provided actor's subscriber id or actor object. If a new actor object is provided, we will create a new subscriber in our system
      - string — Unique identifier of a subscriber in your systems
      - SubscriberPayloadDto
        - `firstName` string, nullable — First name of the subscriber
        - `lastName` string, nullable — Last name of the subscriber
        - `email` string, nullable — Email address of the subscriber
        - `phone` string, nullable — Phone number of the subscriber
        - `avatar` string, nullable — Avatar URL or identifier
        - `locale` string, nullable — Locale of the subscriber
        - `timezone` string, nullable — Timezone of the subscriber
        - `data` object, nullable — Additional custom data associated with the subscriber
        - `subscriberId` string, required — The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems
        - `channels` SubscriberChannelDto[] — An optional array of subscriber channels.
          - `providerId` 'slack' | 'discord' | 'msteams' | 'webex-messaging' | 'mattermost' | 'ryver' | 'zulip' | 'grafana-on-call' | 'getstream' | 'rocket-chat' | 'whatsapp-business' | 'line' | 'chat-webhook' | 'novu-slack' | 'telegram' | 'sendblue' | 'novu-web-chat' | 'fcm' | 'apns' | 'expo' | 'one-signal' | 'pushpad' | 'push-webhook' | 'pusher-beams' | 'appio', required — The ID of the chat or push provider.
          - `integrationIdentifier` string — An optional identifier for the integration.
          - `credentials` ChannelCredentialsDto, required
            - `webhookUrl` string — The URL for the webhook associated with the channel.
            - `deviceTokens` string[] — An array of device tokens for push notifications.
    - `tenant` union — It is used to specify a tenant context during trigger event. Existing tenants will be updated with the provided details.
      - string — Unique identifier of a tenant in your system
      - TenantPayloadDto
        - `identifier` string
        - `name` string
        - `data` object
    - `context` object

## Response `201`

Created

- TriggerEventResponseDto[]
  - `acknowledged` boolean, required — Indicates whether the trigger was acknowledged or not
  - `status` 'error' | 'trigger_not_active' | 'no_workflow_active_steps_defined' | 'no_workflow_steps_defined' | 'processed' | 'no_tenant_found' | 'invalid_recipients', required — Status of the trigger
  - `error` string[] — In case of an error, this field will contain the error message(s)
  - `transactionId` string — The returned transaction ID of the trigger
  - `activityFeedLink` string — Link to the activity feed for this trigger event
  - `jobData` object

## Other responses

- `400` — Payload validation failed - returned when any event payload does not match the workflow schema
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `405` — Method Not Allowed
- `409` — Conflict
- `413` — Payload Too Large
- `414` — URI Too Long
- `415` — Unsupported Media Type
- `422` — Unprocessable Entity
- `429` — The client has sent too many requests in a given amount of time.
- `500` — Internal Server Error
- `503` — The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.

---

[API](https://skmtc.net/novu/apis/deprecated-novu-api-use-openapi-json-yaml-instead.md) · [All operations](https://skmtc.net/novu/apis/deprecated-novu-api-use-openapi-json-yaml-instead/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novu/deprecated-novu-api-use-openapi-json-yaml-instead/versions/986fe259fa85/schema)
