ihImagim Hilo API · Webhooks · MCP

Conecta tus herramientas y tus agentes de IA a tu bandeja.

Imagim Hilo expone una API REST, webhooks de salida y un servidor MCP. Con ellos, otras apps leen y actúan sobre tu bandeja, se enteran cuando algo pasa, y tu agente de IA (Claude, ChatGPT) la opera en lenguaje natural.

Las integraciones son del plan Crece en adelante. Si tu plan es Base o Emprende, mejóralo para crear llaves y webhooks.

Empezar

1. Entra a tu cuenta en Imagim Hilo, sección API para desarrolladores, y crea una llave con los permisos que necesites. La llave se muestra una sola vez, guárdala bien.

2. Úsala en cada petición con el encabezado de autorización. Todo vive bajo un solo dominio:

Base URL:  https://api.imagimhilo.com
Auth:      Authorization: Bearer ihk_tu_llave

API REST (v1)

Método y rutaQué hacePermiso
GET /v1/meVerifica la llave; devuelve el negocio y sus permisos—
GET /v1/contactsLista los contactoscontacts:read
POST /v1/contactsCrea un contactocontacts:write
GET /v1/conversationsLista las conversacionesconversations:read
GET /v1/conversations/{id}/messagesMensajes de una conversaciónconversations:read
POST /v1/conversations/{id}/messagesEnvía un mensaje (llega por el canal real)messages:write

Ejemplo

# Enviar un mensaje a una conversación
curl -X POST https://api.imagimhilo.com/v1/conversations/123/messages \
  -H "Authorization: Bearer ihk_tu_llave" \
  -H "Content-Type: application/json" \
  -d '{"content":"Hola, ya tenemos stock 💚"}'
Idempotencia. En los POST que crean algo (contactos y mensajes) puedes enviar el encabezado Idempotency-Key con un valor único por operación. Si reintentas con la misma key (por un timeout o un reintento de Zapier), no se vuelve a ejecutar: recibes la misma respuesta y el mensaje NO se manda dos veces al cliente. La misma key con otro cuerpo responde 422.

Webhooks de salida

Que Imagim Hilo le avise a tu app cuando algo pasa, sin que tengas que estar preguntando. Crea el webhook en tu cuenta, elige los eventos y guarda el secreto (se muestra una sola vez).

EventoCuándo se dispara
message.receivedUn cliente escribe un mensaje
contact.createdSe crea un contacto nuevo
conversation.assignedSe asigna una conversación a un agente

Verificar la firma

Cada envío trae los encabezados webhook-id, webhook-timestamp y webhook-signature. La firma es v1,<base64> donde el base64 es un HMAC-SHA256, con tu secreto como llave, sobre el texto {id}.{timestamp}.{cuerpo}. Compáralo con el header y descarta si no coincide (protege contra falsificaciones y reenvíos):

import base64, hmac, hashlib

def verificar(secreto, headers, cuerpo_crudo):
    firmado = f"{headers['webhook-id']}.{headers['webhook-timestamp']}.{cuerpo_crudo}"
    esperado = "v1," + base64.b64encode(
        hmac.new(secreto.encode(), firmado.encode(), hashlib.sha256).digest()
    ).decode()
    return hmac.compare_digest(esperado, headers['webhook-signature'])

Servidor MCP AI-first

Aquí está lo que casi nadie tiene. Conecta tu agente de IA (Claude, ChatGPT, Cursor) a tu bandeja y opérala hablándole normal: "resúmeme los chats de hoy", "cotiza estos productos", "responde a los que preguntaron por envíos".

Endpoint MCP:  https://api.imagimhilo.com/mcp
Transporte:    Streamable HTTP (JSON-RPC 2.0)
Auth:          Authorization: Bearer ihk_tu_llave

En Claude o ChatGPT, agrega un conector/servidor MCP remoto con esa URL y tu llave. El agente descubre las herramientas solo.

Herramientas disponibles

HerramientaQué hacePermiso
business_infoDatos del negocio y permisos de la llave—
list_conversationsConversaciones recientesconversations:read
list_contactsContactoscontacts:read
get_conversation_messagesMensajes de una conversaciónconversations:read
send_messageEnviar un mensaje al clientemessages:write
search_knowledgeBuscar en tu base de conocimientoknowledge:read
list_productsCatálogo con precios (para cotizar)knowledge:read
add_noteNota interna en una conversaciónconversations:write
list_appointmentsLas citas de la agenda (cliente, asesor, estado, enlace de calendario)appointments:read
appointment_slotsCupos libres, por asesor o del equipoappointments:read
book_appointmentAgenda una cita y le confirma al cliente por su chatappointments:write
reschedule_appointmentMueve una cita (y avisa al cliente si se lo pides)appointments:write
cancel_appointmentCancela una cita y libera el cupoappointments:write

Permisos (scopes)

Cada llave lleva solo los permisos que le des. Dale lo mínimo que necesite:

Toda petición está acotada a TU negocio: una llave solo ve y toca tus datos. Guarda tus llaves y secretos como contraseñas; si se filtran, revócalos desde tu cuenta.