Conecta tus sistemas con Marcomm AI
Lee resúmenes de noticias, noticias críticas y aprobaciones pendientes desde tus propios sistemas, y aprueba o rechaza desde tus herramientas de aprobación. La API está disponible en el plan Team y superiores, tras una breve revisión.
Primeros pasos
- 1Solicita acceso
Describe tu sistema y elige los datos que necesitas. Revisamos las solicitudes.
- 2Crea una clave
Tras la aprobación, crea una clave en Configuración, API. La clave se muestra una sola vez, así que guárdala en tu sistema.
- 3Envía una solicitud
Envía la clave en el encabezado Authorization y llama a uno de los endpoints de abajo.
Solicitud de ejemplo
curl https://app.marcomm.works/api/v1/news/digest?days=7 \
-H "Authorization: Bearer mc_live_..."Autenticación
Envía tu clave como token Bearer en cada solicitud. Una clave personal actúa como la persona que la creó, por lo que puede leer y decidir aprobaciones en su nombre. Una clave del espacio de trabajo la crea un administrador y solo puede leer. Las claves pueden caducar, limitarse a direcciones IP y rotarse: la clave anterior sigue funcionando 24 horas después de una rotación.
Scopes
Cada clave incluye solo los scopes para los que se aprobó tu solicitud.
- news
- Resumen de noticias, artículos y medios.
- crisis
- Noticias críticas e incidentes de crisis.
- approvals
- Aprobaciones pendientes, y aprobarlas o rechazarlas con una clave personal.
- content
- Lectura de notas de prensa y entradas de blog.
Endpoints
Las rutas empiezan por /api/v1. Los endpoints de lectura usan GET y aceptan parámetros de consulta. La respuesta es JSON con la forma {"data": ...}.
| Método | Ruta | Scope | Qué hace |
|---|---|---|---|
| GET | /api/v1/news/digest | news | Volumen de cobertura, sentimiento y principales medios de un periodo. |
| GET | /api/v1/news/articles | news | Busca cobertura de noticias. |
| GET | /api/v1/news/outlets | news | Medios que cubren a tus empresas. |
| GET | /api/v1/crisis/incidents | crisis | Incidentes de crisis y artículos críticos. |
| GET | /api/v1/approvals | approvals | Notas de prensa y entradas de blog que esperan al titular de la clave, y las que el titular pidió aprobar. |
| GET | /api/v1/press-releases | content | Lista las notas de prensa. |
| GET | /api/v1/press-releases/{id} | content | Una nota de prensa con su párrafo inicial y su texto. |
| GET | /api/v1/blog-posts | content | Lista las entradas de blog. |
| GET | /api/v1/blog-posts/{id} | content | Una entrada de blog con su texto. |
| POST | /api/v1/approvals/press-releases/{id} | approvals | Aprueba o rechaza una nota de prensa que espera al titular de la clave. |
| POST | /api/v1/approvals/blog-posts/{id} | approvals | Aprueba o rechaza una entrada de blog que espera al titular de la clave. |
Aprobar y rechazar
Envía {"decision": "approve"} o {"decision": "reject", "comment": "..."} al elemento. Para rechazar hace falta un comentario. La decisión sigue las mismas reglas que la aplicación y Slack, y se registra a nombre del titular de la clave. Si el texto contiene expresiones que requieren confirmación, recibirás 409 confirmation_required con las advertencias y podrás reenviar la solicitud con "force": true.
curl -X POST https://app.marcomm.works/api/v1/approvals/press-releases/<id> \
-H "Authorization: Bearer mc_live_..." \
-H "Content-Type: application/json" \
-d '{"decision":"reject","comment":"Please fix the headline."}'Límites de uso
Los límites se aplican por espacio de trabajo, por minuto y por día (UTC). Las respuestas incluyen los encabezados siguientes. Al superar un límite recibes 429 con Retry-After. Para aumentar un límite, envía una solicitud en Configuración, API. Nuestro equipo la revisa.
- X-RateLimit-Limit
- Solicitudes permitidas por minuto.
- X-RateLimit-Remaining
- Solicitudes restantes en el minuto actual.
- X-RateLimit-Reset
- Hora Unix en que se reinicia la ventana del minuto.
- X-RateLimit-Day-Limit
- Solicitudes permitidas por día.
- X-RateLimit-Day-Remaining
- Solicitudes restantes hoy.
- Retry-After
- Segundos que hay que esperar antes de reintentar. Solo en 429.
Errores
Los errores devuelven JSON con la forma {"error": {"code": ..., "message": ...}}.
| Código | Estado | Significado |
|---|---|---|
| invalid_key | 401 | Falta la clave, tiene un formato incorrecto o fue revocada. |
| expired | 401 | La clave ha caducado. Crea o rota una clave. |
| ip_denied | 403 | La clave está limitada a otras direcciones IP. |
| plan_required | 403 | El espacio de trabajo no tiene el plan Team o superior. |
| access_required | 403 | El acceso a la API no está aprobado para este espacio de trabajo. |
| suspended | 403 | El acceso a la API de este espacio de trabajo está suspendido. |
| scope_denied | 403 | La clave no tiene el scope que necesita este endpoint. |
| personal_key_required | 403 | Solo una clave personal puede aprobar o rechazar. |
| denied | 403 | El rol del titular de la clave no lo permite. |
| unknown_endpoint | 404 | Ese endpoint no existe. |
| comment_required | 400 | Para rechazar hace falta un motivo. |
| confirmation_required | 409 | Las advertencias requieren confirmación. Reenvía la solicitud con force en true. |
| rate_limited | 429 | Se superó el límite por minuto. |
| daily_limit | 429 | Se alcanzó el límite diario. |
Webhooks
Las alertas, las solicitudes de aprobación y el resumen matutino también pueden enviarse a tu sistema. Añade un destino en Configuración, API, Webhooks. Las solicitudes son JSON con los campos event (alert, approval o briefing), workspace, title, text, url, data y sentAt. Una solicitud de aprobación incluye data.kind (press_release, blog o event) y data.id, que puedes usar para leer y decidir mediante la API.
Las solicitudes van firmadas. Calcula el HMAC-SHA256 del cuerpo sin procesar con tu secreto de firma y compáralo con el encabezado X-Marcomm-Signature, que tiene la forma sha256=<hex>. Rechaza las solicitudes que no coincidan.
Verificar un webhook en Node.js
import { createHmac, timingSafeEqual } from 'node:crypto';
export function isFromMarcomm(rawBody: string, signature: string, secret: string) {
const expected = 'sha256=' + createHmac('sha256', secret).update(rawBody).digest('hex');
const a = Buffer.from(expected);
const b = Buffer.from(signature);
return a.length === b.length && timingSafeEqual(a, b);
}Guías de conexión
Aprobar desde tu sistema de aprobaciones
- Añade un destino de webhook genérico y activa las solicitudes de aprobación.
- Cuando llegue un webhook de aprobación, verifica la firma y lee data.kind y data.id.
- Muestra la solicitud en tu sistema de aprobaciones. Si lo necesitas, lee el texto con GET press-releases/{id} o blog-posts/{id}.
- Envía la decisión con la clave personal de quien decide. Los eventos y los envíos de correo se deciden en la aplicación mediante el enlace del mensaje.
Alimentar tu panel con el resumen de noticias
- Crea una clave del espacio de trabajo con los scopes news y crisis.
- Llama a news/digest de forma programada, por ejemplo cada mañana.
- Llama a crisis/incidents con más frecuencia si quieres tus propias alertas. Vigila los encabezados X-RateLimit para mantenerte dentro de tus límites.
Alertas en tu chat
- Para Teams y Google Chat, crea la URL de webhook de la sala y añádela como destino en Configuración, API, Webhooks.
- Para JANDI, Dooray! y Chatwork, conéctalos desde Configuración, Integraciones.
- Elige si cada destino recibe alertas, solicitudes de aprobación y el resumen matutino, y envía un mensaje de prueba.
¿Listo para conectar?
El propietario o un administrador del espacio de trabajo envía la solicitud en Configuración, API. Te avisamos por correo y en la aplicación cuando termine la revisión.
Abrir la configuración de la API