Saltar al contenido
Desarrolladores

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

  1. 1
    Solicita acceso

    Describe tu sistema y elige los datos que necesitas. Revisamos las solicitudes.

  2. 2
    Crea 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.

  3. 3
    Enví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étodoRutaScopeQué hace
GET/api/v1/news/digestnewsVolumen de cobertura, sentimiento y principales medios de un periodo.
GET/api/v1/news/articlesnewsBusca cobertura de noticias.
GET/api/v1/news/outletsnewsMedios que cubren a tus empresas.
GET/api/v1/crisis/incidentscrisisIncidentes de crisis y artículos críticos.
GET/api/v1/approvalsapprovalsNotas de prensa y entradas de blog que esperan al titular de la clave, y las que el titular pidió aprobar.
GET/api/v1/press-releasescontentLista las notas de prensa.
GET/api/v1/press-releases/{id}contentUna nota de prensa con su párrafo inicial y su texto.
GET/api/v1/blog-postscontentLista las entradas de blog.
GET/api/v1/blog-posts/{id}contentUna entrada de blog con su texto.
POST/api/v1/approvals/press-releases/{id}approvalsAprueba o rechaza una nota de prensa que espera al titular de la clave.
POST/api/v1/approvals/blog-posts/{id}approvalsAprueba 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ódigoEstadoSignificado
invalid_key401Falta la clave, tiene un formato incorrecto o fue revocada.
expired401La clave ha caducado. Crea o rota una clave.
ip_denied403La clave está limitada a otras direcciones IP.
plan_required403El espacio de trabajo no tiene el plan Team o superior.
access_required403El acceso a la API no está aprobado para este espacio de trabajo.
suspended403El acceso a la API de este espacio de trabajo está suspendido.
scope_denied403La clave no tiene el scope que necesita este endpoint.
personal_key_required403Solo una clave personal puede aprobar o rechazar.
denied403El rol del titular de la clave no lo permite.
unknown_endpoint404Ese endpoint no existe.
comment_required400Para rechazar hace falta un motivo.
confirmation_required409Las advertencias requieren confirmación. Reenvía la solicitud con force en true.
rate_limited429Se superó el límite por minuto.
daily_limit429Se 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

  1. Añade un destino de webhook genérico y activa las solicitudes de aprobación.
  2. Cuando llegue un webhook de aprobación, verifica la firma y lee data.kind y data.id.
  3. Muestra la solicitud en tu sistema de aprobaciones. Si lo necesitas, lee el texto con GET press-releases/{id} o blog-posts/{id}.
  4. 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

  1. Crea una clave del espacio de trabajo con los scopes news y crisis.
  2. Llama a news/digest de forma programada, por ejemplo cada mañana.
  3. 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

  1. Para Teams y Google Chat, crea la URL de webhook de la sala y añádela como destino en Configuración, API, Webhooks.
  2. Para JANDI, Dooray! y Chatwork, conéctalos desde Configuración, Integraciones.
  3. 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