# send_optin_confirmations

> Sends the opt-in confirmation message by WhatsApp to chosen contacts who have not confirmed yet. Call without plan_id for a preview, then again with the plan_id and a new idempotency_key. Returns the preview or the queued count.

Last updated: 2026-10-25. Source: https://docs.smartchat.marketing/en/mcp/tools/send_optin_confirmations/

Sends the opt-in confirmation message by WhatsApp to chosen contacts who have not confirmed yet. Call without plan_id for a preview, then again with the plan_id and a new idempotency_key. Returns the preview or the queued count.

| | |
|---|---|
| Tool name | `send_optin_confirmations` |
| Permission | `sends:create` |
| `readOnlyHint` | false |
| `destructiveHint` | false |
| `idempotentHint` | true |
| `openWorldHint` | true |
| REST call | [`POST /v1/optin-confirmations`](https://docs.smartchat.marketing/en/api/reference/contacts/create_optin_confirmations/) |

## What it does

- Sends WhatsApp messages to contacts.
- Needs a confirmation step (a preview first).
- Safe to repeat with the same idempotency_key.

## Input

The tool takes one flat object. Path, query and body fields of the REST call are merged into it.


| Name | Type | Required | Description |
|---|---|---|---|
| `contact_ids` | array of string | yes | The contacts that should get the confirmation message (1 to 500). Only contacts with opt-in status none qualify. up to 500 items |
| `plan_id` | string | no | Plan ID from the preview call. Leave out to get a preview. |

**Arguments added by the MCP server** (see [Special arguments](https://docs.smartchat.marketing/en/mcp/#special-arguments))

| Name | Type | Required | Description |
|---|---|---|---|
| `idempotency_key` | string | yes | Required. Unique key for this action, for example a UUID. Same key and arguments within 24 hours: first result, nothing done again. up to 255 characters |

## Result

The result has the same content as the REST answer. Lists have at most 50 items per page (default 20); use `cursor` for the next page.

Errors come back as a tool result with `isError: true`. The error codes are the ones in [Errors](https://docs.smartchat.marketing/en/errors/).
