Build on Visito with one API

Message customers on WhatsApp, Instagram, Messenger and web chat, connect your AI agent to your systems, and get signed webhooks when anything changes.

REST and JSON. OpenAPI definition. MCP server for Claude, ChatGPT and Codex. Available on Starter and Pro.

POST /conversations/{conversationId}/reply

BASE_URL=https://platform-api.visitoai.com/m2m/v1curl "$BASE_URL/conversations/$CONVERSATION_ID/reply" \  -H "Authorization: Bearer $VISITO_API_KEY" \  -H "Idempotency-Key: order-A-1003-shipped" \  -H "Content-Type: application/json" \  -d '{"text": "Your order A-1003 is out for delivery."}'# 202 Accepted{  "accepted": true,  "replyId": "reply_8f2c",  "status": "queued"}

Everything in Visito, available to your code

Six building blocks cover messaging, the AI agent, your team, revenue, channels and events.

Power your AI agent

Feed it your knowledge and let it call your backend for live answers.

See all endpoints

Hand off to your team

Pause the AI, assign a person and give the chat back once it is solved.

See all endpoints

Sync sales and bookings

Move opportunities, follow-ups, orders and reservations between Visito and your systems.

See all endpoints

Manage every channel

Check WhatsApp health, update your business profile and switch auto replies per channel.

Webhook events

  • message.created
  • message.delivery.updated
  • conversation.handoff.updated
  • ticket.created
  • ticket.updated
  • crm.opportunity.created
  • crm.opportunity.updated

The WhatsApp API, built in

Send campaigns, updates and replies on WhatsApp from your own code, and let your AI agent answer back.

  • Send marketing campaigns

    Create marketing templates, get them approved by Meta and send promotions to opted-in customers from your backend.

  • Automate notifications

    Send order updates, reminders and confirmations with utility templates the moment something happens in your system.

  • Start conversations your agent finishes

    Open a WhatsApp conversation from your code. When the customer replies, your AI agent takes it from there.

  • Respect opt-outs automatically

    Customers who reply STOP are flagged and Visito blocks further sends, even if your own list is out of date.

Put the pieces together

Most integrations combine a webhook, a read and a write.

Answer from your own helpdesk

  1. 1A message.created webhook tells your system a customer wrote in.
  2. 2Read the transcript and assign the right operator.
  3. 3Reply from your tool with an Idempotency-Key.
  4. 4Resolve the handoff so the AI takes over again.
# 1{ "type": "message.created", "data": { "conversationId": "conv_123", "direction": "inbound" } }# 2GET /conversations/conv_123/messages?limit=20PUT /conversations/conv_123/assignment{ "operatorId": "op_456" }# 3POST /conversations/conv_123/replyIdempotency-Key: evt_789-reply{ "text": "Your order A-1003 is out for delivery." }# 4POST /conversations/conv_123/handoff/resolve{ "resolutionNote": "Refund approved by the support team." }

Use Visito from Claude, ChatGPT and Codex

Connect the Visito MCP server and work with your conversations, tickets and settings in plain language.

MCP server

https://platform-api.visitoai.com/m2m/v1/mcp

  • Sign in, no keys in chat

    You connect with OAuth in the browser. No password or API key is pasted into a conversation.

  • An admin approves access

    Choose Read or Read & write for each area, the same permissions as API keys.

  • The whole API as tools

    Read a business overview, find conversations, explain an answer and manage tickets.

# Add the server, then sign in with your Visito admin accountcodex mcp add visito \  --url https://platform-api.visitoai.com/m2m/v1/mcpcodex mcp login visito

Try asking

  • What did customers ask about most this week?
  • Which conversations are still waiting for a reply?
  • Why did the agent give this answer?

Building with an AI coding assistant?

Give it the OpenAPI definition and the AI coding assistants guide, so it uses real endpoints and the right retry rules.

Built for production traffic

Permissions, retries and failures behave the same way everywhere in the API.

Least-privilege keys

Each key belongs to one business. Choose No access, Read or Read & write per area, set an expiry and revoke any time.

Safe retries

Sends require an Idempotency-Key. Retrying returns the original request instead of messaging the customer twice.

Tracked delivery

Sends return 202 Accepted right away. Follow each one through to delivered, read or failed.

No silent overwrites

CRM, ticket and action updates need the current revision. A stale write gets a 409 instead of replacing someone’s change.

Signed webhooks

HMAC-SHA256 signatures with timestamps, at-least-once delivery and six automatic retries over 24 hours.

People decide on money

Refunds and payouts always need a human admin, whatever permissions a key has.

Keys, webhooks and logs in one place

Your team manages API access and checks every send from the Developers area of the Visito dashboard.

API keys and apps

Keys and connected AI assistants in one list, with permissions, status and when each was last used.

Webhooks

Every endpoint with its events, who manages it and how the latest delivery went.

WhatsApp templates

A log of every template request, with its request status, delivery status and conversation.

Make your first call in four steps

From a new key to a tracked reply.

  1. 1

    Create a key

    In Developers, create a key with only the permissions you need. Keep it on your server.

  2. 2

    Find your channels

    List channels and store the ID of the one you want to use.

  3. 3

    See what is waiting

    List the conversations that need a reply.

  4. 4

    Reply and track it

    Send a reply with an Idempotency-Key, then check its status.

https://platform-api.visitoai.com/m2m/v1

# 1export VISITO_API_KEY="visito_m2m_..."export BASE_URL=https://platform-api.visitoai.com/m2m/v1# 2curl "$BASE_URL/channels" \  -H "Authorization: Bearer $VISITO_API_KEY"# 3curl "$BASE_URL/conversations?view=needs_reply&limit=25" \  -H "Authorization: Bearer $VISITO_API_KEY"# 4curl "$BASE_URL/conversations/$CONVERSATION_ID/reply" \  -H "Authorization: Bearer $VISITO_API_KEY" \  -H "Idempotency-Key: first-reply-001" \  -H "Content-Type: application/json" \  -d '{"text": "Your order A-1003 is out for delivery."}'curl "$BASE_URL/message-requests/$REQUEST_EVENT_ID/status" \  -H "Authorization: Bearer $VISITO_API_KEY"

Questions about the Visito API

Start building with the Visito API

Create your account, generate a key and make your first call today.