openapi: 3.2.0 info: title: ClickFunnels Emails::Broadcasts::Send Action API termsOfService: https://www.clickfunnels.com/terms-of-service contact: name: ClickFunnels API Team url: https://developers.myclickfunnels.com x-logo: url: https://statics.myclickfunnels.com/image/1126065/file/31edf05760fafe41a82f16a668ab251f.png description: 'The ClickFunnels REST API that powers webhooks, native integrations, and Zapier lets you manage your ClickFunnels data, automate your workflows, and recreate ClickFunnels functionality in your own apps. ' license: name: MIT url: https://opensource.org/licenses/MIT version: 2.0.0 servers: - url: https://{subdomain}.myclickfunnels.com/api/v2 description: ClickFunnels API variables: subdomain: default: myworkspace security: - BearerAuth: [] tags: - name: Emails::Broadcasts::SendAction description: '> Send Actions trigger the actual delivery of an email broadcast. A Send Action is the trigger that sends (or schedules) the parent broadcast — the same action the ClickFunnels dashboard fires when you click "Send". Creating a Send Action will immediately dispatch the broadcast (or schedule it for a future date/time if `send_at` is provided). Before a Send Action can be created, the broadcast must be ready to send: it requires a topic, a from-address whose `usable_as_sender` is `true`, and a complete workspace marketing address. If any of these are missing, the create returns 422 listing what is needed. The send itself runs asynchronously. Poll the returned Send Action record and compare `performed_count` to `target_count` to track progress. `started_at` and `completed_at` reflect async job progress. See [Sending or scheduling a broadcast](https://accounts.myclickfunnels.com/.well-known/emails/skill.md#sending-or-scheduling-a-broadcast) in the [Emails Skill](https://accounts.myclickfunnels.com/.well-known/emails/skill.md). ' paths: /emails/broadcasts/{broadcast_id}/send_actions: get: tags: - Emails::Broadcasts::SendAction summary: List Send Actions description: 'List all send actions for an email broadcast. Send actions represent past or scheduled delivery attempts for the broadcast. 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 access this endpoint directly.' operationId: listEmailsBroadcastsSendActions parameters: - name: broadcast_id in: path required: true schema: type: string - $ref: '#/components/parameters/after' - $ref: '#/components/parameters/sort_order' - $ref: '#/components/parameters/sort_property' responses: '200': description: OK headers: Pagination-Next: $ref: '#/components/headers/PaginationNext' Link: $ref: '#/components/headers/Link' content: application/json: schema: type: array items: $ref: '#/components/schemas/EmailsBroadcastsSendActionAttributes' example: - id: 1 public_id: aB3cD4 workspace_id: 42000 send_type: default target_ids: - 7 target_count: 1500 performed_count: 1500 scheduled_for: null started_at: '2025-06-01T18:00:05.000Z' completed_at: '2025-06-01T18:12:30.000Z' created_by_id: 3 approved_by_id: null created_at: '2025-06-01T17:59:00.000Z' updated_at: '2025-06-01T18:12:30.000Z' broadcast_id: 7 - id: 2 public_id: eF5gH6 workspace_id: 42000 send_type: default target_ids: - 7 target_count: null performed_count: 0 scheduled_for: '2025-09-15T18:00:00.000Z' started_at: null completed_at: null created_by_id: 3 approved_by_id: null created_at: '2025-06-02T10:00:00.000Z' updated_at: '2025-06-02T10:00:00.000Z' broadcast_id: 7 '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: error: API key missing or invalid '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: error: 'Forbidden: This endpoint is restricted to trusted developer platforms. Apply for trusted platform access at https://developers.myclickfunnels.com or contact support.' '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: error: 'Not found: Record missing' post: tags: - Emails::Broadcasts::SendAction summary: Create Send Action description: '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. See [Sending or scheduling a broadcast](https://accounts.myclickfunnels.com/.well-known/emails/skill.md#sending-or-scheduling-a-broadcast) in the [Emails Skill](https://accounts.myclickfunnels.com/.well-known/emails/skill.md).' operationId: createEmailsBroadcastsSendActions parameters: - name: broadcast_id in: path required: true schema: type: string requestBody: description: Send action parameters. The entire body is optional — omit it (or pass an empty object) to send immediately. required: false content: application/json: schema: type: object properties: emails_broadcasts_send_action: type: object $ref: '#/components/schemas/EmailsBroadcastsSendActionParameters' example: emails_broadcasts_send_action: send_at: '2025-09-15T18:00:00.000Z' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/EmailsBroadcastsSendActionAttributes' example: id: 1 public_id: aB3cD4 workspace_id: 42000 send_type: default target_ids: - 7 target_count: null performed_count: 0 scheduled_for: null started_at: null completed_at: null created_by_id: 3 approved_by_id: null created_at: '2025-06-01T17:59:00.000Z' updated_at: '2025-06-01T17:59:00.000Z' broadcast_id: 7 '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: error: API key missing or invalid '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: error: 'Forbidden: This endpoint is restricted to trusted developer platforms. Apply for trusted platform access at https://developers.myclickfunnels.com or contact support.' '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: error: 'Not found: Record missing' '422': description: 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. To fix an incomplete marketing address, see the [Business mailing address prerequisite](https://accounts.myclickfunnels.com/.well-known/emails/skill.md#business-mailing-address-prerequisite) in the [Emails Skill](https://accounts.myclickfunnels.com/.well-known/emails/skill.md). content: application/json: schema: type: object properties: error: type: string example: error: Weekly Newsletter is not sendable.; send_at is not a valid datetime /emails/broadcasts/send_actions/{id}: get: tags: - Emails::Broadcasts::SendAction summary: Fetch Send Action description: 'Retrieve a single send action and its current async delivery progress. Compare `performed_count` to `target_count` to determine how far along delivery is. `completed_at` is set when delivery finishes. 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 access this endpoint directly.' operationId: getEmailsBroadcastsSendActions parameters: - $ref: '#/components/parameters/id' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EmailsBroadcastsSendActionAttributes' example: id: 1 public_id: aB3cD4 workspace_id: 42000 send_type: default target_ids: - 7 target_count: 1500 performed_count: 1500 scheduled_for: null started_at: '2025-06-01T18:00:05.000Z' completed_at: '2025-06-01T18:12:30.000Z' created_by_id: 3 approved_by_id: null created_at: '2025-06-01T17:59:00.000Z' updated_at: '2025-06-01T18:12:30.000Z' broadcast_id: 7 '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: error: API key missing or invalid '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: error: 'Forbidden: This endpoint is restricted to trusted developer platforms. Apply for trusted platform access at https://developers.myclickfunnels.com or contact support.' '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: error: 'Not found: Record missing' delete: tags: - Emails::Broadcasts::SendAction summary: Remove Send Action description: 'Delete a send action record. This cancels a scheduled (not-yet-started) send action and removes the record. Deleting a send action that has already started or completed may not halt in-flight delivery. 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 access this endpoint directly.' operationId: removeEmailsBroadcastsSendActions parameters: - $ref: '#/components/parameters/id' responses: '204': description: No Content '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: error: API key missing or invalid '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: error: 'Forbidden: This endpoint is restricted to trusted developer platforms. Apply for trusted platform access at https://developers.myclickfunnels.com or contact support.' '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: error: 'Not found: Record missing' components: parameters: id: name: id in: path required: true schema: type: string sort_property: name: sort_property in: query description: 'Sort property of a list response. The default is id and thus the created_at order. If you sort by other properties, we additionally sort by id implicitly as a secondary sort property, so that you can rely on the sort order to be deterministic even if the main sort property ends up with the same values. ' required: false schema: type: string enum: - id - updated_at sort_order: name: sort_order in: query description: Sort order of a list response. Use 'desc' to reverse the default 'asc' (ascending) sort order. Examples [in our guides](https://developers.myclickfunnels.com/docs/pagination). required: false schema: type: string enum: - asc - desc after: name: after in: query required: false schema: type: string description: ID of item after which the collection should be returned. More examples and info about pagination [in our guides](https://developers.myclickfunnels.com/docs/pagination). schemas: EmailsBroadcastsSendActionAttributes: type: object title: Email Broadcast Send Actions description: 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. properties: id: type: integer description: Send Action ID public_id: type: - string - 'null' description: Send Action public ID workspace_id: type: integer description: Workspace ID send_type: type: string enum: - default - split_test_main - split_test_variant - split_test_winner - send_in_contacts_time_zone - schedule_send_in_contacts_time_zone description: The delivery strategy used for this send action. target_ids: type: - array - 'null' items: type: integer description: Array of broadcast IDs targeted by this send action. For a standard broadcast send, this contains the single broadcast ID being delivered. target_count: type: - integer - 'null' description: Total number of contacts targeted by this send action. `null` until the async job has resolved the audience count. performed_count: type: - integer - 'null' description: Number of contacts processed so far. Poll alongside `target_count` to track async delivery progress. scheduled_for: type: - string - 'null' format: date-time description: 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: type: - string - 'null' format: date-time description: Datetime the async delivery job began processing contacts. `null` until the job has started. completed_at: type: - string - 'null' format: date-time description: Datetime the async delivery job finished. `null` until delivery is complete. created_by_id: type: - integer - 'null' description: Reserved; `null` in most cases. The member who triggered the send is recorded in `approved_by_id` instead. approved_by_id: type: - integer - 'null' description: ID of the workspace membership that created/approved this send action — the member that triggered the send. Populated for API-created sends. created_at: type: - string - 'null' format: date-time description: Created at datetime updated_at: type: - string - 'null' format: date-time description: Updated at datetime broadcast_id: type: - integer - 'null' description: The ID of the email broadcast being delivered. Convenience field derived from `target_ids[0]`. example: id: 1 public_id: aB3cD4 workspace_id: 42000 send_type: default target_ids: - 7 target_count: 1500 performed_count: 750 scheduled_for: null started_at: '2025-06-01T18:00:05.000Z' completed_at: null created_by_id: null approved_by_id: 3 created_at: '2025-06-01T17:59:00.000Z' updated_at: '2025-06-01T18:00:05.000Z' broadcast_id: 7 required: - approved_by_id - broadcast_id - completed_at - created_at - created_by_id - id - performed_count - public_id - scheduled_for - send_type - started_at - target_count - target_ids - updated_at - workspace_id EmailsBroadcastsSendActionParameters: type: object title: Email Broadcast Send Actions description: Parameters for creating a send action. The request body is optional — a bodyless POST sends the broadcast immediately. properties: emails_broadcasts_send_action: type: object properties: send_at: type: string format: date-time description: 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. example: emails_broadcasts_send_action: send_at: '2025-09-15T18:00:00.000Z' headers: Link: description: A direct link to the next page for the cursor-based pagination. It includes the `after` and the Pagination-Next ID value. schema: type: string PaginationNext: description: ID of the last item in the current response after which more records exist. You can use it in an `after` query parameter for cursor-based pagination to get to the next page. schema: type: string securitySchemes: BearerAuth: type: http scheme: bearer externalDocs: description: More in-depth guides and further resources url: https://developers.myclickfunnels.com