Construye sobre Visito con una sola API
Escribe a tus clientes por WhatsApp, Instagram, Messenger y chat web, conecta tu agente de IA a tus sistemas y recibe webhooks firmados cuando algo cambie.
REST y JSON. Definición OpenAPI. Servidor MCP para Claude, ChatGPT y Codex. Disponible en los planes Starter y 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": "Tu pedido A-1003 ya va en camino."}'# 202 Accepted{ "accepted": true, "replyId": "reply_8f2c", "status": "queued"}Todo Visito, disponible para tu código
Seis bloques cubren mensajes, el agente de IA, tu equipo, ventas, canales y eventos.
Envía y recibe mensajes
Responde por WhatsApp, Instagram, Messenger y chat web, y sigue cada mensaje hasta que se lea.
Ver todos los endpoints
- GET
/conversationsListar conversaciones con paginación por cursor - GET
/conversations/{conversationId}Leer los datos de una conversación - GET
/conversations/{conversationId}/messagesListar los mensajes de una conversación - POST
/conversations/{conversationId}/replyPoner en cola una respuesta en una conversación - GET
/whatsapp-templates/{channelId}Listar las plantillas de un canal de WhatsApp - POST
/whatsapp-templates/{channelId}Crear una plantilla de WhatsApp para revisión de Meta - POST
/whatsapp-templates/{channelId}/sendPoner en cola una plantilla de WhatsApp aprobada - GET
/messages/{messageId}/statusConsultar el estado de entrega de un mensaje - GET
/message-requests/{requestEventId}/statusConsultar el estado de una solicitud de envío - GET
/conversations/start/whatsapp-template-statusConsultar si se puede iniciar una conversación - POST
/conversations/startIniciar una conversación - POST
/conversations/{conversationId}/readMarcar una conversación como leída - POST
/conversations/{conversationId}/needs-reply/resolveMarcar que una conversación ya no necesita respuesta - GET
/conversations/{conversationId}/messages/{messageId}/attachments/{attachmentIndex}Revisar un archivo adjunto de un mensaje
Impulsa tu agente de IA
Dale tu conocimiento y deja que consulte tu backend para responder con datos en tiempo real.
Ver todos los endpoints
- GET
/knowledge/sourcesListar las fuentes de conocimiento - GET
/knowledge/sources/{sourceId}Leer una fuente de conocimiento - DELETE
/knowledge/sources/{sourceId}Eliminar una fuente de conocimiento - GET
/knowledge/usageConsultar el uso del conocimiento - GET
/knowledge/url/crawl/{jobId}Consultar el estado de un rastreo - POST
/knowledge/textAgregar conocimiento en texto - POST
/knowledge/fileSubir un archivo de conocimiento - POST
/knowledge/urlAgregar conocimiento desde una URL - GET
/knowledge/url/crawlListar los rastreos de sitios web - POST
/knowledge/url/crawlIniciar el rastreo de un sitio web - PATCH
/knowledge/sources/{sourceId}/activeActivar o desactivar una fuente de conocimiento - GET
/actionsListar las acciones configuradas - POST
/actionsCrear una acción - GET
/actions/{actionId}Leer la definición de una acción - DELETE
/actions/{actionId}Eliminar una acción HTTP - GET
/action-executionsListar las ejecuciones de acciones - GET
/action-executions/{executionId}Leer una ejecución de una acción - GET
/actions/configurationsListar las configuraciones de acciones - GET
/actions/{actionId}/configurationLeer la configuración de una acción - PATCH
/actions/{actionId}/configurationActualizar la configuración de una acción - PATCH
/actions/{actionId}/stateCambiar la disponibilidad de una acción - POST
/actions/{actionId}/lifecyclePublicar, pausar o archivar una acción de recopilación - POST
/actions/{actionId}/testProbar una acción HTTP con una solicitud real - GET
/actions/http/diagnosticsListar los diagnósticos de acciones HTTP - GET
/actions/http/diagnostics/{diagnosticId}Leer un diagnóstico de una acción HTTP - GET
/conversations/{conversationId}/messages/{messageId}/traceRevisar por qué la IA dio una respuesta - GET
/knowledge/itemsListar fuentes de conocimiento y sitios web - POST
/knowledge/sources/searchBuscar en el conocimiento activo - GET
/knowledge/chunks/{chunkId}Revisar un fragmento de conocimiento indexado - GET
/knowledge/sources/{sourceId}/original-fileObtener el archivo original de una fuente - PATCH
/knowledge/sources/{sourceId}/propertyCambiar a qué negocio aplica una fuente - GET
/knowledge/websitesListar los sitios web de conocimiento - POST
/knowledge/websitesCrear y rastrear un sitio web de conocimiento - GET
/knowledge/websites/{websiteId}Revisar un sitio web y sus páginas seleccionadas - DELETE
/knowledge/websites/{websiteId}Eliminar un sitio web de conocimiento y sus páginas - POST
/knowledge/websites/{websiteId}/recrawlActualizar un sitio web de conocimiento - POST
/knowledge/websites/{websiteId}/fit-selectionAjustar las páginas seleccionadas a la cuota - PATCH
/knowledge/websites/{websiteId}/selectionActivar o desactivar páginas de un sitio web - PATCH
/knowledge/websites/{websiteId}/propertyCambiar a qué negocio aplica un sitio web - PATCH
/knowledge/sources/{sourceId}/sharingPermitir o impedir que la IA comparta un archivo - GET
/knowledge/asset-foldersListar las carpetas de archivos compartibles - POST
/knowledge/asset-foldersCrear una carpeta de archivos compartibles - PATCH
/knowledge/asset-folders/{folderId}Editar cómo se comparte una carpeta - DELETE
/knowledge/asset-folders/{folderId}Eliminar una carpeta y sus archivos - PATCH
/knowledge/sources/{sourceId}/folderMover un archivo a una carpeta o sacarlo - PUT
/knowledge/asset-folders/{folderId}/orderOrdenar los archivos de una carpeta - GET
/settings/ai/system-promptLeer el tono, la personalidad y las instrucciones de la IA - PUT
/settings/ai/system-promptCambiar el tono, la personalidad y las instrucciones de la IA - GET
/settings/ai/asset-sharingLeer el límite de fotos por respuesta - PUT
/settings/ai/asset-sharingCambiar el límite de fotos por respuesta - GET
/settings/ai/handoff-policyLeer las reglas de escalamiento y el horario de atención - PUT
/settings/ai/handoff-policyCambiar las reglas de escalamiento
Pasa el chat a tu equipo
Pausa la IA, asigna a una persona y devuelve el chat cuando esté resuelto.
Ver todos los endpoints
- GET
/conversations/assignable-operatorsListar las personas disponibles para asignar - GET
/conversations/{conversationId}/policyLeer el modo de una conversación - PATCH
/conversations/{conversationId}/policyPausar la IA, archivar o bloquear una conversación - PUT
/conversations/{conversationId}/assignmentAsignar una conversación - GET
/conversations/{conversationId}/handoffsListar las transferencias de una conversación - POST
/conversations/{conversationId}/handoff/resolveResolver una transferencia - POST
/conversations/{conversationId}/reviewCrear una revisión de una conversación - PUT
/conversations/{conversationId}/review/assignmentAsignar una revisión - POST
/conversations/{conversationId}/review/resolveResolver una revisión - GET
/conversations/{conversationId}/handoffs/{caseId}/eventsListar el historial de una transferencia o revisión - GET
/ticketsListar tickets y escalamientos - POST
/ticketsCrear un ticket vinculado a una conversación - GET
/tickets/{ticketId}Leer un ticket o escalamiento - PATCH
/tickets/{ticketId}Editar un ticket abierto - GET
/tickets/{ticketId}/eventsLeer el historial y las notas internas de un ticket - GET
/tickets/requests/{requestId}Confirmar la creación de un ticket - PUT
/tickets/{ticketId}/assignmentAsignar o desasignar un ticket - POST
/tickets/{ticketId}/notesAgregar una nota interna a un ticket - POST
/tickets/{ticketId}/startEmpezar a trabajar en un ticket - POST
/tickets/{ticketId}/resolveResolver un ticket - POST
/tickets/{ticketId}/cancelCancelar un ticket - POST
/escalationsPasar una conversación a una persona - PUT
/escalations/{ticketId}/assignmentAsignar un escalamiento - POST
/escalations/{ticketId}/notesAgregar una nota a un escalamiento - POST
/escalations/{ticketId}/startEmpezar a trabajar en un escalamiento - POST
/escalations/{ticketId}/resolveResolver un escalamiento
Sincroniza ventas y reservas
Mueve oportunidades, seguimientos, pedidos y reservas entre Visito y tus sistemas.
Ver todos los endpoints
- GET
/commerce/itemsListar los productos y servicios - POST
/commerce/itemsCrear un producto o servicio - GET
/commerce/items/{itemId}Leer un producto o servicio - PATCH
/commerce/items/{itemId}Actualizar un producto o servicio - DELETE
/commerce/items/{itemId}Eliminar un producto o servicio - PATCH
/commerce/items/{itemId}/propertyAsignar un producto a un negocio - GET
/commerce/salesListar las ventas - GET
/commerce/sales/{saleId}Leer una venta - GET
/crm/sales/configurationLeer la configuración del CRM de ventas - GET
/crm/sales/opportunitiesListar las oportunidades de venta - GET
/crm/sales/opportunities/{opportunityId}Leer una oportunidad de venta - PATCH
/crm/sales/opportunities/{opportunityId}Actualizar una oportunidad de venta - GET
/crm/sales/opportunities/{opportunityId}/contactLeer el contacto de una oportunidad - GET
/crm/sales/opportunities/{opportunityId}/follow-upsListar los seguimientos de una oportunidad - GET
/crm/follow-upsListar los seguimientos - POST
/crm/follow-upsCrear un seguimiento - PATCH
/crm/follow-ups/{followUpId}Actualizar un seguimiento - POST
/crm/follow-ups/{followUpId}/dismissDescartar un seguimiento - POST
/crm/follow-ups/{followUpId}/cancelCancelar un seguimiento - POST
/crm/follow-ups/{followUpId}/sendEnviar un seguimiento - GET
/crm/follow-up-settingsLeer la configuración de seguimientos - PATCH
/crm/follow-up-settingsCambiar la configuración de seguimientos - GET
/reservationsListar las reservas - GET
/conversations/{conversationId}/reservationsListar las reservas de una conversación - GET
/reservations/readinessConsultar si los mensajes de reserva están listos - GET
/reservations/sync/receiptsListar los registros de sincronización de reservas - GET
/reservations/lifecycle/attemptsListar los intentos de mensajes de reserva - GET
/reservations/lifecycle/eventsLeer la configuración de mensajes de reserva - PUT
/reservations/lifecycle/integrations/{integrationId}/events/{eventType}Activar o desactivar un mensaje de reserva - PUT
/reservations/lifecycle/integrations/{integrationId}/senderElegir el número que envía los mensajes de reserva - PATCH
/commerce/sales/{saleId}/fulfillmentActualizar el cumplimiento de una compra - POST
/commerce/sales/{saleId}/reconciliationRegistrar una conciliación no financiera
Gestiona cada canal
Revisa el estado de WhatsApp, actualiza tu perfil de empresa y activa respuestas automáticas por canal.
Ver todos los endpoints
- GET
/channelsListar los canales - GET
/propertiesListar los negocios - GET
/properties/{propertyId}Leer un negocio - PATCH
/channels/{channelId}/respond-enabledActivar o desactivar las respuestas automáticas - GET
/channels/connection-optionsConsultar las formas de conectar un canal - POST
/channels/connection-attemptsCrear un enlace temporal para conectar un canal - GET
/channels/connection-attempts/{attemptId}Consultar el progreso de una conexión - GET
/channels/{channelId}Leer la configuración de un canal - PATCH
/channels/{channelId}Activar o configurar un canal - DELETE
/channels/{channelId}Desconectar un canal - GET
/channels/{channelId}/whatsapp/healthRevisar el estado de WhatsApp - GET
/channels/{channelId}/webchatLeer la instalación y configuración del chat web - GET
/channels/{channelId}/whatsapp/profileLeer el perfil de empresa de WhatsApp - PATCH
/channels/{channelId}/whatsapp/profileActualizar el perfil de empresa de WhatsApp - GET
/channels/{channelId}/whatsapp/manager-linkObtener instrucciones para WhatsApp Manager - POST
/channels/{channelId}/refresh-tokenRenovar el token de Instagram - POST
/channels/{channelId}/whatsapp/coexistence/recheckVolver a revisar la activación en coexistencia - POST
/channels/{channelId}/whatsapp/reconcileRevisar o reparar la conexión de WhatsApp - GET
/channels/{channelId}/instagram/history-importConsultar la importación del historial de Instagram - GET
/channels/{channelId}/messenger/history-importConsultar la importación del historial de Messenger - GET
/business/overviewLeer un resumen del negocio
Reacciona a cada evento
Recibe un webhook firmado en cuanto cambia un mensaje, una transferencia, un ticket o una venta.
Ver todos los endpoints
- GET
/reporting/summaryConsultar el resumen de mensajes - GET
/webhooksListar los webhooks - POST
/webhooksCrear un webhook - GET
/webhooks/{subscriptionId}Leer un webhook - PATCH
/webhooks/{subscriptionId}Actualizar un webhook - DELETE
/webhooks/{subscriptionId}Eliminar un webhook - POST
/webhooks/{subscriptionId}/rotate-secretRotar el secreto de firma de un webhook - GET
/webhooks/{subscriptionId}/deliveriesListar las entregas de un webhook - GET
/webhooks/{subscriptionId}/deliveries/{deliveryId}Leer una entrega de un webhook - POST
/webhooks/{subscriptionId}/deliveries/{deliveryId}/retryReintentar una entrega de un webhook
Eventos de webhook
- message.created
- message.delivery.updated
- conversation.handoff.updated
- ticket.created
- ticket.updated
- crm.opportunity.created
- crm.opportunity.updated
La API de WhatsApp, integrada
Envía campañas, avisos y respuestas por WhatsApp desde tu propio código, y deja que tu agente de IA conteste.
Envía campañas de marketing
Crea plantillas de marketing, consigue la aprobación de Meta y envía promociones a clientes que aceptaron recibirlas desde tu backend.
Automatiza notificaciones
Envía avisos de pedidos, recordatorios y confirmaciones con plantillas de utilidad en cuanto algo pasa en tu sistema.
Inicia conversaciones que termina tu agente
Abre una conversación de WhatsApp desde tu código. Cuando el cliente responde, tu agente de IA sigue desde ahí.
Respeta las bajas automáticamente
Los clientes que responden STOP quedan marcados y Visito bloquea nuevos envíos, aunque tu lista no esté al día.
Combina las piezas
La mayoría de las integraciones combinan un webhook, una lectura y una escritura.
Responde desde tu propia herramienta de soporte
- 1Un webhook message.created avisa a tu sistema que un cliente escribió.
- 2Lee la conversación y asigna al operador indicado.
- 3Responde desde tu herramienta con un Idempotency-Key.
- 4Resuelve la transferencia para que la IA retome la conversación.
# 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": "Tu pedido A-1003 ya va en camino." }# 4POST /conversations/conv_123/handoff/resolve{ "resolutionNote": "Reembolso aprobado por el equipo de soporte." }Usa Visito desde Claude, ChatGPT y Codex
Conecta el servidor MCP de Visito y trabaja con tus conversaciones, tickets y ajustes en lenguaje natural.
Servidor MCP
https://platform-api.visitoai.com/m2m/v1/mcp
Inicia sesión, sin claves en el chat
Te conectas con OAuth en el navegador. No pegas contraseñas ni claves de API en la conversación.
Un administrador aprueba el acceso
Elige Lectura o Lectura y escritura para cada área, con los mismos permisos que las claves de API.
Toda la API como herramientas
Lee un resumen del negocio, busca conversaciones, explica una respuesta y gestiona tickets.
# Agrega el servidor y luego inicia sesión con tu cuenta de administrador de Visitocodex mcp add visito \ --url https://platform-api.visitoai.com/m2m/v1/mcpcodex mcp login visitoPrueba a preguntar
- ¿Qué preguntaron más los clientes esta semana?
- ¿Qué conversaciones siguen esperando respuesta?
- ¿Por qué el agente dio esta respuesta?
¿Trabajas con un asistente de programación con IA?
Dale la definición OpenAPI y la guía para asistentes de programación, para que use endpoints reales y las reglas de reintento correctas.
Lista para tráfico en producción
Los permisos, los reintentos y los errores funcionan igual en toda la API.
Claves con el acceso justo
Cada clave pertenece a un negocio. Elige Sin acceso, Lectura o Lectura y escritura por área, define una fecha de vencimiento y revócala cuando quieras.
Reintentos seguros
Los envíos requieren un Idempotency-Key. Reintentar devuelve la solicitud original en lugar de escribir dos veces al cliente.
Entrega con seguimiento
Los envíos responden 202 Accepted al instante. Sigue cada uno hasta entregado, leído o fallido.
Sin cambios sobrescritos
Las actualizaciones de CRM, tickets y acciones necesitan la revisión actual. Una escritura desactualizada recibe un 409 en lugar de borrar el cambio de otra persona.
Webhooks firmados
Firmas HMAC-SHA256 con marca de tiempo, entrega al menos una vez y seis reintentos automáticos durante 24 horas.
El dinero lo deciden personas
Los reembolsos y los pagos siempre requieren a un administrador, sin importar los permisos de la clave.
Claves, webhooks y registros en un solo lugar
Tu equipo gestiona el acceso a la API y revisa cada envío desde el área de Desarrolladores del panel de Visito.
Claves de API y apps
Claves y asistentes de IA conectados en una sola lista, con permisos, estado y último uso.
Webhooks
Cada endpoint con sus eventos, quién lo gestiona y cómo fue la última entrega.
Plantillas de WhatsApp
Un registro de cada envío de plantilla, con el estado de la solicitud, la entrega y la conversación.
Haz tu primera llamada en cuatro pasos
De una clave nueva a una respuesta con seguimiento.
- 1
Crea una clave
En Desarrolladores, crea una clave solo con los permisos que necesitas. Guárdala en tu servidor.
- 2
Encuentra tus canales
Lista los canales y guarda el ID del que vas a usar.
- 3
Mira lo pendiente
Lista las conversaciones que necesitan respuesta.
- 4
Responde y haz seguimiento
Envía una respuesta con un Idempotency-Key y luego consulta su estado.
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": "Tu pedido A-1003 ya va en camino."}'curl "$BASE_URL/message-requests/$REQUEST_EVENT_ID/status" \ -H "Authorization: Bearer $VISITO_API_KEY"Preguntas sobre la API de Visito
Empieza a construir con la API de Visito
Crea tu cuenta, genera una clave y haz tu primera llamada hoy mismo.