Pipeline de API: crear, configurar, iniciar, detener, medir y eliminar una campaña de Telegram de cualquier tipo

Índice: Pipelines de API — índice

Objetivo: crear, configurar, iniciar, detener, medir y eliminar una campaña de Telegram de cualquier tipo. Una campaña es una tarjeta (card_type: "campaign") que hace un trabajo para un proyecto en Telegram, con tus oráculos y en grupos. Todos los tipos comparten una tarjeta, un conjunto de rutas y un ciclo de vida; kind se elige al crear y no cambia.

Tipos

kind Qué hace Qué necesita para iniciar Cuándo termina Pipeline
mtproto_radar (por defecto) Escucha grupos buscando mensajes con tus palabras clave; las coincidencias pueden pasar a un oráculo para un primer mensaje Proyecto Pro; con outreach: oráculos + agenda; con auto: outreach + 5 coincidencias canónicas Al detenerla Pipeline de API: escuchar grupos de Telegram para encontrar a quien te necesita: crear y ajustar un radar, trabajar sus coincidencias y hacer el primer contacto (borrador, envío, outreach automático)
mtproto_ai_scout La IA lee grupos por lotes, publica un resumen en un canal y puede pasar selecciones a un radar Proyecto Pro, agenda, oráculos, grupos Al detenerla Pipeline de API: que la IA lea grupos por lotes, publique un resumen en tu canal y pase selecciones a un radar
mtproto_announcements Publica tus publicaciones en grupos a un ritmo marcado por su tráfico Proyecto Pro, grupos, oráculos, publicaciones, agenda Al detenerla Pipeline de API: publicar tus publicaciones en grupos a un ritmo marcado por su tráfico y seguir lo enviado y lo borrado
mtproto_join_chats / mtproto_leave_chats Tus oráculos entran o salen de una lista de grupos dentro de los límites de Telegram Proyecto Pro, grupos, oráculos Completed cuando cada oráculo ha recorrido la lista Pipeline de API: que tus oráculos entren o salgan de una lista de grupos de Telegram dentro de los límites de Telegram
mtproto_reactions Tus oráculos reaccionan a mensajes recientes Proyecto Pro, oráculos, al menos 1 reacción; grupos opcionales Al detenerla Pipeline de API: que tus oráculos reaccionen a mensajes recientes en grupos al ritmo que elijas

Grupos para cualquier tipo: Pipeline de API: enviar tus grupos de Telegram, buscar grupos por palabra clave, lugar o rúbrica, evaluarlos y conectarlos a una campaña

Pasos

1. Crear (siempre Paused).

POST /v0/my/campaigns
Idempotency-Key: camp-join-phuket-1
{"title": "Join Phuket chats", "kind": "mtproto_join_chats",
 "project_nonce": "<Pro project>", "tg_groups": ["<preset nonce>"], "oracles": ["<oracle nonce>"]}
→ {"nonce": "470360000000000001", "card_type": "campaign", "kind": "mtproto_join_chats",
   "status": "Paused", "is_active": false,
   "telegram_groups_list": ["<preset nonce>"], "oracles_list": ["<oracle nonce>"],
   "lists": {"telegram_groups": [{…tile…}], "oracles": [{…}], "posts": []}, …}

2. Configurar. PATCH /v0/my/campaigns/{nonce} con cualquier campo de creación; un slot en el cuerpo reemplaza toda la lista. Un radar o un AI scout activos recogen en marcha los cambios de palabras clave, exclusiones, grupos, proyecto, auto y lotes.

3. Iniciar.

POST /v0/my/campaigns/470360000000000001/start
→ {"success": true, "status": "Active", "is_active": true}

Cada comprobación fallida es un 400 con el motivo: assign this campaign to a project before activating, assigned project not found, project needs an active Pro membership to run campaigns, assign telegram groups before activating, assign oracles before activating, assign posts before activating, announcements require an agenda assigned: …, assign at least one reaction before activating, ai scout requires an agenda assigned.

