{
"ok": false,
"error": "Too many requests. Retry in 1 minute."
}
Webchat
Enviar un mensaje del visitante
Registra un mensaje entrante — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal.
Primer mensaje: omite conversationId, indica en contact quién escribe (al menos id, email o phone) y opcionalmente channelId. La respuesta trae el conversationId nuevo.
Mensajes siguientes: envía ese conversationId; channelId y contact se ignoran.
La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador.
Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con GET /webchat/public/v1/conversations/{id}/messages.
La API key de tu organización, con la forma rvm_<prefijo>.<secreto>, enviada como Authorization: Bearer rvm_…. Revem la emite y sólo se muestra una vez; si la pierdes se reemplaza, no se recupera.
Body
application/json
Un mensaje necesita body, attachments o ambos. Para abrir una conversación nueva se omite conversationId y se indica quién escribe en contact.
Quién escribe, para una conversación nueva. Hace falta al menos id, email o phone. Se prueban en ese orden: id manda y no crea contactos; email y phone buscan un contacto existente o lo crean.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Revem","description":"Novedades de Revem, guías de integración y documentación de la API pública.","colors":{"primary":"#318161","light":"#6BC7A2","dark":"#27684E"},"logo":{"light":"https://mintcdn.com/revem/N8lhi-E9mPXC7LJs/assets/logo.png?fit=max\u0026auto=format\u0026n=N8lhi-E9mPXC7LJs\u0026q=85\u0026s=b9a015b0c8855bce38bdd2767960caa6","dark":"https://mintcdn.com/revem/N8lhi-E9mPXC7LJs/assets/logo.png?fit=max\u0026auto=format\u0026n=N8lhi-E9mPXC7LJs\u0026q=85\u0026s=b9a015b0c8855bce38bdd2767960caa6","href":"https://revem.ai"},"favicon":"https://mintcdn.com/revem/9deeDl6NZMuo7Y6B/assets/favicon.png?fit=max\u0026auto=format\u0026n=9deeDl6NZMuo7Y6B\u0026q=85\u0026s=e2a95eb4bec7d3f3d1c1ad700089fccd","api":{"openapi":"openapi.json","playground":{"display":"simple"},"examples":{"languages":["curl","javascript","python"]}},"appearance":{"default":"light","strict":true},"background":{"color":{"light":"#FFFFFF","dark":"#0F1A16"}},"navbar":{"links":[{"href":"mailto:soporte@revem.ai","label":"Soporte"}],"primary":{"type":"button","label":"Ir a Revem","href":"https://revem.ai"}},"footer":{"socials":{"website":"https://revem.ai"}},"fonts":{"family":"Inter"},"styling":{"eyebrows":"section","codeblocks":"system","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"revem","hasAudioNarration":false,"actualSubdomain":"revem","customDomains":["docs.revem.ai"],"gitSource":{"type":"github","owner":"caddyly","repo":"monorepo","deployBranch":"main","contentDirectory":"mintlify-public","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6adc0493cd7d629e7d5c27ee","collectionId":"b4dc04aa-2e31-4208-b6ae-3483bb396e83","liveDeploymentHistoryId":"6adc0493cd7d629e7d5c27ee","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adf6a1f9a12bdb039ad90b3","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Referencia","count":34},{"language":"default","tag":"Reuniones","count":8},{"language":"default","tag":"Organizaciones","count":6},{"language":"default","tag":"Productos","count":6},{"language":"default","tag":"Guías","count":4},{"language":"default","tag":"Contactos","count":4},{"language":"default","tag":"Webchat","count":4},{"language":"default","tag":"Tickets","count":3},{"language":"default","tag":"Novedades","count":2},{"language":"default","tag":"Automatizaciones","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".rv-toc,.rv-toc ul{list-style:none;padding:0 0 0 .75rem}.rv-toc{margin:.25rem 0 .5rem .75rem;border-left:1px solid #e5e7eb}.rv-toc li{margin:0;position:relative}.rv-toc a{position:relative;display:block;padding:.3rem .5rem;font-size:.8125rem;line-height:1.3;color:#6b7280;text-decoration:none;border-radius:.375rem}.rv-toc a:hover{color:#111827}.rv-toc li[data-active]>a{color:#27684e;font-weight:600;background:rgba(107,199,162,.16)}.rv-toc li[data-active]>a::before{content:'';position:absolute;left:-.75rem;top:0;bottom:0;width:3px;margin-left:-1px;border-radius:2px;background:#318161}.rv-toc>li[data-section]>a{color:#111827;font-weight:600}.rv-toc ul{margin:0}"}],"page":{"pagePath":"api-reference/webchat/enviar-un-mensaje-del-visitante","slug":"/api-reference/webchat/enviar-un-mensaje-del-visitante","pageMetadata":{"title":"Enviar un mensaje del visitante","description":"Registra un mensaje **entrante** — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal.\n\n**Primer mensaje:** omite `conversationId`, indica en `contact` quién escribe (al menos `id`, `email` o `phone`) y opcionalmente `channelId`. La respuesta trae el `conversationId` nuevo.\n\n**Mensajes siguientes:** envía ese `conversationId`; `channelId` y `contact` se ignoran.\n\nLa identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador.\n\nLas respuestas del equipo o del agente llegan de forma asíncrona: léelas con `GET /webchat/public/v1/conversations/{id}/messages`.","deprecated":null,"version":null,"openapi":"/openapi.json post /webchat/public/v1/messages","href":"/api-reference/webchat/enviar-un-mensaje-del-visitante","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Registra un mensaje \", _jsx(_components.strong, {\n children: \"entrante\"\n }), \" — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Primer mensaje:\"\n }), \" omite \", _jsx(_components.code, {\n children: \"conversationId\"\n }), \", indica en \", _jsx(_components.code, {\n children: \"contact\"\n }), \" quién escribe (al menos \", _jsx(_components.code, {\n children: \"id\"\n }), \", \", _jsx(_components.code, {\n children: \"email\"\n }), \" o \", _jsx(_components.code, {\n children: \"phone\"\n }), \") y opcionalmente \", _jsx(_components.code, {\n children: \"channelId\"\n }), \". La respuesta trae el \", _jsx(_components.code, {\n children: \"conversationId\"\n }), \" nuevo.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Mensajes siguientes:\"\n }), \" envía ese \", _jsx(_components.code, {\n children: \"conversationId\"\n }), \"; \", _jsx(_components.code, {\n children: \"channelId\"\n }), \" y \", _jsx(_components.code, {\n children: \"contact\"\n }), \" se ignoran.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con \", _jsx(_components.code, {\n children: \"GET /webchat/public/v1/conversations/{id}/messages\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Enviar un mensaje del visitante","description":"Registra un mensaje **entrante** — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal.\n\n**Primer mensaje:** omite `conversationId`, indica en `contact` quién escribe (al menos `id`, `email` o `phone`) y opcionalmente `channelId`. La respuesta trae el `conversationId` nuevo.\n\n**Mensajes siguientes:** envía ese `conversationId`; `channelId` y `contact` se ignoran.\n\nLa identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador.\n\nLas respuestas del equipo o del agente llegan de forma asíncrona: léelas con `GET /webchat/public/v1/conversations/{id}/messages`.","deprecated":null,"version":null,"openapi":"/openapi.json post /webchat/public/v1/messages","href":"/api-reference/webchat/enviar-un-mensaje-del-visitante","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/revem/8036536395214680/toc.js"],"openApiReferenceData":{"operation":{"tags":["Webchat"],"operationId":"sendWebchatMessage","summary":"Enviar un mensaje del visitante","description":"Registra un mensaje **entrante** — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal.\n\n**Primer mensaje:** omite `conversationId`, indica en `contact` quién escribe (al menos `id`, `email` o `phone`) y opcionalmente `channelId`. La respuesta trae el `conversationId` nuevo.\n\n**Mensajes siguientes:** envía ese `conversationId`; `channelId` y `contact` se ignoran.\n\nLa identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador.\n\nLas respuestas del equipo o del agente llegan de forma asíncrona: léelas con `GET /webchat/public/v1/conversations/{id}/messages`.","requestBody":"44d2ae5d-680d-4479-a01b-fc815b15583f","responses":{"201":"bed6dbd1-f88d-4c5e-a56c-1540fa6c2605","400":"ffa7e2e8-c6d6-4170-9d07-fe997ee7a16d","401":"d13b0a3d-9ee9-40b5-9d4b-888ba77593d9","403":"9e2f829d-e63c-451b-9ea2-c32a14c83f27","404":"6e03769c-2cef-410b-8f99-4fa4ec348679","409":"02bf8a6e-2841-4402-ba0e-65f5e832f151","429":"3d7f384a-342a-4075-9a74-151691014464"},"method":"post","type":"path","servers":["80f2c034-3a22-4890-884b-e5c677d4a1dd"],"security":["ee68e762-982b-4f7b-aa8f-7182979e1ddd"],"path":"/webchat/public/v1/messages","baseUrlOptions":["https://api.revem.ai"],"title":"Enviar un mensaje del visitante","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"conversationId":{"type":"string","format":"uuid","description":"Conversación existente en la que escribe el visitante. Es el valor que devolvió el primer mensaje. Cuando viene, `channelId` y `contact` se ignoran.","uniqueKey":"conversationId","typeLabel":"string\u003cuuid>"},"channelId":{"type":"string","format":"uuid","description":"Canal de webchat en el que abrir la conversación. Si se omite se usa el webchat más antiguo del tenant. Sólo se lee cuando no hay `conversationId`.","uniqueKey":"channelId","typeLabel":"string\u003cuuid>"},"contact":{"type":"object","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"contact.id","typeLabel":"string\u003cuuid>"},"email":{"type":"string","maxLength":255,"format":"email","uniqueKey":"contact.email","typeLabel":"string\u003cemail>"},"phone":{"type":"string","minLength":1,"maxLength":50,"uniqueKey":"contact.phone","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":255,"uniqueKey":"contact.name","typeLabel":"string"}},"description":"Quién escribe, para una conversación nueva. Hace falta al menos `id`, `email` o `phone`. Se prueban en ese orden: `id` manda y no crea contactos; `email` y `phone` buscan un contacto existente o lo crean.","uniqueKey":"contact","typeLabel":"object"},"body":{"type":"string","minLength":1,"maxLength":4000,"description":"Texto del mensaje, hasta 4000 caracteres. Obligatorio si no hay adjuntos.","uniqueKey":"body","typeLabel":"string"},"attachments":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"mediaId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"attachments.items.[INDEX].mediaId","typeLabel":"string\u003cuuid>"}},"required":["mediaId"],"uniqueKey":"attachments.items.[INDEX]","typeLabel":"object"},"description":"Adjuntos subidos previamente con `POST /webchat/public/v1/media`, hasta 20 por mensaje. Obligatorio si no hay `body`.","uniqueKey":"attachments","typeLabel":"object[]"}},"description":"Un mensaje necesita `body`, `attachments` o ambos. Para abrir una conversación nueva se omite `conversationId` y se indica quién escribe en `contact`.","uniqueKey":"","typeLabel":"object"},"example":{"channelId":"b7e3d2a1-4c5f-4e6d-9a8b-7c6d5e4f3a2b","contact":{"email":"camila@ejemplo.cl","name":"Camila Rojas"},"body":"Hola, ¿tienen horas disponibles esta semana?"},"examples":{"Example":{"title":"Example","value":{"channelId":"b7e3d2a1-4c5f-4e6d-9a8b-7c6d5e4f3a2b","contact":{"email":"camila@ejemplo.cl","name":"Camila Rojas"},"body":"Hola, ¿tienen horas disponibles esta semana?"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"bed6dbd1-f88d-4c5e-a56c-1540fa6c2605":{"description":"Mensaje guardado.","content":{"application/json":{"schema":{"type":"object","properties":{"conversationId":{"type":"string","format":"uuid","description":"La conversación del mensaje. En un primer mensaje es nueva; envíala en los siguientes y úsala para leer las respuestas.","isRequired":true,"uniqueKey":"conversationId","typeLabel":"string\u003cuuid>"},"messageId":{"type":"integer","description":"Identificador del mensaje guardado.","isRequired":true,"uniqueKey":"messageId","typeLabel":"integer"}},"required":["conversationId","messageId"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"conversationId":"a1d2c3b4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","messageId":482},"examples":{"Example":{"title":"Example","value":{"conversationId":"a1d2c3b4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","messageId":482}}},"exampleType":"examples"}},"exampleType":"examples"},"ffa7e2e8-c6d6-4170-9d07-fe997ee7a16d":{"description":"El cuerpo no cumple el esquema, falta la identidad del contacto (`contact_identity_required`) o un adjunto no existe (`attachment_not_found`).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"Código estable del error, por ejemplo `channel_not_found`, `contact_identity_required` o `unsupported_media_type`.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","description":"Explicación legible del problema.","uniqueKey":"message","typeLabel":"string"}},"required":["ok","error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"ok":false,"error":"contact_identity_required","message":"Para abrir una conversación hace falta un id de contacto, un email o un teléfono."},"examples":{"Example":{"title":"Example","value":{"ok":false,"error":"contact_identity_required","message":"Para abrir una conversación hace falta un id de contacto, un email o un teléfono."}}},"exampleType":"examples"}},"exampleType":"examples"},"d13b0a3d-9ee9-40b5-9d4b-888ba77593d9":{"description":"Sin credencial, o la API key no existe o fue revocada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"ok":{"type":"boolean","const":false,"description":"Presente sólo en el `403`.","uniqueKey":"ok","typeLabel":"boolean"}},"required":["error","message"],"uniqueKey":"","typeLabel":"object"},"example":{"error":"Unauthorized","message":"Invalid API key"},"examples":{"Example":{"title":"Example","value":{"error":"Unauthorized","message":"Invalid API key"}}},"exampleType":"examples"}},"exampleType":"examples"},"9e2f829d-e63c-451b-9ea2-c32a14c83f27":{"description":"La ruta es sólo para sistemas externos autenticados con API key (`inbound_requires_service_identity`).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"Código estable del error, por ejemplo `channel_not_found`, `contact_identity_required` o `unsupported_media_type`.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","description":"Explicación legible del problema.","uniqueKey":"message","typeLabel":"string"}},"required":["ok","error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":false,"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"6e03769c-2cef-410b-8f99-4fa4ec348679":{"description":"La conversación no existe (`conversation_not_found`), el canal no existe o el tenant no tiene webchat (`channel_not_found`), o `contact.id` no resuelve (`contact_not_found`).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"Código estable del error, por ejemplo `channel_not_found`, `contact_identity_required` o `unsupported_media_type`.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","description":"Explicación legible del problema.","uniqueKey":"message","typeLabel":"string"}},"required":["ok","error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"ok":false,"error":"channel_not_found","message":"El canal de webchat no existe."},"examples":{"Example":{"title":"Example","value":{"ok":false,"error":"channel_not_found","message":"El canal de webchat no existe."}}},"exampleType":"examples"}},"exampleType":"examples"},"02bf8a6e-2841-4402-ba0e-65f5e832f151":{"description":"El email o el teléfono ya pertenecen a otro contacto, posiblemente en la papelera (`contact_identity_conflict`).","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"Código estable del error, por ejemplo `channel_not_found`, `contact_identity_required` o `unsupported_media_type`.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","description":"Explicación legible del problema.","uniqueKey":"message","typeLabel":"string"}},"required":["ok","error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"ok":false,"error":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"3d7f384a-342a-4075-9a74-151691014464":{"description":"La key superó su límite de solicitudes por minuto. El header `retry-after` indica cuánto esperar.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"isRequired":true,"uniqueKey":"ok","typeLabel":"boolean"},"error":{"type":"string","description":"Incluye cuánto esperar antes de reintentar.","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"required":["ok","error"],"uniqueKey":"","typeLabel":"object"},"example":{"ok":false,"error":"Too many requests. Retry in 1 minute."},"examples":{"Example":{"title":"Example","value":{"ok":false,"error":"Too many requests. Retry in 1 minute."}}},"exampleType":"examples"}},"headers":{"retry-after":{"description":"Segundos que esperar antes de reintentar.","schema":{"type":"integer"}},"x-ratelimit-limit":{"description":"Solicitudes permitidas por minuto.","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Solicitudes que quedan en la ventana actual.","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Segundos hasta que la ventana se reinicia.","schema":{"type":"integer"}}},"exampleType":"examples"}},"security":{"ee68e762-982b-4f7b-aa8f-7182979e1ddd":{"apiKey":{"type":"http","scheme":"bearer","description":"La API key de tu organización, con la forma `rvm_\u003cprefijo>.\u003csecreto>`, enviada como `Authorization: Bearer rvm_…`. Revem la emite y sólo se muestra una vez; si la pierdes se reemplaza, no se recupera.","scopes":[],"schemeName":"apiKey"}}},"servers":{"80f2c034-3a22-4890-884b-e5c677d4a1dd":{"url":"https://api.revem.ai","description":"Producción"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"La API key de tu organización, con la forma `rvm_\u003cprefijo>.\u003csecreto>`, enviada como `Authorization: Bearer rvm_…`. Revem la emite y sólo se muestra una vez; si la pierdes se reemplaza, no se recupera.","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"La API key de tu organización, con la forma `rvm_\u003cprefijo>.\u003csecreto>`, enviada como `Authorization: Bearer rvm_…`. Revem la emite y sólo se muestra una vez; si la pierdes se reemplaza, no se recupera.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"openapi.json"},"subdomain":"revem","siteName":"Revem","title":"Enviar un mensaje del visitante - Revem","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T14:58:12.045Z","originalFileLocation":"api-reference/webchat/enviar-un-mensaje-del-visitante.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Registra un mensaje entrante — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal. Primer mensaje: omite conversationId, indica en contact quién escribe (al menos id, email o phone) y opcionalmente channelId. La respuesta trae el conversationId nuevo. Mensajes siguientes: envía ese conversationId; channelId y contact se ignoran. La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador. Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con GET /webchat/public/v1/conversations/{id}/messages.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Revem\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Enviar un mensaje del visitante - Revem\">\u003cmeta data-mint-head property=\"og:description\" content=\"Registra un mensaje entrante — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal. Primer mensaje: omite conversationId, indica en contact quién escribe (al menos id, email o phone) y opcionalmente channelId. La respuesta trae el conversationId nuevo. Mensajes siguientes: envía ese conversationId; channelId y contact se ignoran. La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador. Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con GET /webchat/public/v1/conversations/{id}/messages.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Revem\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://revem.mintlify.app/_mintlify/api/og/v2?division=Webchat\u0026amp;title=Enviar+un+mensaje+del+visitante\u0026amp;description=Registra+un+mensaje+**entrante**+%E2%80%94+lo+que+escribi%C3%B3+el+visitante+en+tu+sitio+%E2%80%94+y+dispara+la+atenci%C3%B3n+del+equipo+o+del+agente+de+IA+seg%C3%BAn+la+configuraci%C3%B3n+del+can\u0026amp;theme=abe932b0d5013d30fe946715\u0026amp;signature=62b2039008080b6cf30dd969c8ffd1149a13574c92b8b90d4a6507b4d713d973\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Enviar un mensaje del visitante - Revem\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Registra un mensaje entrante — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal. Primer mensaje: omite conversationId, indica en contact quién escribe (al menos id, email o phone) y opcionalmente channelId. La respuesta trae el conversationId nuevo. Mensajes siguientes: envía ese conversationId; channelId y contact se ignoran. La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador. Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con GET /webchat/public/v1/conversations/{id}/messages.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://revem.mintlify.app/_mintlify/api/og/v2?division=Webchat\u0026amp;title=Enviar+un+mensaje+del+visitante\u0026amp;description=Registra+un+mensaje+**entrante**+%E2%80%94+lo+que+escribi%C3%B3+el+visitante+en+tu+sitio+%E2%80%94+y+dispara+la+atenci%C3%B3n+del+equipo+o+del+agente+de+IA+seg%C3%BAn+la+configuraci%C3%B3n+del+can\u0026amp;theme=abe932b0d5013d30fe946715\u0026amp;signature=62b2039008080b6cf30dd969c8ffd1149a13574c92b8b90d4a6507b4d713d973\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/revem/3pNuDTpbMY0LAwtQ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Revem\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#318161\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/webchat/enviar-un-mensaje-del-visitante.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.revem.ai/#organization\",\"name\":\"Revem\",\"url\":\"https://docs.revem.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/revem/N8lhi-E9mPXC7LJs/assets/logo.png?fit=max\u0026auto=format\u0026n=N8lhi-E9mPXC7LJs\u0026q=85\u0026s=b9a015b0c8855bce38bdd2767960caa6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.revem.ai#website\",\"name\":\"Revem\",\"url\":\"https://docs.revem.ai\",\"publisher\":{\"@id\":\"https://docs.revem.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante#webpage\",\"url\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante\",\"name\":\"Enviar un mensaje del visitante\",\"description\":\"Registra un mensaje entrante — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal. Primer mensaje: omite conversationId, indica en contact quién escribe (al menos id, email o phone) y opcionalmente channelId. La respuesta trae el conversationId nuevo. Mensajes siguientes: envía ese conversationId; channelId y contact se ignoran. La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador. Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con GET /webchat/public/v1/conversations/{id}/messages.\",\"dateModified\":\"2026-10-26T14:58:12.045Z\",\"isPartOf\":{\"@id\":\"https://docs.revem.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Webchat\",\"item\":\"https://docs.revem.ai/api-reference/webchat/confirmar-entrega-o-lectura\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enviar un mensaje del visitante\",\"item\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante#apireference\",\"headline\":\"Enviar un mensaje del visitante\",\"name\":\"Enviar un mensaje del visitante\",\"description\":\"Registra un mensaje entrante — lo que escribió el visitante en tu sitio — y dispara la atención del equipo o del agente de IA según la configuración del canal. Primer mensaje: omite conversationId, indica en contact quién escribe (al menos id, email o phone) y opcionalmente channelId. La respuesta trae el conversationId nuevo. Mensajes siguientes: envía ese conversationId; channelId y contact se ignoran. La identidad del visitante la afirma tu backend y Revem le cree: el contacto resuelto recibe el historial, los tickets y el contexto del agente. Autentica a tu usuario antes de llamar a esta ruta y nunca la expongas directamente desde el navegador. Las respuestas del equipo o del agente llegan de forma asíncrona: léelas con GET /webchat/public/v1/conversations/{id}/messages.\",\"url\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante\",\"mainEntityOfPage\":{\"@id\":\"https://docs.revem.ai/api-reference/webchat/enviar-un-mensaje-del-visitante#webpage\"},\"dateModified\":\"2026-10-26T14:58:12.045Z\",\"publisher\":{\"@id\":\"https://docs.revem.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.revem.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Revem\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Revem","nav":{"global":null,"tabs":[{"tab":"Guías","icon":"book-open","pages":[{"title":"Guías","href":""}]},{"tab":"Referencia","icon":"code","groups":[{"group":"Automatizaciones","pages":[{"title":"Ejecutar una automatización para contactos o tickets","deprecated":null,"version":null,"openapi":"/openapi.json post /automations/public/v1/rules/{id}/invocations","href":"/api-reference/automatizaciones/ejecutar-una-automatización-para-contactos-o-tickets"},{"title":"Consultar el progreso de una invocación","deprecated":null,"version":null,"openapi":"/openapi.json get /automations/public/v1/invocations/{id}","href":"/api-reference/automatizaciones/consultar-el-progreso-de-una-invocación"}]},{"group":"WhatsApp","pages":[{"title":"Enviar una plantilla de WhatsApp","deprecated":null,"version":null,"openapi":"/openapi.json post /whatsapp/public/v1/templates/send","href":"/api-reference/whatsapp/enviar-una-plantilla-de-whatsapp"}]},{"group":"Organizaciones","pages":[{"title":"Listar organizaciones","deprecated":null,"version":null,"openapi":"/openapi.json get /organizations/public/v1","href":"/api-reference/organizaciones/listar-organizaciones"},{"title":"Crear o actualizar una organización","deprecated":null,"version":null,"openapi":"/openapi.json post /organizations/public/v1","href":"/api-reference/organizaciones/crear-o-actualizar-una-organización"},{"title":"Obtener una organización por identificador tributario","deprecated":null,"version":null,"openapi":"/openapi.json get /organizations/public/v1/by-tax-id/{tax_id}","href":"/api-reference/organizaciones/obtener-una-organización-por-identificador-tributario"},{"title":"Actualizar una organización por identificador tributario","deprecated":null,"version":null,"openapi":"/openapi.json patch /organizations/public/v1/by-tax-id/{tax_id}","href":"/api-reference/organizaciones/actualizar-una-organización-por-identificador-tributario"},{"title":"Obtener una organización","deprecated":null,"version":null,"openapi":"/openapi.json get /organizations/public/v1/{id}","href":"/api-reference/organizaciones/obtener-una-organización"},{"title":"Actualizar una organización por ID","deprecated":null,"version":null,"openapi":"/openapi.json patch /organizations/public/v1/{id}","href":"/api-reference/organizaciones/actualizar-una-organización-por-id"}]},{"group":"Productos","pages":[{"title":"Listar productos","deprecated":null,"version":null,"openapi":"/openapi.json get /products/public/v1","href":"/api-reference/productos/listar-productos"},{"title":"Crear o actualizar un producto","deprecated":null,"version":null,"openapi":"/openapi.json post /products/public/v1","href":"/api-reference/productos/crear-o-actualizar-un-producto"},{"title":"Obtener un producto","deprecated":null,"version":null,"openapi":"/openapi.json get /products/public/v1/{id}","href":"/api-reference/productos/obtener-un-producto"},{"title":"Actualizar un producto por id","deprecated":null,"version":null,"openapi":"/openapi.json patch /products/public/v1/{id}","href":"/api-reference/productos/actualizar-un-producto-por-id"},{"title":"Obtener un producto por SKU","deprecated":null,"version":null,"openapi":"/openapi.json get /products/public/v1/by-sku/{sku}","href":"/api-reference/productos/obtener-un-producto-por-sku"},{"title":"Actualizar un producto por SKU","deprecated":null,"version":null,"openapi":"/openapi.json patch /products/public/v1/by-sku/{sku}","href":"/api-reference/productos/actualizar-un-producto-por-sku"}]},{"group":"Contactos","pages":[{"title":"Listar contactos","deprecated":null,"version":null,"openapi":"/openapi.json get /contacts/public/v1","href":"/api-reference/contactos/listar-contactos"},{"title":"Crear o actualizar un contacto","deprecated":null,"version":null,"openapi":"/openapi.json post /contacts/public/v1","href":"/api-reference/contactos/crear-o-actualizar-un-contacto"},{"title":"Obtener un contacto","deprecated":null,"version":null,"openapi":"/openapi.json get /contacts/public/v1/{id}","href":"/api-reference/contactos/obtener-un-contacto"},{"title":"Actualizar un contacto por id","deprecated":null,"version":null,"openapi":"/openapi.json patch /contacts/public/v1/{id}","href":"/api-reference/contactos/actualizar-un-contacto-por-id"}]},{"group":"Tickets","pages":[{"title":"Listar tickets","deprecated":null,"version":null,"openapi":"/openapi.json get /tickets/public/v1","href":"/api-reference/tickets/listar-tickets"},{"title":"Obtener un ticket","deprecated":null,"version":null,"openapi":"/openapi.json get /tickets/public/v1/{id}","href":"/api-reference/tickets/obtener-un-ticket"},{"title":"Actualizar un ticket","deprecated":null,"version":null,"openapi":"/openapi.json patch /tickets/public/v1/{id}","href":"/api-reference/tickets/actualizar-un-ticket"}]},{"group":"Webchat","pages":[{"title":"Confirmar entrega o lectura","deprecated":null,"version":null,"openapi":"/openapi.json post /webchat/public/v1/conversations/{id}/receipts","href":"/api-reference/webchat/confirmar-entrega-o-lectura"},{"title":"Subir un adjunto","description":"Sube un archivo para adjuntarlo después a un mensaje con `POST /webchat/public/v1/messages`. El cuerpo es `multipart/form-data` con un único archivo; el formato se valida por el `Content-Type` de la parte, no por la extensión del nombre.\n\n| Formato | Límite |\n| --- | --- |\n| `image/png`, `image/jpeg` | 5 MB |\n| `video/mp4`, `video/3gpp` | 16 MB |\n| `application/pdf`, Word (`.doc`, `.docx`), Excel (`.xls`, `.xlsx`), `text/plain` | 25 MB |","deprecated":null,"version":null,"openapi":"/openapi.json post /webchat/public/v1/media","href":"/api-reference/webchat/subir-un-adjunto"},{"title":"Enviar un mensaje del visitante","deprecated":null,"version":null,"openapi":"/openapi.json post /webchat/public/v1/messages","href":"/api-reference/webchat/enviar-un-mensaje-del-visitante"},{"title":"Leer los mensajes de una conversación","description":"Devuelve los mensajes de una conversación, del más reciente al más antiguo, paginados por cursor. Incluye tanto lo que escribió el visitante (`origin: INBOUND`) como las respuestas del equipo o del agente (`origin: OUTBOUND`), así que es la forma de mostrar las respuestas en tu sitio.\n\nLas URLs de los adjuntos son firmadas y expiran en **una hora**; vuelve a pedir la página en vez de guardarlas.","deprecated":null,"version":null,"openapi":"/openapi.json get /webchat/public/v1/conversations/{id}/messages","href":"/api-reference/webchat/leer-los-mensajes-de-una-conversación"}]},{"group":"Reuniones","pages":[{"title":"Listar reuniones","deprecated":null,"version":null,"openapi":"/openapi.json get /meetings/public/v1","href":"/api-reference/reuniones/listar-reuniones"},{"title":"Crear reunión","deprecated":null,"version":null,"openapi":"/openapi.json post /meetings/public/v1","href":"/api-reference/reuniones/crear-reunión"},{"title":"Obtener reunión","deprecated":null,"version":null,"openapi":"/openapi.json get /meetings/public/v1/{id}","href":"/api-reference/reuniones/obtener-reunión"},{"title":"Editar reunión","deprecated":null,"version":null,"openapi":"/openapi.json patch /meetings/public/v1/{id}","href":"/api-reference/reuniones/editar-reunión"},{"title":"Cancelar reunión","deprecated":null,"version":null,"openapi":"/openapi.json post /meetings/public/v1/{id}/cancel","href":"/api-reference/reuniones/cancelar-reunión"},{"title":"Listar reservas","deprecated":null,"version":null,"openapi":"/openapi.json get /meetings/public/v1/{id}/bookings","href":"/api-reference/reuniones/listar-reservas"},{"title":"Reservar cupo","deprecated":null,"version":null,"openapi":"/openapi.json post /meetings/public/v1/{id}/bookings","href":"/api-reference/reuniones/reservar-cupo"},{"title":"Cancelar reserva","deprecated":null,"version":null,"openapi":"/openapi.json delete /meetings/public/v1/{id}/bookings/{contactId}","href":"/api-reference/reuniones/cancelar-reserva"}]}]},{"tab":"Novedades","icon":"newspaper","pages":[{"title":"Novedades","href":"/novedades"}]}]},"title":"Enviar un mensaje del visitante - Revem","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}