Integration

WATI integration

WATI is a WhatsApp Business platform (with Instagram and Messenger channels). Send template messages and broadcasts, reply in open 24-hour conversations with text, files, buttons and lists, manage contacts, segments, tags, teams and chatbots, create and delete templates, read call logs with recordings and transcripts, answer Instagram comments, read sales pipeline analytics and manage webhook subscriptions. Not exposed: token rotation, the private-beta WhatsApp Pay routes, the two direct-send routes whose message body the vendor leaves undocumented, and legacy V1/V2 routes that a V3 route fully replaces. Authentication is an API token from the WATI dashboard (API page) sent as Authorization: Bearer <token>, plus your tenant id (the number in your API endpoint URL) for the legacy routes.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in WATI.Built from the 78 WATI tools below, on the connection you add once.

What you can do with WATI

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Contact, 6 operations

  • add_contactAdd contactPOSTAdd a contact by WhatsApp number and name, with optional custom attributes. Scope contactsv3:write.
  • delete_contactDelete contactDELETESoft-delete a contact (it is not a GDPR erasure). Scope contactsv3:write.
  • get_contactGet contactGETGet one contact: phone, name, opt-in and broadcast flags, teams, segments, custom attributes and linked Instagram/Messenger contacts. Scope contactsv3:read.
  • list_contactsList contactsGETList the workspace contacts, page by page: id, phone, name, opt-in, teams, segments and custom attributes. Scope contactsv3:read.
  • search_contacts_v1Search contacts v1GETLegacy V1 contact list: unlike list_contacts, filters by name, created date and custom attribute conditions. Scope contacts:read.
  • update_contactsUpdate contactsPUTSet custom attributes on one or more contacts: each entry names its target and the customParams to write. Scope contactsv3:write.

Message template, 6 operations

  • create_templateCreate templatePOSTCreate a WhatsApp message template. WhatsApp reviews it, and only an approved template can be sent. Scope messagetemplate:write.
  • delete_templateDelete templateDELETEDelete a message template in every language it exists in. Scope messagetemplate:write.
  • delete_template_languageDelete template languageDELETEDelete one language version of a message template; other languages are kept. Scope messagetemplate:write.
  • get_message_templateGet message templateGETGet one message template by id, with its components, variables and status. Scope messagetemplatev3:read.
  • list_message_templatesList message templatesGETList the WhatsApp message templates of a channel: id, name, category, status, language and content. Template names feed send_template_messages. Scope messagetemplatev3:read.
  • list_templates_v2List templates v2GETLegacy V2 template list: unlike list_message_templates, filters by template name and WhatsApp Business Account (wabaId), and returns the raw template fields. Scope messagetemplatev2:read.

Webhook, 5 operations

  • create_webhooksCreate webhooksPOSTCreate webhook subscriptions (url, eventTypes, status 1 = enabled, channel phoneNumber). WATI documents no signing secret, so deliveries cannot be verified; the url must answer 200. Scope webhooks:create.
  • delete_webhookDelete webhookDELETEDelete a webhook subscription. Scope webhooks:write.
  • get_webhookGet webhookGETGet one webhook subscription. Scope webhooks:read.
  • list_webhooksList webhooksGETList the webhook subscriptions: url, status, event types and channel phone number. Scope webhooks:read.
  • update_webhookUpdate webhookPUTUpdate a webhook subscription. Only url is required by the vendor; send eventTypes and status read from get_webhook too, so they stay as you expect. Scope webhooks:write.

File message, 4 operations

  • send_fileSend filePOSTSend an uploaded file (image, audio, video, document) with an optional caption in an open conversation. Sends at once. Scope conversationsv3:write.
  • send_file_via_urlSend file via urlPOSTSend a file from a public URL (image, audio, video, document) with an optional caption in an open conversation. Sends at once. Scope conversationsv3:write.
  • send_session_file_v1Send session file v1POSTLegacy V1 file send in an open session: unlike send_file, can send audio as a WhatsApp voice note (voice true, audio/ogg). Sends at once. Scope conversations:write.
  • send_session_file_via_url_v1Send session file via url v1POSTLegacy V1 file send from a URL in an open session: unlike send_file_via_url, can send audio as a voice note (voice true, audio/ogg). Sends at once. Scope conversations:write.