4. Detener. POST …/stop → Paused (un radar conserva su configuración y sus coincidencias). Un 400 significa que no se detuvo: vuelve a llamar a stop.

5. Medir.

GET /v0/my/campaigns/{nonce}/performance
→ {"totals": {"sent": 40, "deleted": 3, "replied": 5, "reacted": 0, "groups": 25, "oracles": 1,
              "joined": 0, "join_pending": 0, "already_member": 0, …, "first_at": "…", "last_at": "…"},
   "timeline": [{"day": "2026-10-08", "sent": 0, "joined": 31, "reacted": 40, …}],
   "groups": [{"username": "example_group", "sent": 3, "deleted": 2, "replied": 0, "join_status": "already_member", …}],
   "join": {"member": 30, "pending": 4, "skipped": 2, "remaining": 0, "oracles": [{…, "flooded_until": null}]}}

GET /v0/my/campaigns/{nonce}/sends?page=1&limit=50
→ {"rows": [{"username": "example_group", "message_id": 17552, "oracle": "…", "post": "…",
             "sent_at": "…", "deleted_at": null, "replied_at": "…", "replies": 2}], "total": 40, "has_more": true, …}

Los resultados de un radar son coincidencias y salas en la bandeja de entrada, no envíos. Visitas a la página de destino por campaña: GET /v0/my/console/traffic/campaign?campaign=. Cabi.Chat Inbox — Leads

6. Eliminar. Detenla primero y luego DELETE /v0/my/campaigns/{nonce}.

Estados: Active, Paused, Completed, Cancelled, Failed. Cuando el proyecto pierde Pro, sus campañas activas se pausan.

Actividad de un oráculo

Lo que un oráculo hizo en todas las campañas (solo el dueño; si no, 404):

Estados de membresía en estos informes: joined, join_pending (la solicitud espera a los admins), join_banned, join_dead (el grupo ya no existe), join_skipped, join_flood (Telegram pidió esperar), join_limit (la cuenta alcanzó un límite de Telegram para unirse), already_member, left, leave_failed, not_member.

En segundo plano

Reglas (quién puede hacer qué)

Acción Requiere
GET /{nonce} read
PATCH, matches/evict, matches/sweep, start, stop write
Anclar a un proyecto (project_nonce) el dueño de la campaña es dueño del proyecto o tiene x sobre él
DELETE, performance, sends, matches/{post}/draft, matches/{post}/outreach solo el dueño

GET /v0/my/campaigns lista solo las campañas tuyas. Compartir una con un enlace (derechos, grant_ttl, quién puede reclamar): índice, «Compartir con enlaces»; cuando termina una concesión w, la campaña se pausa salvo que otra concesión w vigente la sostenga. Grafo de Cabi.Chat — Políticas de tarjetas

Superficie de la API

Endpoint Para qué FE IA / oráculo
GET /v0/my/campaigns Tus campañas como tiles + total (limit, offset, archived) sí sí
POST /v0/my/campaigns Crear cualquier tipo, Paused sí sí
GET /v0/my/campaigns/{nonce} Tarjeta completa: tipo, estado, slots, sus espacios sí sí
PATCH /v0/my/campaigns/{nonce} Editar configuración y slots sí sí
DELETE /v0/my/campaigns/{nonce} Eliminar (dueño) sí rara vez
POST /v0/my/campaigns/{nonce}/start, /stop Validar e iniciar; pausar sí sí
GET /v0/my/campaigns/{nonce}/performance Totales, evolución, por grupo, plan de entrada sí sí, informes
GET /v0/my/campaigns/{nonce}/sends Cada mensaje enviado y qué pasó con él (page, limit) sí sí
POST /v0/my/campaigns/{nonce}/matches/… Radar: evict, sweep, draft, outreach sí ver el pipeline del radar
GET /v0/my/oracles/{nonce}/performance, /campaigns Actividad de un oráculo sí sí, informes
GET /v0/my/console/traffic/campaign?campaign= Visitas a la página de destino por campaña sí opcional

Mentioned