> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lazyapp.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Message options

> WhatsApp-specific fields on a send — connection choice, replies, TTL, metadata.

Social APIs often bury network-specific knobs in a `platformSpecificData` bag. WhatsApp is one platform, so LazyApp puts the options on the message itself.

## Choose which number sends

Workspaces can have more than one connected number. Omit both fields to use the default.

```json theme={null}
{
  "type": "text",
  "to": "+919812345670",
  "body": "Your order left the warehouse.",
  "phone_number_id": "123456789012345"
}
```

Or address the LazyApp connection:

```json theme={null}
{ "connection_uuid": "9f8b1c2d-4e5f-4a6b-8c7d-0e1f2a3b4c5d" }
```

API keys can be restricted to specific numbers; using a disallowed id returns `403`.

## Reply in a thread

```json theme={null}
{
  "type": "text",
  "to": "+919812345670",
  "body": "Yes, that size is in stock.",
  "context": { "message_id": "wamid.HBgMOTE5ODEyMzQ1Njcw" }
}
```

Quoting works with every message type except reactions. WhatsApp leaves the quote off when the original was deleted or is older than about 30 days, and on templates.

## Link previews

WhatsApp can show a preview card for the first `https://` or `http://` link in a text message. Ask for it with `preview_url`:

```json theme={null}
{
  "type": "text",
  "to": "+919812345670",
  "body": "Our new range is here: https://acme.example/new",
  "preview_url": true
}
```

The preview comes from the page's Open Graph tags (`og:title`, `og:description`, `og:url`, and an `og:image` under 600 KB, at least 300 px wide). They must sit in the `<head>` within the first 300 KB of the HTML. Without `preview_url`, or when WhatsApp cannot fetch a preview, the link is still tappable. The inbox turns previews on automatically when a reply has a link, with a switch to turn it off.

## Time-to-live on schedules

With `send_at`, set `ttl_seconds` so a late reminder is dropped instead of arriving hours late. See [scheduling](https://docs.lazyapp.in/sending/messages.md#scheduling).

Direct Send (utility / authentication without a pre-approved template) also takes `ttl_seconds` with Meta's category-specific bounds — see the [Direct Send](https://docs.lazyapp.in/api-reference/messages/send-without-an-approved-template.md) endpoint.

## Metadata

Up to 20 string values. Echoed on webhooks for reconciliation:

```json theme={null}
{ "metadata": { "order_id": "1042", "warehouse": "BOM-1" } }
```

## Interactive shapes

Buttons, lists, link buttons, location requests, media carousels, India address forms, flows and catalog / product messages all use `type: interactive` with an `interactive` object. The contact's choice arrives as `message.received`. Every type, its limits and examples: [Interactive messages](https://docs.lazyapp.in/sending/interactive-messages.md).

## Identity check

With the identity check on, LazyApp sends the contact's stored identity hash with every message. Pass `recipient_identity_key_hash` to use your own. See [Identity, privacy and data](https://docs.lazyapp.in/guides/identity-and-privacy.md#identity-change-check).

## What is not here

There is no Twitter-thread, Instagram-Story, or TikTok-privacy bag. LazyApp is WhatsApp-only. For number health and feature gates, use [`GET /v1/capabilities`](https://docs.lazyapp.in/concepts/capabilities).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.