Segment, 4 operations

  • create_custom_segmentCreate custom segmentPOSTCreate a contact segment from filter groups or an explicit contactIds list (Pro and Business plans). Scope wati_integration:write.
  • evaluate_segmentEvaluate segmentPOSTPreview which contacts a set of segment filter groups matches, without saving a segment. Scope segmentsv3:read.
  • get_segmentGet segmentGETGet one segment with its filter groups and contact counts. Scope segmentsv3:read.
  • list_segmentsList segmentsGETList contact segments with their size, status and refresh type; filter by source or text. Scope segmentsv3:read.

Broadcast, 3 operations

  • get_broadcastGet broadcastGETGet one broadcast (campaign) with its delivery statistics: recipients, queued, sent, delivered, read, replied and failed counts. Scope campaignsv3:read.
  • list_broadcastsList broadcastsGETList the broadcasts (campaigns) of a channel with status, template and schedule. Scope campaignsv3:read.
  • schedule_broadcast_v1Schedule broadcast v1POSTLegacy V1: schedule a template broadcast to receivers at scheduledAt (sends then; each message costs credits). Unlike schedule_template_messages, accepts quick-reply bot reactions. Scope messagetemplate:write.

Message, 3 operations

  • get_message_by_local_idGet message by local idGETGet one message by the localMessageId you gave it when sending, with its final text, status and failure detail. Scope conversations:read.
  • list_messagesList messagesGETList the messages of a conversation, page by page: text, type, status, sender and timestamps. Scope conversationsv3:read.
  • list_messages_v1List messages v1GETLegacy V1 message history of a contact: unlike list_messages, filters by a from/to UTC time range and returns the V1 message fields. Scope conversations:read.

Phone number, 3 operations

  • get_phone_number_profileGet phone number profileGETGet the details of one WhatsApp phone number: verified name, status, quality, messaging tier and review status. Scope whatsappaccountsv2:read.
  • list_whatsapp_phone_numbersList whatsapp phone numbersGETList the WhatsApp phone numbers of the workspace with display number, verified name, quality rating, messaging tier and wabaId. Scope whatsappaccounts:read.
  • list_whatsapp_phone_numbers_v2List whatsapp phone numbers v2GETV2 phone number list for multi-number workspaces: unlike list_whatsapp_phone_numbers, returns each number's channelId and channelName. Scope whatsappaccountsv2:read.

Template message, 3 operations

  • schedule_template_messagesSchedule template messagesPOSTSchedule an approved template for 1 to 10,000 recipients at scheduled_at (sent then; each message costs credits). Returns broadcast_id, usable with delete_scheduled_broadcast. Scope messagetemplatev3:write.
  • send_template_messagesSend template messagesPOSTSend an approved template to 1 to 10,000 recipients now (each message costs credits: see estimate_broadcast_cost). Works outside the 24-hour window. Returns broadcast_id; delivery comes by webhook. Scope messagetemplatev3:write.
  • send_template_messages_csvSend template messages csvPOSTSend an approved template to every WhatsApp number in an uploaded CSV file, now, as a named broadcast (each message costs credits). Scope messagetemplate:write.

Call recording, 2 operations

  • batch_get_call_recordingsBatch get call recordingsPOSTGet the recordings of up to 100 calls at once, like get_call_recording for each; ids not found are listed in not_found. Scope callsv3:read.
  • get_call_recordingGet call recordingGETGet a call recording's status, file details and a temporary download link (download.url, valid link_expires_in_seconds). Scope callsv3:read.

