---
title: "Create Send Action"
method: POST
path: "/emails/broadcasts/{broadcast_id}/send_actions"
tags: ["Emails::Broadcasts::SendAction"]
---

# Create Send Action

`POST /emails/broadcasts/{broadcast_id}/send_actions`

Send (or schedule) an email broadcast by creating a Send Action. This is the same trigger the ClickFunnels dashboard fires when you click "Send".
The request body is optional — a bodyless POST dispatches the broadcast immediately. Pass `send_at` inside `emails_broadcasts_send_action` to schedule the broadcast for a future date and time; the broadcast will be sent at the given hour on that day, adjusted to the workspace's time zone.
The broadcast must be ready to send before this call will succeed. It requires: - A topic assigned (`topic_ids` is non-empty) - A from-address with `usable_as_sender: true` - A complete workspace marketing address (set via the Email Settings endpoint)
If any of these conditions are not met, the endpoint returns 422 with a message listing what is missing.
The send runs asynchronously. The returned Send Action record tracks progress: poll `GET /api/v2/emails/broadcasts/send_actions/{id}` and compare `performed_count` to `target_count`.
When accessing the API through an OAuth connection from a third-party platform, this endpoint is restricted to trusted developer platforms. If you are using your own API key, you can send emails directly from your account.

## Path parameters

- `broadcast_id` integer, required

## Request body

- object
  - `emails_broadcasts_send_action` EmailsBroadcastsSendActionParameters — Parameters for creating a send action. The request body is optional — a bodyless POST sends the broadcast immediately.
    - `emails_broadcasts_send_action` object
      - `send_at` string, date-time — Optional ISO 8601 datetime. When provided, the broadcast is scheduled for that day at the given hour in the workspace's time zone. Omit (or send an empty body) to dispatch immediately.

## Response `201`

Created

- EmailsBroadcastsSendActionAttributes — An asynchronous action that sends (or schedules) the delivery of a parent email broadcast. The action runs in the background; poll `performed_count` vs `target_count` to track progress.
  - `id` integer — Send Action ID
  - `public_id` string, nullable — Send Action public ID
  - `workspace_id` integer — Workspace ID
  - `send_type` 'default' | 'split_test_main' | 'split_test_variant' | 'split_test_winner' | 'send_in_contacts_time_zone' | 'schedule_send_in_contacts_time_zone' — The delivery strategy used for this send action.
  - `target_ids` integer[], nullable — Array of broadcast IDs targeted by this send action. For a standard broadcast send, this contains the single broadcast ID being delivered.
  - `target_count` integer, nullable — Total number of contacts targeted by this send action. `null` until the async job has resolved the audience count.
  - `performed_count` integer, nullable — Number of contacts processed so far. Poll alongside `target_count` to track async delivery progress.
  - `scheduled_for` string, date-time, nullable — Datetime the send is scheduled to begin. Reflects the `send_at` passed at creation, adjusted to the workspace time zone. `null` for immediate sends.
  - `started_at` string, date-time, nullable — Datetime the async delivery job began processing contacts. `null` until the job has started.
  - `completed_at` string, date-time, nullable — Datetime the async delivery job finished. `null` until delivery is complete.
  - `created_by_id` integer, nullable — Reserved; `null` in most cases. The member who triggered the send is recorded in `approved_by_id` instead.
  - `approved_by_id` integer, nullable — ID of the workspace membership that created/approved this send action — the member that triggered the send. Populated for API-created sends.
  - `created_at` string, date-time, nullable — Created at datetime
  - `updated_at` string, date-time, nullable — Updated at datetime
  - `broadcast_id` integer, nullable — The ID of the email broadcast being delivered. Convenience field derived from `target_ids[0]`.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity — the broadcast is not ready to send. The error message lists what is missing (e.g. no topic assigned, from-address not usable as sender, or marketing address incomplete). May also be returned if the broadcast has already been scheduled.

---

[API](https://skmtc.net/myclickfunnels/apis/clickfunnels-api.md) · [All operations](https://skmtc.net/myclickfunnels/apis/clickfunnels-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/myclickfunnels/clickfunnels-api/revisions/ae6313eaa176/schema)
