Skip to main content
POST
Send a message

Authorizations

Authorization
string
header
required

Your API key, e.g. sk_live_... or sk_test_....

Headers

Idempotency-Key
string

Optional. Makes this write safe to retry: the same key replays the first response instead of acting twice.

Maximum string length: 255

Body

application/json
type
enum<string>

Defaults to text.

Available options:
text,
template,
image,
document,
audio,
video,
sticker,
location,
contacts,
interactive,
reaction
to
string

E.164 phone number, e.g. +919812345670.

Maximum string length: 32
recipient
object
send_at
string<date-time> | null

Schedule for later. Must be in the future.

ttl_seconds
integer

Drop the message if it cannot be sent within this window.

Required range: 60 <= x <= 2592000
body
string

Text body, or media caption fallback.

Maximum string length: 4096
context
object
template
object
media_id
string

A previously uploaded media id.

Maximum string length: 128
media_url
string

Public URL LazyApp fetches and uploads.

Maximum string length: 2048
caption
string
Maximum string length: 1024
filename
string
Maximum string length: 255
latitude
number
Required range: -90 <= x <= 90
longitude
number
Required range: -180 <= x <= 180
name
string

Location name.

Maximum string length: 255
address
string
Maximum string length: 1024
contacts
object[]
Required array length: 1 - 5 elements
interactive
object

WhatsApp's interactive object: button, list, cta_url, location_request_message, carousel, address_message (India only), flow, catalog and payment types. Button, list, link, location, carousel and address messages are checked against Meta's limits before sending. See the Interactive messages guide.

reaction
object
idempotency_key
string

Legacy body-level dedupe. Prefer the Idempotency-Key header.

Maximum string length: 128
phone_number_id
string

Send from a specific number.

Maximum string length: 64
connection_uuid
string<uuid>
metadata
object
preview_url
boolean

Text only. Ask WhatsApp to show a preview of the first link in body.

recipient_identity_key_hash
string

Identity change check: deliver only if the contact's identity hash still matches. Defaults to the hash LazyApp stored.

Maximum string length: 128

Response

Message accepted and sent.

uuid
string

LazyApp's stable id for the message.

request_id
string | null

Correlation id, echoed as X-Request-Id.

status
enum<string>
Available options:
queued,
sent,
delivered,
read,
played,
failed
acceptance_status
string | null
type
enum<string>
Available options:
text,
template,
image,
document,
audio,
video,
sticker,
location,
contacts,
interactive,
reaction
provider_message_id
string | null

Meta's wamid.

error_message
string | null

Set only when status is failed.