Call summary, 2 operations

  • batch_get_call_summariesBatch get call summariesPOSTGet the summaries of up to 100 calls at once, like get_call_summary for each; ids not found are listed in not_found. Scope callsv3:read.
  • get_call_summaryGet call summaryGETGet the summary of a call. Scope callsv3:read.

Call transcript, 2 operations

  • batch_get_call_transcriptsBatch get call transcriptsPOSTGet the transcripts of up to 100 calls at once, like get_call_transcript for each; ids not found are listed in not_found. Scope callsv3:read.
  • get_call_transcriptGet call transcriptGETGet a call's transcript: each speaker turn with start and end time and text. Scope callsv3:read.

Chatbot, 2 operations

  • list_chatbotsList chatbotsGETList the chatbots of the workspace (Pro and Business plans): id, name and creation date. Scope chatbotsv3:read.
  • start_chatbotStart chatbotPOSTStart a chatbot flow with a contact now (Pro and Business plans); the bot begins messaging them. Scope chatbotsv3:write.

Conversation tag, 2 operations

  • add_conversation_tagAdd conversation tagPOSTApply an existing tag to a conversation. Idempotent; it does not create new tag definitions. Scope conversationsv3:write.
  • remove_conversation_tagRemove conversation tagDELETERemove a tag from a conversation. Removing a tag that is not applied succeeds and does nothing. Scope conversationsv3:write.

Instagram comment, 2 operations

  • list_instagram_post_commentsList instagram post commentsGETList the comments of an Instagram post with their replies, author and unread flag. Comment ids feed reply_to_instagram_comment. Scope instagramv3:read.
  • reply_to_instagram_commentReply to instagram commentPOSTPost a public reply to an Instagram comment, now. Scope instagramv3:write.

Instagram post, 2 operations

  • get_instagram_postGet instagram postGETGet one Instagram post: caption, media type, permalink, comment and like counts. Scope instagramv3:read.
  • list_instagram_postsList instagram postsGETList the posts of an Instagram channel with caption, thumbnail, time and unread comment count. Scope instagramv3:read.

Text message, 2 operations

  • send_session_message_v1Send session message v1POSTLegacy V1 text message in an open 24-hour session: unlike send_text_message, can quote an earlier message (replyContextId) and tag it with your localMessageId. Sends at once. Scope conversations:write.
  • send_text_messageSend text messagePOSTSend a text message in an open conversation (the contact wrote in the last 24 hours; otherwise use send_template_messages). Sends at once. Scope conversationsv3:write.

Broadcast cost, 1 operation

  • estimate_broadcast_costEstimate broadcast costPOSTEstimate what sending one template to a list of contacts would cost, against the current credit. Sends nothing. Scope campaignsv3:read.

Broadcast overview, 1 operation

  • get_broadcasts_overviewGet broadcasts overviewGETGet broadcast totals for a date range: sent, delivered, opened, replied, failed, queued and sending counts. Scope campaignsv3:read.

Broadcast recipient, 1 operation

  • list_broadcast_recipientsList broadcast recipientsGETList the recipients of a broadcast with each one's delivery status, failure code and message id. Scope campaignsv3:read.

Broadcast retry, 1 operation

  • enable_broadcast_retryEnable broadcast retryPOSTTurn on auto-retry for a broadcast (campaign), for retryDays (1 to 7) after it ends or until retryUntil.

Call, 1 operation

  • list_callsList callsGETList WhatsApp call logs, filtered by direction, operator, duration or date range. Scope callsv3:read.

Channel, 1 operation

  • list_channelsList channelsGETList the channels connected to the workspace (WhatsApp, Instagram, Messenger): each id, name and channel type. Scope channelsv3:read.

Contact count, 1 operation

  • get_contact_countGet contact countGETCount the workspace contacts, optionally only those created within a date range. Scope contactsv3:read.

Contact team, 1 operation

  • assign_contact_teamsAssign contact teamsPUTAssign a contact to teams by name. Scope contactsv3:write.

