# LazyApp - [LazyApp](https://docs.lazyapp.in/index.md): One WhatsApp API for developers, SaaS platforms and businesses. - [Quickstart](https://docs.lazyapp.in/quickstart.md): Authenticate, confirm a connection, and send your first WhatsApp message in minutes. - [Authentication](https://docs.lazyapp.in/authentication.md): API keys, scopes and restrictions. - [Workspaces and modes](https://docs.lazyapp.in/concepts/workspaces-and-modes.md): How LazyApp scopes your data. - [Glossary](https://docs.lazyapp.in/concepts/glossary.md): Every LazyApp term defined once — workspace vs connection vs mode, platform customer vs contact, and the IDs people mix up. - [Conventions](https://docs.lazyapp.in/concepts/conventions.md): What is true of every endpoint. - [Idempotency](https://docs.lazyapp.in/concepts/idempotency.md): Make every write safe to retry. - [Pagination](https://docs.lazyapp.in/concepts/pagination.md): Cursor paging on every list. - [Errors](https://docs.lazyapp.in/concepts/errors.md): Status codes, shapes and what to retry. - [Message lifecycle](https://docs.lazyapp.in/concepts/message-lifecycle.md): Statuses for scheduled and sent messages, what you can do in each state, and which webhook fires next. - [Capabilities](https://docs.lazyapp.in/concepts/capabilities.md): Ask what a number supports instead of assuming. - [WhatsApp](https://docs.lazyapp.in/guides/whatsapp.md): Send messages, manage templates and contacts, run broadcasts and flows — one API for WhatsApp Cloud. - [Sandbox](https://docs.lazyapp.in/guides/sandbox.md): Test WhatsApp sending in test mode before going live — without Zernio-style session activation. - [Connecting WhatsApp](https://docs.lazyapp.in/guides/connecting-whatsapp.md): Connect a WhatsApp Business Account via the console or platform setup links, then confirm with webhooks. - [Phone numbers](https://docs.lazyapp.in/guides/phone-numbers.md): List your numbers, check whether they can send, register and verify them, change the display name, apply for the blue tick and add more numbers to the same WhatsApp account. - [QR codes, opt-in links and conversation starters](https://docs.lazyapp.in/guides/growth-tools.md): Get people into a WhatsApp chat with you: QR codes with a typed message, opt-in links that subscribe people inside WhatsApp, and ice breakers that suggest what to ask. - [Contacts & profile](https://docs.lazyapp.in/guides/contacts.md): Manage contacts, consent, and your WhatsApp business profile. - [Identity, privacy and data](https://docs.lazyapp.in/guides/identity-and-privacy.md): Usernames and business-scoped user ids, the identity change check, blocking, Meta's contact book, opt-in, and where WhatsApp stores your messages. - [Inbox](https://docs.lazyapp.in/guides/inbox.md): List WhatsApp conversations, fetch messages, and reply with POST /v1/messages. - [Ad welcome messages](https://docs.lazyapp.in/guides/ad-welcome-messages.md): What people see right after tapping your Click-to-WhatsApp ad, and how to tell which ad they came from. - [Flows](https://docs.lazyapp.in/guides/flows.md): Create, publish, and send WhatsApp Flows — and collect submissions. - [Payments (India)](https://docs.lazyapp.in/guides/payments-india.md): Ask a contact to pay inside WhatsApp, follow the payment, update the order and refund. - [WhatsApp analytics](https://docs.lazyapp.in/guides/whatsapp-analytics.md): WhatsApp's own counts of messages, charges, calls, templates and groups for your account. - [Ad results](https://docs.lazyapp.in/guides/ad-results.md): See the chats, leads and sales each Click-to-WhatsApp ad brought in, next to its name, spend and cost per result. - [Group chats](https://docs.lazyapp.in/guides/groups.md): Run small WhatsApp groups from your business number: create, invite, approve, chat, pin and delete. - [Calling](https://docs.lazyapp.in/guides/calling.md): WhatsApp voice calls: answer and place calls in the inbox, or build your own client on the calls API. - [Security overview](https://docs.lazyapp.in/security/overview.md): How access to a LazyApp workspace is protected — sign-in, sessions, roles, API keys, and what is recorded. - [Two-step verification](https://docs.lazyapp.in/security/two-factor.md): Protect password sign-in with a TOTP authenticator app, recovery codes, and optional passkeys. - [Pricing](https://docs.lazyapp.in/billing/overview.md): A flat monthly plan pays LazyApp. Meta bills your messages directly, and LazyApp adds 0% to Meta's rates. - [Plans and limits](https://docs.lazyapp.in/billing/pricing-and-tiers.md): Starter, Growth and Pro: prices, add-ons, yearly billing, GST, what each plan includes, and the 402 you get when you reach a limit. - [Meta message billing](https://docs.lazyapp.in/billing/meta-message-billing.md): Meta bills your WhatsApp messages directly at its own rates, LazyApp adds 0%, and from 1 October 2026 each number gets 1,000 free service messages a month. - [WhatsApp message rates](https://docs.lazyapp.in/billing/whatsapp-rates.md): The categories Meta prices, where to find Meta's rates, volume tiers, and the pricing API. - [How billing works](https://docs.lazyapp.in/billing/mechanics.md): Starting a plan, upgrades, downgrades, cancelling, invoices, and how LazyApp records Meta's message charges. - [Payment issues](https://docs.lazyapp.in/billing/payment-issues.md): What happens when a plan payment fails or needs approval, and what to do when Meta stops delivering messages. - [Wallets](https://docs.lazyapp.in/billing/wallets.md): Wallets exist only for resellers and platform teams: what they pay for, adding money, automatic top-up and receipts. - [Messages](https://docs.lazyapp.in/sending/messages.md): Every message type, and when you are allowed to send it. - [Message options](https://docs.lazyapp.in/sending/message-options.md): WhatsApp-specific fields on a send — connection choice, replies, TTL, metadata. - [Interactive messages](https://docs.lazyapp.in/sending/interactive-messages.md): Reply buttons, lists, link buttons, location requests, media carousels and India address forms. - [Read receipts and typing](https://docs.lazyapp.in/sending/read-receipts.md): Show blue ticks and a typing indicator for messages a contact sent you. - [Templates](https://docs.lazyapp.in/sending/templates.md): Create, submit and track message templates. - [Template formats](https://docs.lazyapp.in/sending/template-formats.md): Carousels, GIF headers, call buttons, call permission requests, delivery time limits and ready-made library templates. - [Managing templates](https://docs.lazyapp.in/sending/template-management.md): Keep templates healthy: quality, pausing, categories, groups, comparisons, archiving, login codes in many languages and copying between accounts. - [Marketing messages](https://docs.lazyapp.in/sending/marketing-messages.md): How marketing templates reach customers through Meta's Marketing Messages API: setup, sending options, link clicks, sales tracking, results and price caps. - [Direct Send](https://docs.lazyapp.in/sending/direct-send.md): Send utility and login code messages without creating templates first. Meta creates the templates for you. - [Media](https://docs.lazyapp.in/sending/media.md): Upload once, send many times — multipart, URL import, and Meta's 30-day expiry. - [Catalog and products](https://docs.lazyapp.in/sending/catalog.md): Connect a Meta catalog, set up the shop on your number, and send product messages, carousels and catalog links. - [Manage products](https://docs.lazyapp.in/sending/catalog-inventory.md): Add, edit and remove catalog products, set price, stock and photo, or upload a spreadsheet, from the console or the API. - [Events](https://docs.lazyapp.in/sending/events.md): Say what happened, not which template to send. - [Automation packs](https://docs.lazyapp.in/sending/automation-packs.md): Provision event mappings, workflows and flows for a vertical in one call. - [Verify](https://docs.lazyapp.in/sending/verify.md): One-time passcodes over WhatsApp. - [Broadcasts](https://docs.lazyapp.in/sending/broadcasts.md): Template sends to many contacts, with compliance built in. - [Webhooks](https://docs.lazyapp.in/webhooks/overview.md): How LazyApp webhook deliveries work, including retries, idempotency, and signature verification. - [Verifying webhooks](https://docs.lazyapp.in/webhooks/verifying.md): Never trust an unverified body. - [Event reference](https://docs.lazyapp.in/webhooks/events.md): Every webhook LazyApp sends. - [What Meta tells LazyApp](https://docs.lazyapp.in/webhooks/whatsapp-fields.md): Every WhatsApp webhook field Meta sends, what LazyApp does with it, and the event you receive. - [Build a platform](https://docs.lazyapp.in/platform/overview.md): Model each customer as a workspace, connect their WhatsApp number, scope API keys, and route webhooks back to the right tenant. - [Resellers](https://docs.lazyapp.in/platform/resellers.md): Sell LazyApp under your own brand: your wallet pays each client's plan, you set the price your clients see, and you bill them yourself. - [Tenant messaging](https://docs.lazyapp.in/platform/messaging.md): Send and schedule WhatsApp on behalf of every customer — retry-safe creation, media once, outcomes from webhooks. - [Tenant usage](https://docs.lazyapp.in/platform/usage.md): Show each customer their WhatsApp message volume and cost — usage API, alerts, and freshness expectations. - [Funding](https://docs.lazyapp.in/platform/funding.md): Read funding status, record a portfolio, and stop partner-managed billing for a portfolio. - [Tenant inbox](https://docs.lazyapp.in/platform/inbox.md): Build a WhatsApp inbox for each customer — webhook-first ingestion, routing, replies, and embeds. - [Setup links](https://docs.lazyapp.in/platform/setup-links.md): Let a customer connect their own WhatsApp account. - [Embedded components](https://docs.lazyapp.in/platform/embedded-components.md): Put LazyApp UI inside your product. - [Migrating from Meta's Cloud API](https://docs.lazyapp.in/migrating/from-cloud-api.md): Change the base URL and the token. - [Migrate from Kapso](https://docs.lazyapp.in/migrating/from-kapso.md): Move a WhatsApp integration from Kapso to LazyApp — keep Meta-shaped sends, then adopt the native API. - [Scopes](https://docs.lazyapp.in/reference/scopes.md): What each scope grants. - [Rate limits](https://docs.lazyapp.in/reference/rate-limits.md): Two limits apply: ours and Meta's — plus send-velocity guards. - [Media & limits](https://docs.lazyapp.in/reference/media-and-limits.md): Upload limits, Meta constraints, delivery analytics, and common errors. - [Versioning](https://docs.lazyapp.in/reference/versioning.md): What can change under you, and what cannot. - [Changelog](https://docs.lazyapp.in/reference/changelog.md): What shipped, newest first. - [Pending gaps vs Zernio](https://docs.lazyapp.in/pending-gaps-zernio.md): Internal tracker of product and documentation gaps compared to Zernio's WhatsApp API. - [Send a message](https://docs.lazyapp.in/api-reference/messages/send-a-message.md): Send any supported WhatsApp message type. Set `send_at` to schedule instead of sending now, which returns `202` with a scheduled message id. - [Retrieve a message](https://docs.lazyapp.in/api-reference/messages/retrieve-a-message.md): Fetch a message by uuid and read its current status from LazyApp's record (`queued` → `sent` → `delivered` → `read` / `played`, or `failed`). Prefer webhooks for production; this endpoint is for confirmation and debugging. - [Send without an approved template](https://docs.lazyapp.in/api-reference/messages/send-without-an-approved-template.md): For numbers enrolled in Meta's direct-send programme. `category` must be `utility` or `authentication`; marketing is not eligible. - [List scheduled messages](https://docs.lazyapp.in/api-reference/messages/list-scheduled-messages.md): Messages queued for future delivery that have not been sent yet. - [Cancel a scheduled message](https://docs.lazyapp.in/api-reference/messages/cancel-a-scheduled-message.md): Cancels a message that has not been sent. Already-sent messages cannot be recalled. - [Download inbound message media](https://docs.lazyapp.in/api-reference/messages/download-inbound-message-media.md): Returns the bytes of media a contact sent in. Outbound uploads use `POST /v1/media`; this is the other direction. - [Mark a message as read](https://docs.lazyapp.in/api-reference/messages/mark-a-message-as-read.md): Show the contact blue ticks for a message they sent you, and optionally a typing indicator (up to 25 seconds, or until you reply). In 1:1 chats earlier messages are marked read too; in groups each message is marked on its own. WhatsApp accepts read receipts for 30 days. - [List contacts](https://docs.lazyapp.in/api-reference/contacts/list-contacts.md): Newest first. - [Create or update a contact](https://docs.lazyapp.in/api-reference/contacts/create-or-update-a-contact.md): Upserts on whichever identifier you supply: phone number, BSUID or external id. At least one is required. - [Retrieve a contact](https://docs.lazyapp.in/api-reference/contacts/retrieve-a-contact.md): By LazyApp uuid or phone number. Includes `service_window` so you can choose text or template before sending. - [Update a contact](https://docs.lazyapp.in/api-reference/contacts/update-a-contact.md): Only the fields you send change. - [Merge two contacts](https://docs.lazyapp.in/api-reference/contacts/merge-two-contacts.md): Folds the `source` contact into this one. Merging is deliberate and irreversible: identifiers, conversations and consent move across. - [Suppress a contact](https://docs.lazyapp.in/api-reference/contacts/suppress-a-contact.md): Records an opt-out. Suppressed contacts are excluded from broadcasts and marketing sends for the given purpose. - [Record contact consent](https://docs.lazyapp.in/api-reference/contacts/record-contact-consent.md): Record consent collected outside LazyApp — for example from a website opt-in box. Marketing broadcasts refuse recipients without granted consent. - [Bulk import contacts](https://docs.lazyapp.in/api-reference/contacts/bulk-import-contacts.md): Upsert up to 1000 contacts in one request. - [Attach tags](https://docs.lazyapp.in/api-reference/contacts/attach-tags.md): Attach tags by uuid or name (names are created if missing). - [Detach tags](https://docs.lazyapp.in/api-reference/contacts/detach-tags.md): Detach tags by uuid or name. - [List tags](https://docs.lazyapp.in/api-reference/contacts/list-tags.md): **Required scope:** `messages:read` - [Create a tag](https://docs.lazyapp.in/api-reference/contacts/create-a-tag.md): **Required scope:** `messages:send` - [List contact segments](https://docs.lazyapp.in/api-reference/contacts/list-contact-segments.md): **Required scope:** `messages:read` - [Create a contact segment](https://docs.lazyapp.in/api-reference/contacts/create-a-contact-segment.md): **Required scope:** `messages:send` - [Retrieve a contact segment](https://docs.lazyapp.in/api-reference/contacts/retrieve-a-contact-segment.md): **Required scope:** `messages:read` - [Delete a contact segment](https://docs.lazyapp.in/api-reference/contacts/delete-a-contact-segment.md): **Required scope:** `messages:send` - [Update a contact segment](https://docs.lazyapp.in/api-reference/contacts/update-a-contact-segment.md): **Required scope:** `messages:send` - [Acknowledge an identity change](https://docs.lazyapp.in/api-reference/contacts/acknowledge-an-identity-change.md): Confirm you re-verified the contact after `contact.identity_changed`. Clears the stored hash so the next message goes without one; WhatsApp's reply teaches the new hash. - [Check the contact book](https://docs.lazyapp.in/api-reference/contacts/check-the-contact-book.md): Whether Meta's contact book holds this contact's phone number (by their BSUID). - [Remove from the contact book](https://docs.lazyapp.in/api-reference/contacts/remove-from-the-contact-book.md): Remove the contact from Meta's contact book, for example for a data-deletion request. `204` whether or not an entry existed. - [List conversations](https://docs.lazyapp.in/api-reference/conversations/list-conversations.md): Most recently active first. - [Retrieve a conversation](https://docs.lazyapp.in/api-reference/conversations/retrieve-a-conversation.md): By conversation id. - [Update a conversation](https://docs.lazyapp.in/api-reference/conversations/update-a-conversation.md): Assign it to a team member, set its status, replace its tags, or set the workspace-level `archived` / `pinned` flags. Only the fields you send change. Assigning starts `human_assignment` workflows, and resolving or closing starts `conversation_closed` ones, exactly as in the inbox. - [List messages in a conversation](https://docs.lazyapp.in/api-reference/conversations/list-messages-in-a-conversation.md): Newest first. - [Show typing indicator](https://docs.lazyapp.in/api-reference/conversations/show-typing-indicator.md): Queues a Meta typing indicator for the latest inbound message in the conversation. - [List internal notes](https://docs.lazyapp.in/api-reference/conversations/list-internal-notes.md): Agent-only notes on the conversation, newest first. Never sent to the contact. - [Add an internal note](https://docs.lazyapp.in/api-reference/conversations/add-an-internal-note.md): Leave context for the agent who picks the conversation up, such as a bot's triage summary. Agents see it in the inbox; the contact never does. - [List calls](https://docs.lazyapp.in/api-reference/calls/list-calls.md): Newest first. Call history from WhatsApp webhooks — not a live answer API. - [Start a call or ask permission to call](https://docs.lazyapp.in/api-reference/calls/start-a-call-or-ask-permission-to-call.md): Two kinds of request. - [Retrieve a call](https://docs.lazyapp.in/api-reference/calls/retrieve-a-call.md): By LazyApp call uuid. - [Check call permission](https://docs.lazyapp.in/api-reference/calls/check-call-permission.md): Whether the business may call this person now, straight from Meta. `can_call` and `can_request_permission` are the plain answers; `actions` is Meta's detail with the limits left. - [Pre-accept a call](https://docs.lazyapp.in/api-reference/calls/pre-accept-a-call.md): Send your SDP answer so the media path is ready before the caller hears anything. Then call accept with the same answer. - [Accept a call](https://docs.lazyapp.in/api-reference/calls/accept-a-call.md): Answer a ringing customer-initiated call with the same SDP answer you pre-accepted. Optionally record or transcribe it. - [Decline a call](https://docs.lazyapp.in/api-reference/calls/decline-a-call.md): Decline a ringing customer-initiated call. The terminal status arrives on the webhook. - [End a call](https://docs.lazyapp.in/api-reference/calls/end-a-call.md): End a call in either direction. Call it even after your media path hung up: Meta prices calls from this signal. - [Download a call recording](https://docs.lazyapp.in/api-reference/calls/download-a-call-recording.md): The recording LazyApp downloaded from Meta (`audio/ogg`, Opus). - [Get calling settings](https://docs.lazyapp.in/api-reference/calls/get-calling-settings.md): The number's calling settings from Meta. SIP passwords are never returned. - [Update calling settings](https://docs.lazyapp.in/api-reference/calls/update-calling-settings.md): Send Meta's `calling` object. Only the fields you send change; Meta replaces `call_hours` wholesale. Enabling calling turns on the connection's `calling` capability. - [List groups](https://docs.lazyapp.in/api-reference/groups/list-groups.md): Newest first. Requires the `groups` capability before create or refresh; listing returns groups already stored for the workspace. - [Create a group](https://docs.lazyapp.in/api-reference/groups/create-a-group.md): Create a WhatsApp group through Meta and store a local mirror. Requires `groups: true` on the connection. Coexistence numbers cannot use Meta's Groups API. - [Retrieve a group](https://docs.lazyapp.in/api-reference/groups/retrieve-a-group.md): One group by LazyApp uuid. Pass `refresh=true` to pull subject, description, participant count, and suspension state from Meta. Refresh requires `groups: true`. - [Delete a group](https://docs.lazyapp.in/api-reference/groups/delete-a-group.md): Deletes the group for everyone, including you. Shows `deleting` until Meta confirms. - [Update a group](https://docs.lazyapp.in/api-reference/groups/update-a-group.md): Change the subject and/or description. Meta confirms each part on `group.updated`. - [Check group eligibility](https://docs.lazyapp.in/api-reference/groups/check-group-eligibility.md): Groups need an Official Business Account on a Cloud API number. Reads Meta's flag and switches the `groups` and `messages.group` capabilities to match. - [Load groups from WhatsApp](https://docs.lazyapp.in/api-reference/groups/load-groups-from-whatsapp.md): Pull every active group Meta lists for the number into LazyApp. - [Change the group photo](https://docs.lazyapp.in/api-reference/groups/change-the-group-photo.md): A square JPEG, at least 192 × 192 pixels, at most 5 MB. - [Get the invite link](https://docs.lazyapp.in/api-reference/groups/get-the-invite-link.md): The link people tap to join. - [Reset the invite link](https://docs.lazyapp.in/api-reference/groups/reset-the-invite-link.md): Makes a new link; every old link stops working. - [List group members](https://docs.lazyapp.in/api-reference/groups/list-group-members.md): From Meta's participant webhooks. `refresh=1` re-reads the list from Meta first. - [Remove group members](https://docs.lazyapp.in/api-reference/groups/remove-group-members.md): Removed people cannot rejoin with the invite link. - [List join requests](https://docs.lazyapp.in/api-reference/groups/list-join-requests.md): For groups with `approval_required`. Refreshed from Meta on each call. - [Approve join requests](https://docs.lazyapp.in/api-reference/groups/approve-join-requests.md): Meta answers per request; partial failures are listed in `failed` with a plain message. - [Reject join requests](https://docs.lazyapp.in/api-reference/groups/reject-join-requests.md): Meta answers per request; partial failures are listed in `failed` with a plain message. - [Pin or unpin a message](https://docs.lazyapp.in/api-reference/groups/pin-or-unpin-a-message.md): Pin for 1–30 days. Only three messages can be pinned; a fourth unpins the oldest. - [List templates](https://docs.lazyapp.in/api-reference/templates/list-templates.md): Includes status and rejection reasons. - [Create a template](https://docs.lazyapp.in/api-reference/templates/create-a-template.md): Creates a template and, with `submit: true`, submits it to Meta for review. Names must be lowercase snake case and unique per language. - [Sync templates from Meta](https://docs.lazyapp.in/api-reference/templates/sync-templates-from-meta.md): Pulls the current template list and statuses from Meta into LazyApp. Use after editing templates in Business Manager. - [Retrieve a template](https://docs.lazyapp.in/api-reference/templates/retrieve-a-template.md): By uuid or name. - [Delete a template](https://docs.lazyapp.in/api-reference/templates/delete-a-template.md): Deletes at Meta and marks the local record deleted. - [List starter template sets](https://docs.lazyapp.in/api-reference/templates/list-starter-template-sets.md): The template sets this installation can apply when creating a setup link. Use the `key` as `template_set` on `POST /v1/platform/setup-links`. - [Search the template library](https://docs.lazyapp.in/api-reference/templates/search-the-template-library.md): Meta's ready-made utility and authentication templates. Create one with `POST /v1/templates` and `library_template_name`. - [Upload a header sample](https://docs.lazyapp.in/api-reference/templates/upload-a-header-sample.md): Uploads the sample Meta reviews for a media header or carousel card. Send the returned `handle` as `header.example_handle` or `carousel_cards[].example_handle`. The sample is for review only; you pass the real media when you send. - [Create a login code template in many languages](https://docs.lazyapp.in/api-reference/templates/create-a-login-code-template-in-many-languages.md): Creates or updates one authentication template in up to 50 languages in a single call. - [Copy templates from another WhatsApp account](https://docs.lazyapp.in/api-reference/templates/copy-templates-from-another-whatsapp-account.md): Copies approved templates from another WhatsApp Business Account owned by the same Meta business into this workspace's account. Run `POST /v1/templates/sync` afterwards to see them. - [Unpause a template](https://docs.lazyapp.in/api-reference/templates/unpause-a-template.md): Asks Meta to make a paused template sendable again. Meta allows this only once the pause period has passed. - [Compare two templates](https://docs.lazyapp.in/api-reference/templates/compare-two-templates.md): Compares sends and block rates of two approved templates over the last 7, 30, 60 or 90 days. Needs template results turned on in the console. - [List template groups](https://docs.lazyapp.in/api-reference/templates/list-template-groups.md): Named sets of templates whose results Meta reports together. - [Create a template group](https://docs.lazyapp.in/api-reference/templates/create-a-template-group.md): Creates the group at Meta with the given templates. - [Delete a template group](https://docs.lazyapp.in/api-reference/templates/delete-a-template-group.md): Deletes the group at Meta. The templates stay. - [Update a template group](https://docs.lazyapp.in/api-reference/templates/update-a-template-group.md): Renames the group, or adds and removes templates. - [List media](https://docs.lazyapp.in/api-reference/media/list-media.md): Newest first. - [Upload media](https://docs.lazyapp.in/api-reference/media/upload-media.md): Multipart upload. The file is virus-scanned and MIME-checked, images are optimised, and a thumbnail is generated. - [Import media from a URL](https://docs.lazyapp.in/api-reference/media/import-media-from-a-url.md): LazyApp fetches the URL and uploads the bytes to Meta, so you do not have to proxy the file yourself. - [Retrieve media metadata](https://docs.lazyapp.in/api-reference/media/retrieve-media-metadata.md): Accepts the LazyApp uuid or Meta's media id. Reading is recorded in the asset's access history. - [Delete media](https://docs.lazyapp.in/api-reference/media/delete-media.md): Deletes the provider copy and any retained bytes. The access history survives, including this deletion. - [List broadcasts](https://docs.lazyapp.in/api-reference/broadcasts/list-broadcasts.md): Newest first. - [Create a broadcast](https://docs.lazyapp.in/api-reference/broadcasts/create-a-broadcast.md): Target either a saved segment or an explicit list of phone numbers. Opt-outs and frequency caps are enforced when the broadcast runs, not when it is created. - [Retrieve a broadcast](https://docs.lazyapp.in/api-reference/broadcasts/retrieve-a-broadcast.md): Includes send statistics. - [Start a broadcast](https://docs.lazyapp.in/api-reference/broadcasts/start-a-broadcast.md): Begins sending a draft or scheduled broadcast. - [Add broadcast recipients](https://docs.lazyapp.in/api-reference/broadcasts/add-broadcast-recipients.md): Append phone numbers to a draft or scheduled broadcast without wiping existing recipients. - [List events](https://docs.lazyapp.in/api-reference/events/list-events.md): Business events you have sent, newest first. - [Send an event](https://docs.lazyapp.in/api-reference/events/send-an-event.md): Events map to templates, so your application can say *what happened* and let LazyApp decide which template to send. `type` accepts the built-in library plus any event you have defined in the workspace. - [Replay an event](https://docs.lazyapp.in/api-reference/events/replay-an-event.md): Re-dispatches a past event under a fresh idempotency key, so a delivery that failed for a transient reason can be retried. - [Ingest an event from an external system](https://docs.lazyapp.in/api-reference/events/ingest-an-event-from-an-external-system.md): A generic ingress for third-party systems. The body is passed to workflows as the trigger payload, filtered by `source`, so an automation can be authored against whatever your CRM or storefront sends. - [List event-to-template mappings](https://docs.lazyapp.in/api-reference/events/list-event-to-template-mappings.md): Returns every mapping that resolves `POST /v1/events` types to templates for this workspace. - [Provision event-to-template mappings](https://docs.lazyapp.in/api-reference/events/provision-event-to-template-mappings.md): Create or update mappings from a named pack (for example `real_estate`) or an explicit `mappings` list. Pass exactly one of `pack` or `mappings`. - [Provision an automation pack](https://docs.lazyapp.in/api-reference/events/provision-an-automation-pack.md): Provisions event-to-template mappings, starter workflows and WhatsApp Flows for a vertical pack such as `real_estate`. Sections can be skipped with `include_events`, `include_workflows` and `include_flows`. - [List event definitions](https://docs.lazyapp.in/api-reference/events/list-event-definitions.md): The event types this workspace has defined, newest first. - [Define an event type](https://docs.lazyapp.in/api-reference/events/define-an-event-type.md): Creates or replaces a workspace event type, so `POST /v1/events` accepts it and checks its `properties`. Idempotent by type, and brings an archived type back. Namespace your types (`clinic.appointment_booked`) so several products can share a workspace. - [Archive an event type](https://docs.lazyapp.in/api-reference/events/archive-an-event-type.md): `POST /v1/events` refuses the type from now on. Its past events stay in the history. - [List flows](https://docs.lazyapp.in/api-reference/flows/list-flows.md): Newest first. - [Create a flow](https://docs.lazyapp.in/api-reference/flows/create-a-flow.md): Creates a WhatsApp Flow from a Flow JSON definition. Supply `data_endpoint_uri` for a dynamic flow. - [Retrieve a flow](https://docs.lazyapp.in/api-reference/flows/retrieve-a-flow.md): By uuid. - [Update a draft flow](https://docs.lazyapp.in/api-reference/flows/update-a-draft-flow.md): Replace a draft's name, categories, Flow JSON or data endpoint. Published flows answer `422` with `code` `flow_not_editable`: duplicate them instead. When this update adds the flow's first `data_endpoint_uri`, the response also carries its `endpoint_secret`, once. - [Delete a draft flow](https://docs.lazyapp.in/api-reference/flows/delete-a-draft-flow.md): Deletes a draft at Meta and in LazyApp. Published flows answer `422` with `code` `flow_not_deletable`: deprecate them instead. - [Publish a flow](https://docs.lazyapp.in/api-reference/flows/publish-a-flow.md): A published flow can be attached to templates and sent. - [Deprecate a flow](https://docs.lazyapp.in/api-reference/flows/deprecate-a-flow.md): Stops the flow being sent again. Sessions already open continue. - [List flow responses](https://docs.lazyapp.in/api-reference/flows/list-flow-responses.md): Submissions from users who completed the flow. - [Check data endpoint health](https://docs.lazyapp.in/api-reference/flows/check-data-endpoint-health.md): Probes your flow's data endpoint and reports whether it responded correctly. - [List flow starters](https://docs.lazyapp.in/api-reference/flows/list-flow-starters.md): Built-in Flow starter templates. - [Create flow from starter](https://docs.lazyapp.in/api-reference/flows/create-flow-from-starter.md): Materialise a starter into a draft flow. - [Duplicate a flow](https://docs.lazyapp.in/api-reference/flows/duplicate-a-flow.md): Clone a flow into a new editable draft. - [Check a flow can be sent](https://docs.lazyapp.in/api-reference/flows/check-a-flow-can-be-sent.md): Asks Meta whether this flow can be sent from your number, and what blocks it. Stored on the flow as `can_send_message`. - [Copy flows from another number](https://docs.lazyapp.in/api-reference/flows/copy-flows-from-another-number.md): Copies flows from another connection's WhatsApp Business account into the workspace's default account, through Meta's flow migration. Both accounts must belong to the same Meta business. Copies keep their names and status. - [Rotate a flow's data-endpoint signing secret](https://docs.lazyapp.in/api-reference/flows/rotate-a-flows-data-endpoint-signing-secret.md): Replaces the secret LazyApp signs forwarded `data_exchange` requests with, and returns the new one. The old secret stops verifying at once, so deploy the new one first if you can. Refused with `flow_has_no_data_endpoint` for a flow without a `data_endpoint_uri`. - [List webhook endpoints](https://docs.lazyapp.in/api-reference/webhooks/list-webhook-endpoints.md): Including paused ones. - [Create a webhook endpoint](https://docs.lazyapp.in/api-reference/webhooks/create-a-webhook-endpoint.md): Registers an https endpoint. Leave `subscribed_events` empty to receive every event. The signing secret is returned once, on creation. - [List webhook deliveries](https://docs.lazyapp.in/api-reference/webhooks/list-webhook-deliveries.md): Delivery attempts with response codes and errors, for debugging your receiver. - [Delete a webhook endpoint](https://docs.lazyapp.in/api-reference/webhooks/delete-a-webhook-endpoint.md): Stops all deliveries to it. - [Update a webhook endpoint](https://docs.lazyapp.in/api-reference/webhooks/update-a-webhook-endpoint.md): Change the URL, events, headers, number restrictions or retry policy in place. Only the fields you send change. The signing secret and any queued retries are kept, which deleting and registering the endpoint again would lose. - [Send a test webhook delivery](https://docs.lazyapp.in/api-reference/webhooks/send-a-test-webhook-delivery.md): Queues a signed test payload to the endpoint so you can verify URL, headers, and signature handling. The body is marked `test: true` and must never be treated as production traffic. - [Resume a paused webhook endpoint](https://docs.lazyapp.in/api-reference/webhooks/resume-a-paused-webhook-endpoint.md): Starts delivering to an endpoint again after it was auto-paused for repeated failures. - [Rotate a webhook signing secret](https://docs.lazyapp.in/api-reference/webhooks/rotate-a-webhook-signing-secret.md): Issues a new signing secret without deleting the endpoint. The new `secret` is shown once — store it before the response is gone. - [List workflows](https://docs.lazyapp.in/api-reference/workflows/list-workflows.md): Automations defined in the workspace, newest first. - [Retrieve a workflow](https://docs.lazyapp.in/api-reference/workflows/retrieve-a-workflow.md): Including the published version. - [List workflow executions](https://docs.lazyapp.in/api-reference/workflows/list-workflow-executions.md): Newest first. - [Trigger a workflow](https://docs.lazyapp.in/api-reference/workflows/trigger-a-workflow.md): Starts the published version for one contact. The body becomes the trigger payload available to the workflow's nodes. - [Send a one-time passcode](https://docs.lazyapp.in/api-reference/verify/send-a-one-time-passcode.md): In `managed` mode (the default) LazyApp generates, hashes, sends and later verifies the code. In `delivery_only` mode you supply `code` and verify it yourself. - [Verify a one-time passcode](https://docs.lazyapp.in/api-reference/verify/verify-a-one-time-passcode.md): Checks a code against an outstanding challenge, identified by `id` or by `to`. Attempts are limited and a verified challenge cannot be replayed. Repeated wrong codes lock the number for an hour: while it is locked even the right code is refused with `otp_locked`, and no new code can be sent. - [List connection capabilities](https://docs.lazyapp.in/api-reference/capabilities/list-connection-capabilities.md): What each connected number supports. Features Meta gates per account — calling, block lists, India payments — report `false` until Meta enables them for you, so check here rather than hard-coding assumptions. - [List catalog products](https://docs.lazyapp.in/api-reference/catalog/list-catalog-products.md): Proxy Meta Commerce catalog products for a connection that has `catalog_id` set. This reads Meta directly. To cache the catalog locally, use `POST /v1/catalog/sync`. - [Sync catalog products](https://docs.lazyapp.in/api-reference/catalog/sync-catalog-products.md): Pull the connection's Meta catalog into a local cache that lasts one hour. Requires `catalog_id` and `commerce.catalog_sync` (on by default; turn it off per connection with capability overrides). - [Retrieve shop settings](https://docs.lazyapp.in/api-reference/catalog/retrieve-shop-settings.md): The catalog, storefront icon, cart and catalog link of a number. - [Update shop settings](https://docs.lazyapp.in/api-reference/catalog/update-shop-settings.md): Connect a catalog, show the storefront icon, turn the cart on or off, or forward orders. Only the fields you send change. - [Add, change or remove products](https://docs.lazyapp.in/api-reference/catalog/add-change-or-remove-products.md): Up to 5,000 product changes per call. LazyApp queues them and sends them through Meta's Catalog Batch API in chunks; the response is the queued batch. Poll `GET /v1/catalog/batches/{batch}` for the result and the rows Meta refused. See [Manage products](/sending/catalog-inventory). - [Read a catalog change](https://docs.lazyapp.in/api-reference/catalog/read-a-catalog-change.md): Where a catalog change is, and every row Meta refused with a plain reason. `queued` and `processing` mean Meta has not finished; poll every few seconds. - [Retrieve funding status](https://docs.lazyapp.in/api-reference/funding/retrieve-funding-status.md): Local funding row for one WhatsApp Business Account. `status` is `funded`, `pending`, `unknown`, `not_funded`, or `revoked`. `reason` `not_attached` means no Meta credit line is configured. - [Record funding](https://docs.lazyapp.in/api-reference/funding/record-funding.md): Record local funding for a WhatsApp Business Account under a business portfolio. Does not call Meta's credit-line API until a credit line is configured. A new run that is not funded returns `202`. A repeat within 30 seconds reuses the last operation and returns `200`. A revoked account, or a portfol… - [Retrieve account usage](https://docs.lazyapp.in/api-reference/funding/retrieve-account-usage.md): LazyApp's recorded charges for one WhatsApp Business Account, at most 31 days. Amounts are micro-USD (`total_charge` × 1,000,000). `time_basis` is `recorded_at`. `charge_scope` is `lazyapp_recorded_charges`. Calling is covered only when every visible account currency is USD. - [List portfolio accounts](https://docs.lazyapp.in/api-reference/funding/list-portfolio-accounts.md): Cursor list of funding rows for a business portfolio. The first page of an unknown portfolio returns `404`. - [Retrieve portfolio usage](https://docs.lazyapp.in/api-reference/funding/retrieve-portfolio-usage.md): Same usage window as the account route, summed across accounts in the portfolio. - [Revoke portfolio funding](https://docs.lazyapp.in/api-reference/funding/revoke-portfolio-funding.md): Mark the portfolio revoked, pause paid messages, and queue the stop. This does not call Meta and does not detach a credit line. Returns `202`. A later ensure on a revoked account returns `409`. - [Retrieve a funding operation](https://docs.lazyapp.in/api-reference/funding/retrieve-a-funding-operation.md): Status of an ensure or revoke operation for this portfolio. - [List customers](https://docs.lazyapp.in/api-reference/platform/list-customers.md): Newest first, cursor-paginated. Filter by `external_id` to find a customer by your own id. - [Create a customer](https://docs.lazyapp.in/api-reference/platform/create-a-customer.md): Creates an isolated workspace for one of your customers. - [Retrieve a customer](https://docs.lazyapp.in/api-reference/platform/retrieve-a-customer.md): Includes connections and usage. - [Delete a customer](https://docs.lazyapp.in/api-reference/platform/delete-a-customer.md): Irreversible. Prefer archiving unless you must erase the workspace. - [Update a customer](https://docs.lazyapp.in/api-reference/platform/update-a-customer.md): Only the fields you send change. - [Suspend a customer](https://docs.lazyapp.in/api-reference/platform/suspend-a-customer.md): Blocks sending immediately while keeping the workspace and its data. - [Restore a customer](https://docs.lazyapp.in/api-reference/platform/restore-a-customer.md): Lifts a suspension or un-archives. - [Archive a customer](https://docs.lazyapp.in/api-reference/platform/archive-a-customer.md): Retires the workspace without deleting it. Reversible via restore. - [Issue an API key for a customer](https://docs.lazyapp.in/api-reference/platform/issue-an-api-key-for-a-customer.md): Mints a key scoped to that customer's workspace. The plaintext is returned once. Pass `scopes` to narrow access; omit it to grant the defaults for a customer-scoped key. - [Retrieve customer usage](https://docs.lazyapp.in/api-reference/platform/retrieve-customer-usage.md): Message counts and charges for one billing period, broken down by day, category, region, number and template. - [List setup links](https://docs.lazyapp.in/api-reference/platform/list-setup-links.md): Including expired and revoked links. Page-numbered, like the customer list. - [Create a setup link](https://docs.lazyapp.in/api-reference/platform/create-a-setup-link.md): A one-time URL your customer opens to connect their WhatsApp account via Embedded Signup. You never handle their credentials. - [Revoke a setup link](https://docs.lazyapp.in/api-reference/platform/revoke-a-setup-link.md): The URL stops working immediately. - [Create an embed token](https://docs.lazyapp.in/api-reference/platform/create-an-embed-token.md): A short-lived, origin-locked token for one embedded component and one customer. Mint it server-side and hand it to your frontend; never expose your API key. - [Revoke an embed token](https://docs.lazyapp.in/api-reference/platform/revoke-an-embed-token.md): Invalidates it before its expiry. - [Send a message (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/send-a-message-meta-shape.md): Meta-shaped endpoint for migrating an existing Cloud API integration. Point your base URL at LazyApp, swap the token for a LazyApp API key, and keep your request and response handling. Errors are returned in Meta's error envelope. - [Upload media (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/upload-media-meta-shape.md): Meta-shaped endpoint for migrating an existing Cloud API integration. Point your base URL at LazyApp, swap the token for a LazyApp API key, and keep your request and response handling. Errors are returned in Meta's error envelope. - [Retrieve media (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/retrieve-media-meta-shape.md): Meta-shaped media metadata. `media` is a LazyApp media uuid or a Meta media id. This returns metadata, not the file bytes. - [Delete media (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/delete-media-meta-shape.md): Delete a media asset by uuid or Meta media id. - [Retrieve business profile (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/retrieve-business-profile-meta-shape.md): Meta-shaped business profile stored for this phone number. - [Update business profile (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/update-business-profile-meta-shape.md): Update one or more of `about`, `address`, `description`, `email`, `vertical`, and `websites`. - [Block users (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/block-users-meta-shape.md): Block users on this phone number. `block_users` is a list of `{ "user": "+91..." }` objects or phone strings. Requires the `block_users` capability. - [Unblock users (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/unblock-users-meta-shape.md): Unblock users on this phone number. Same `block_users` body as block. - [List templates (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/list-templates-meta-shape.md): Meta-shaped endpoint for migrating an existing Cloud API integration. Point your base URL at LazyApp, swap the token for a LazyApp API key, and keep your request and response handling. Errors are returned in Meta's error envelope. - [Create a template (Meta shape)](https://docs.lazyapp.in/api-reference/meta-compatible-proxy/create-a-template-meta-shape.md): Meta-shaped endpoint for migrating an existing Cloud API integration. Point your base URL at LazyApp, swap the token for a LazyApp API key, and keep your request and response handling. Errors are returned in Meta's error envelope. - [List blocked users](https://docs.lazyapp.in/api-reference/connections/list-blocked-users.md): One page of the number's block list, read from Meta. - [Block users](https://docs.lazyapp.in/api-reference/connections/block-users.md): Block people so they cannot message this number, and you cannot message them. WhatsApp only blocks someone who messaged you in the last 24 hours; up to 1,000 per request, 64,000 on the list. The response lists per-person `failures` with plain messages. - [Unblock users](https://docs.lazyapp.in/api-reference/connections/unblock-users.md): Unblock phone numbers on this connection. - [Retrieve business profile](https://docs.lazyapp.in/api-reference/connections/retrieve-business-profile.md): Cached WhatsApp business profile for the connection. - [Update business profile](https://docs.lazyapp.in/api-reference/connections/update-business-profile.md): Update profile fields and sync to Meta. - [Connection insights](https://docs.lazyapp.in/api-reference/connections/connection-insights.md): Live Meta quality, limits, and profile insights (cached ~5 minutes). - [List connections](https://docs.lazyapp.in/api-reference/connections/list-connections.md): Every WhatsApp number this key may use, with LazyApp’s stored status, quality and limits. No Meta call. - [Get a connection](https://docs.lazyapp.in/api-reference/connections/get-a-connection.md): The stored record plus Meta’s live view (display name review, blue tick, phone status), cached for five minutes. - [Check sending health](https://docs.lazyapp.in/api-reference/connections/check-sending-health.md): Meta’s `health_status` for the number: one overall answer (`AVAILABLE`, `LIMITED`, `BLOCKED`) and one entry per node (number, WhatsApp account, business, app) with Meta’s suggested fix. Cached for five minutes. - [Get the WhatsApp account](https://docs.lazyapp.in/api-reference/connections/get-the-whatsapp-account.md): The WhatsApp Business Account behind the number, and every number on it (`connected` says whether it is already in this workspace). - [Update the WhatsApp account](https://docs.lazyapp.in/api-reference/connections/update-the-whatsapp-account.md): Rename the account (only you see it) or set its time zone using Meta’s numeric `timezone_id`. Meta does not allow a time zone change once a partner credit line pays for the account. - [Add a number to the account](https://docs.lazyapp.in/api-reference/connections/add-a-number-to-the-account.md): Creates a new number on the same WhatsApp account and a LazyApp connection for it in `phone_registration_pending`. Next: `request-code`, `verify-code`, `register`. - [Connect another number on the account](https://docs.lazyapp.in/api-reference/connections/connect-another-number-on-the-account.md): Brings a number that already exists on the same WhatsApp account into this workspace, using the access LazyApp already has. - [Send a verification code](https://docs.lazyapp.in/api-reference/connections/send-a-verification-code.md): Meta texts or calls the number with a 6-digit code. A number that is already verified answers `meta.code` 136024. - [Verify the code](https://docs.lazyapp.in/api-reference/connections/verify-the-code.md): Submits the code Meta sent. `123-456` and `123456` both work. - [Register the number](https://docs.lazyapp.in/api-reference/connections/register-the-number.md): Registers the number on the Cloud API with its two-step PIN (or sets a new PIN on a number that has none). Also required after Meta approves a new display name. Meta allows 10 register or deregister calls per number in 72 hours. - [Deregister the number](https://docs.lazyapp.in/api-reference/connections/deregister-the-number.md): Stops the number working on the Cloud API until it is registered again. Not allowed for numbers also used in the WhatsApp Business app. - [Change the two-step PIN](https://docs.lazyapp.in/api-reference/connections/change-the-two-step-pin.md): Sets a new 6-digit two-step verification PIN. There is no way to turn two-step verification off. - [Request a new display name](https://docs.lazyapp.in/api-reference/connections/request-a-new-display-name.md): Sends a new display name for Meta’s review (10 changes per 30 days). Customers keep seeing the old name until it is approved; then register the number again within 14 days. - [Upload a profile photo](https://docs.lazyapp.in/api-reference/connections/upload-a-profile-photo.md): Sets the WhatsApp profile photo. JPG or PNG, at least 192 × 192 pixels, up to 5 MB. - [Get blue tick status](https://docs.lazyapp.in/api-reference/connections/get-blue-tick-status.md): Official Business Account (blue tick) status, plus a checklist of Meta’s requirements LazyApp can see. - [Apply for the blue tick](https://docs.lazyapp.in/api-reference/connections/apply-for-the-blue-tick.md): Submits an Official Business Account request. Supporting links are optional, but Meta wants 5 to 10 when given. A refused request can be sent again after 30 days. - [List QR codes](https://docs.lazyapp.in/api-reference/connections/list-qr-codes.md): QR codes and short links that open a chat with this number and a message already typed (up to 2,000 per number). - [Create a QR code](https://docs.lazyapp.in/api-reference/connections/create-a-qr-code.md): Creates a QR code and short link with a prefilled message of up to 140 characters. - [Delete a QR code](https://docs.lazyapp.in/api-reference/connections/delete-a-qr-code.md): The link stops working. - [Change a QR code message](https://docs.lazyapp.in/api-reference/connections/change-a-qr-code-message.md): Changes the prefilled message; the link and image stay the same. - [Get conversation starters](https://docs.lazyapp.in/api-reference/connections/get-conversation-starters.md): Ice breakers (tappable first messages) and slash commands shown in the chat. - [Replace conversation starters](https://docs.lazyapp.in/api-reference/connections/replace-conversation-starters.md): Replaces all ice breakers (up to 4, 80 characters) and commands (up to 30). No emoji. Send empty arrays to clear. - [List opt-in links](https://docs.lazyapp.in/api-reference/connections/list-opt-in-links.md): In-App Signup links on the number’s WhatsApp account, each with its `wa.me/{number}/signup/{id}` link. - [Create an opt-in link](https://docs.lazyapp.in/api-reference/connections/create-an-opt-in-link.md): Creates a link people tap to subscribe inside WhatsApp. Set `accept_terms: true` on your first link to accept Meta’s terms. `{{promo_code}}` is the only placeholder allowed in `confirmation_message`. Not available in the EEA, UK, Brazil, Japan, South Korea, Nigeria, South Africa or Turkey. - [Update an opt-in link](https://docs.lazyapp.in/api-reference/connections/update-an-opt-in-link.md): Change wording, promo code or website, or turn the link off (`status: DISABLED`). Links cannot be deleted, and the privacy policy link cannot change. - [Get the identity check](https://docs.lazyapp.in/api-reference/connections/get-the-identity-check.md): Whether the identity change check is on for this number. - [Turn the identity check on or off](https://docs.lazyapp.in/api-reference/connections/turn-the-identity-check-on-or-off.md): With it on, WhatsApp refuses delivery (error `137000`) when a contact's identity changed, LazyApp holds further sends (`identity_changed`) and fires `contact.identity_changed`. - [Get storage settings](https://docs.lazyapp.in/api-reference/connections/get-storage-settings.md): Where Meta stores this number's message content, read live from Meta. - [Change storage settings](https://docs.lazyapp.in/api-reference/connections/change-storage-settings.md): Switch between default storage, local storage in one country, and no storage. WhatsApp only changes this on an unregistered number, so LazyApp deregisters, changes it and registers again (usually under five minutes). If WhatsApp refuses, the number is registered again with its old setting. - [List ad welcome messages](https://docs.lazyapp.in/api-reference/connections/list-ad-welcome-messages.md): Click-to-WhatsApp welcome message sequences on this number's WhatsApp Business Account. - [Create an ad welcome message](https://docs.lazyapp.in/api-reference/connections/create-an-ad-welcome-message.md): Use the returned `sequence_id` in Ads Manager (Partner app) or as `partner_app_welcome_message_flow_id` in a Marketing API ad creative. - [Update an ad welcome message](https://docs.lazyapp.in/api-reference/connections/update-an-ad-welcome-message.md): A sequence used by a running ad cannot be changed. - [Delete an ad welcome message](https://docs.lazyapp.in/api-reference/connections/delete-an-ad-welcome-message.md): A sequence used by a running ad cannot be deleted. - [List pricing rates](https://docs.lazyapp.in/api-reference/billing/list-pricing-rates.md): Country/category message rates. - [Retrieve pricing facts](https://docs.lazyapp.in/api-reference/billing/retrieve-pricing-facts.md): Billing currency, primary business location, authentication-international eligibility and this month's volume tiers for a number's WhatsApp account. - [List volume tiers](https://docs.lazyapp.in/api-reference/billing/list-volume-tiers.md): Meta's volume tiers for utility and authentication. - [Retrieve a currency change](https://docs.lazyapp.in/api-reference/billing/retrieve-a-currency-change.md): The billing currency change in progress, from Meta. - [Start a currency change](https://docs.lazyapp.in/api-reference/billing/start-a-currency-change.md): Change the WhatsApp billing currency of a customer-managed account. Meta copies the account into one in the new currency. - [Finish a currency change](https://docs.lazyapp.in/api-reference/billing/finish-a-currency-change.md): Finish once the status is `READY_TO_COMPLETE`. LazyApp then moves the numbers to the new account. - [Messaging analytics](https://docs.lazyapp.in/api-reference/analytics/messaging-analytics.md): Workspace message aggregates for the last N days. - [Read WhatsApp analytics](https://docs.lazyapp.in/api-reference/analytics/read-whatsapp-analytics.md): WhatsApp's own counts for a number's WhatsApp account. See the [analytics guide](/guides/whatsapp-analytics). - [Turn on template insights](https://docs.lazyapp.in/api-reference/analytics/turn-on-template-insights.md): Turn on per-template analytics for the WhatsApp account. Meta cannot turn this off again. - [Read Click-to-WhatsApp ad results](https://docs.lazyapp.in/api-reference/analytics/read-click-to-whatsapp-ad-results.md): Chats, leads, purchases and revenue per ad or campaign, from Meta's webhooks. With an ad account connected in the console and Meta's `ads_read` permission, also the ad and campaign names, spend and cost per result, refreshed daily. Amounts are minor units. See [Ad results](/guides/ad-results). - [List payments](https://docs.lazyapp.in/api-reference/payments/list-payments.md): Payment requests in this workspace, newest first. Cursor-paginated. - [Send a payment request](https://docs.lazyapp.in/api-reference/payments/send-a-payment-request.md): Send an order details message with a **Review and pay** button. Amounts are paise. See the [payments guide](/guides/payments-india). - [Retrieve a payment](https://docs.lazyapp.in/api-reference/payments/retrieve-a-payment.md): One payment. - [Update the order status](https://docs.lazyapp.in/api-reference/payments/update-the-order-status.md): Send an `order_status` update. WhatsApp only allows forward moves. - [Look up a payment](https://docs.lazyapp.in/api-reference/payments/look-up-a-payment.md): Ask WhatsApp for the latest state. `payment_gateway` payments only. - [Refund a payment](https://docs.lazyapp.in/api-reference/payments/refund-a-payment.md): Refund up to what was paid. - [List payment setups](https://docs.lazyapp.in/api-reference/payments/list-payment-setups.md): Payment setups (Meta payment configurations) on the number's WhatsApp account. - [Create a payment setup](https://docs.lazyapp.in/api-reference/payments/create-a-payment-setup.md): Link a payment gateway or a UPI ID to the WhatsApp account. A gateway setup comes back with a `link_url` to approve. - [Delete a payment setup](https://docs.lazyapp.in/api-reference/payments/delete-a-payment-setup.md): Remove the setup from WhatsApp. - [Update a payment setup](https://docs.lazyapp.in/api-reference/payments/update-a-payment-setup.md): Set the data endpoint for checkout coupons and shipping. Meta enables this per business. - [Get a new linking page](https://docs.lazyapp.in/api-reference/payments/get-a-new-linking-page.md): A fresh gateway linking page for a setup that still needs one. - [List gateway accounts](https://docs.lazyapp.in/api-reference/payments/list-gateway-accounts.md): Your own payment gateway accounts. Keys are never returned. - [Add a gateway account](https://docs.lazyapp.in/api-reference/payments/add-a-gateway-account.md): Store your Cashfree or Razorpay keys. LazyApp checks them with the gateway and stores them encrypted. - [Delete a gateway account](https://docs.lazyapp.in/api-reference/payments/delete-a-gateway-account.md): Forget the keys. - [Create a payment template](https://docs.lazyapp.in/api-reference/payments/create-a-payment-template.md): Create an order details, order status or checkout button template. Send `header_media` as multipart for `checkout`. ## OpenAPI Specs - [openapi](/api-reference/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.