---
title: "Send Message"
method: POST
path: "/api/v1/whatsapp/messages"
tags: ["WhatsApp"]
---

# Send Message

`POST /api/v1/whatsapp/messages`

## Request

- Base URL: `https://api.inkbox.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.inkbox.ai/api/v1/whatsapp/messages`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Query parameters

- `agent_identity_id` string, uuid, nullable

## Headers

- `Idempotency-Key` string, nullable

## Request body

- SendWhatsAppRequest
  - `to` string, nullable: Phone number in E.164 format (e.g. '+15551234567').
  - `conversation_id` string, uuid, nullable
  - `reply_to_message_id` string, uuid, nullable
  - `plain_reply_fallback` boolean: Allow a plain reply only when the target is known before sending to lack native reply support. All currently supported WhatsApp targets support native replies, so this option does not bypass unavailable targets or quote evidence. Rejected or uncertain sends are never retried as plain messages. Ignored without reply_to_message_id.
  - `text` string, nullable
  - `media_ids` string[]
  - `staged_media` StagedWhatsAppMediaBinding[]
    - `handle` string, required
    - `content_hash` string, required

## Response `201`

Successful Response

- SendWhatsAppResponse
  - `message` WhatsAppMessageResponse, required
    - `id` string, uuid, required
    - `agent_identity_id` string, uuid, required
    - `conversation_id` string, uuid, required
    - `direction` 'inbound' | 'outbound', required
    - `local_number` string, required
    - `remote_number` string, required
    - `sender_number` string, required
    - `participants` string[], required
    - `reply_to_message_id` string, uuid, nullable
    - `thread_id` string, uuid, nullable
    - `thread_root_message_id` string, uuid, nullable
    - `reactions` WhatsAppReactionResponse[]
      - `id` string, uuid, required
      - `target_message_id` string, uuid, required
      - `conversation_id` string, uuid, required
      - `agent_identity_id` string, uuid, required
      - `direction` 'inbound' | 'outbound', required
      - `remote_number` string, nullable, required
      - `reaction` union, required
        - 'love' | 'like' | 'dislike' | 'laugh' | 'emphasize' | 'question' | 'eyes'
        - 'custom'
      - `custom_emoji` string, nullable, required
      - `emoji` string, required
      - `status` 'queued' | 'sending' | 'applied' | 'removed' | 'failed' | 'uncertain' | 'superseded', required
      - `revision` integer, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `removed_at` string, date-time, nullable, required
    - `content` string, nullable, required
    - `media` WhatsAppMediaResponse[], required
      - `id` string, uuid, required
      - `filename` string, required
      - `content_type` string, required
      - `size` integer, nullable, required
      - `status` 'pending' | 'ready' | 'unavailable', required
      - `url` string, nullable, required
    - `status` 'received' | 'queued' | 'sending' | 'sent' | 'delivered' | 'failed' | 'uncertain' | 'cancelled', required
    - `delivery_state` 'pending' | 'delivered' | 'unknown', required
    - `recipients` WhatsAppRecipientResponse[], required
      - `remote_number` string, required
      - `delivery_status` 'received' | 'queued' | 'sending' | 'sent' | 'delivered' | 'failed' | 'uncertain' | 'cancelled', required
      - `delivery_state` 'pending' | 'delivered' | 'unknown', required
      - `error_code` string, nullable, required
      - `error_detail` string, nullable, required
      - `sent_at` string, date-time, nullable, required
      - `delivered_at` string, date-time, nullable, required
      - `failed_at` string, date-time, nullable, required
    - `is_read` boolean, required
    - `is_blocked` boolean, required
    - `error_code` string, nullable, required
    - `error_detail` string, nullable, required
    - `source_at` string, date-time, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `sent_at` string, date-time, nullable, required
    - `delivered_at` string, date-time, nullable, required
    - `failed_at` string, date-time, nullable, required
    - `status_observed_at` string, date-time, nullable, required
    - `status_refresh_pending` boolean, required

## Other responses

- `422`: Validation Error
- `4XX`: Client error with Support Agent information.
- `5XX`: Server error with Support Agent information.

## Changes

- **2026-11-03** `7e848337e8bf`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/inkbox/apis/inkbox-api/changes/api/v1/whatsapp/messages/post.md)

---

[API](https://skmtc.dev/inkbox/apis/inkbox-api.md) - [All operations](https://skmtc.dev/inkbox/apis/inkbox-api/llms.txt) - [OpenAPI document](https://skmtc.dev/inkbox/apis/inkbox-api/revisions/3e862146bf53?raw)