Conversation operator, 1 operation

  • assign_conversation_operatorAssign conversation operatorPUTAssign a conversation to a team member by email. Scope conversationsv3:write.

Conversation status, 1 operation

  • update_conversation_statusUpdate conversation statusPUTSet a conversation's status: open, solved or pending. Scope conversationsv3:write.

Conversation team, 1 operation

  • assign_conversation_teamsAssign conversation teamsPOSTLegacy V1 counterpart of assign_contact_teams: assign a chat to one or more teams by name; WATI documents that it removes every team the chat had (Pro and Business plans). Give whatsappNumber or target. Scope wati_integration:write.

Credit, 1 operation

  • get_account_creditsGet account creditsGETGet the WATI account balance: credit, welcome credit, remaining free conversations, currency and whether auto-charge is on. Scope accountv3:read.

Cta url message, 1 operation

  • send_cta_url_messageSend cta url messagePOSTSend a message with one call-to-action button that opens a URL (buttonText, buttonUrl), in an open session. Sends at once.

Instagram channel permission, 1 operation

  • get_instagram_channel_permissionsGet instagram channel permissionsGETCheck whether an Instagram channel has the permissions needed to read and answer comments, and which scopes are missing. Scope instagramv3:read.

Instagram private reply, 1 operation

  • send_instagram_private_replySend instagram private replyPOSTSend a private Instagram message to the author of a comment, now: type text with text, or type template with template. Scope instagramv3:write.

Instagram unread count, 1 operation

  • get_instagram_post_unread_countGet instagram post unread countGETGet the number of unread comments on an Instagram post. Scope instagramv3:read.

Interactive message, 1 operation

  • send_interactive_messageSend interactive messagePOSTSend a reply-buttons or list message in an open conversation: type buttons with button_message, or type list with list_message. Sends at once. Scope conversationsv3:write.

Lead stage, 1 operation

  • list_lead_stagesList lead stagesGETList the sales pipeline lead stages: id, label, color and order. Scope salesanalyticsv3:read.

Media file, 1 operation

  • get_media_by_file_nameGet media by file nameGETDownload a media file by its WATI file name (for example data/images/<name>.jpg, as found in V1 message data). Returns a stored file. Scope media:get.

Message file, 1 operation

  • get_message_fileGet message fileGETDownload the media file (image, audio, video, document) of a message. Returns a stored file. Scope conversationsv3:read.

Sales pipeline, 1 operation

  • get_sales_pipelineGet sales pipelinePOSTGet the sales pipeline for a UTC date range: win rate and the count per stage, optionally for some agents or stages. Reads only. Scope salesanalyticsv3:read.

Scheduled broadcast, 1 operation

  • delete_scheduled_broadcastDelete scheduled broadcastDELETEDelete a scheduled broadcast (campaign) before it is sent.

Typing indicator, 1 operation

  • send_typing_indicatorSend typing indicatorPOSTShow a typing bubble to the contact for up to 25 seconds (or until you reply); also marks their last message as read. Needs the typing indicator feature and Team Inbox setting on.

Webhook event type, 1 operation

  • list_webhook_event_typesList webhook event typesGETList the webhook event types available to this workspace (feature-gated values may vary), as accepted in eventTypes. Scope webhooks:read.

Whatsapp business account, 1 operation

  • list_whatsapp_business_accountsList whatsapp business accountsGETList the WhatsApp Business Accounts (WABA) of the workspace: id (the wabaId other tools take), name, review and verification status, messaging limit. Scope whatsappaccounts:read.

Use WATI from Claude Code, Cursor or Codex

Connect WATI in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its WATI operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect WATI

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect WATI once

    Add your WATI connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

WATI integration FAQ

What can you do with the WATI integration?

LiveContext exposes 78 operations on WATI, covering contact, message template, webhook and file message.

Popular integrations

Browse the whole catalog