Conecte seus sistemas ao Marcomm AI
Leia resumos de notícias, notícias críticas e aprovações pendentes a partir dos seus próprios sistemas e aprove ou rejeite nas suas ferramentas de aprovação. A API está disponível no plano Team ou superior, após uma análise rápida.
Primeiros passos
- 1Peça acesso
Descreva seu sistema e escolha os dados de que precisa. Cada pedido passa por análise.
- 2Crie uma chave
Depois da aprovação, crie uma chave em Configurações > API. A chave aparece uma única vez, então guarde-a no seu sistema.
- 3Envie uma requisição
Envie a chave no cabeçalho Authorization e chame um dos endpoints abaixo.
Exemplo de requisição
curl https://app.marcomm.works/api/v1/news/digest?days=7 \
-H "Authorization: Bearer mc_live_..."Autenticação
Envie sua chave como token Bearer em cada requisição. Uma chave pessoal age como a pessoa que a criou, então pode ler e decidir aprovações em nome dela. Uma chave do espaço de trabalho é criada por um administrador e só pode ler. As chaves podem expirar, ser limitadas a endereços IP e ser rotacionadas: depois da rotação, a chave antiga continua funcionando por 24 horas.
Escopos
Cada chave carrega apenas os escopos para os quais seu aplicativo foi aprovado.
- news
- Resumo de notícias, artigos e veículos.
- crisis
- Notícias críticas e incidentes de crise.
- approvals
- Aprovações pendentes e a aprovação ou rejeição delas com uma chave pessoal.
- content
- Leitura de press releases e posts de blog.
Endpoints
Os caminhos começam com /api/v1. Os endpoints de leitura usam GET e aceitam parâmetros de consulta. A resposta é um JSON no formato {"data": ...}.
| Método | Caminho | Escopo | O que faz |
|---|---|---|---|
| GET | /api/v1/news/digest | news | Volume de cobertura, sentimento e principais veículos de um período. |
| GET | /api/v1/news/articles | news | Busca na cobertura de notícias. |
| GET | /api/v1/news/outlets | news | Veículos que cobrem suas empresas. |
| GET | /api/v1/crisis/incidents | crisis | Incidentes de crise e artigos críticos. |
| GET | /api/v1/approvals | approvals | Press releases e posts de blog aguardando o dono da chave, e os que o dono da chave pediu para aprovar. |
| GET | /api/v1/press-releases | content | Lista os press releases. |
| GET | /api/v1/press-releases/{id} | content | Um press release com o lead e o texto. |
| GET | /api/v1/blog-posts | content | Lista os posts de blog. |
| GET | /api/v1/blog-posts/{id} | content | Um post de blog com o texto. |
| POST | /api/v1/approvals/press-releases/{id} | approvals | Aprova ou rejeita um press release que aguarda o dono da chave. |
| POST | /api/v1/approvals/blog-posts/{id} | approvals | Aprova ou rejeita um post de blog que aguarda o dono da chave. |
Aprovar e rejeitar
Envie {"decision": "approve"} ou {"decision": "reject", "comment": "..."} para o item. Rejeitar exige um comentário. A decisão segue as mesmas regras do app e do Slack e fica registrada em nome do dono da chave. Quando o texto contém expressões que exigem confirmação, você recebe 409 confirmation_required com os avisos, e pode enviar a requisição de novo com "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."}'Limites de requisições
Os limites são definidos por espaço de trabalho, por minuto e por dia (UTC). As respostas trazem os cabeçalhos abaixo. Ao passar do limite, você recebe 429 com Retry-After. Para aumentar um limite, peça o aumento em Configurações > API. Nossa equipe analisa o pedido.
- X-RateLimit-Limit
- Requisições permitidas por minuto.
- X-RateLimit-Remaining
- Requisições restantes no minuto atual.
- X-RateLimit-Reset
- Horário Unix em que a janela do minuto é reiniciada.
- X-RateLimit-Day-Limit
- Requisições permitidas por dia.
- X-RateLimit-Day-Remaining
- Requisições restantes hoje.
- Retry-After
- Segundos de espera antes de tentar de novo. Somente em 429.
Erros
Os erros retornam JSON no formato {"error": {"code": ..., "message": ...}}.
| Código | Status | Significado |
|---|---|---|
| invalid_key | 401 | A chave está ausente, mal formada ou foi revogada. |
| expired | 401 | A chave expirou. Crie ou rotacione uma chave. |
| ip_denied | 403 | A chave está limitada a outros endereços IP. |
| plan_required | 403 | O espaço de trabalho não está no plano Team ou superior. |
| access_required | 403 | O acesso à API não foi aprovado para este espaço de trabalho. |
| suspended | 403 | O acesso à API deste espaço de trabalho está suspenso. |
| scope_denied | 403 | A chave não tem o escopo que este endpoint exige. |
| personal_key_required | 403 | Somente uma chave pessoal pode aprovar ou rejeitar. |
| denied | 403 | O papel do dono da chave não permite isso. |
| unknown_endpoint | 404 | Esse endpoint não existe. |
| comment_required | 400 | É preciso informar um motivo para rejeitar. |
| confirmation_required | 409 | Os avisos precisam de confirmação. Reenvie com force definido como true. |
| rate_limited | 429 | O limite por minuto foi excedido. |
| daily_limit | 429 | O limite diário foi atingido. |
Webhooks
Alertas, pedidos de aprovação e o briefing da manhã também podem ser enviados ao seu sistema. Adicione um destino em Configurações > API > Webhooks. Cada requisição é um JSON com os campos event (alert, approval ou briefing), workspace, title, text, url, data e sentAt. Um pedido de aprovação traz data.kind (press_release, blog ou event) e data.id, que você pode usar para ler e decidir pela API.
Cada requisição é assinada. Calcule o HMAC-SHA256 do corpo bruto da requisição com seu segredo de assinatura e compare com o cabeçalho X-Marcomm-Signature, no formato sha256=<hex>. Rejeite as requisições que não coincidirem.
Verificando um webhook em 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);
}Guias de conexão
Aprove a partir do seu sistema de aprovação
- Adicione um destino de webhook genérico e ative os pedidos de aprovação.
- Quando um webhook de aprovação chegar, verifique a assinatura e leia data.kind e data.id.
- Mostre o pedido no seu sistema de aprovação. Se precisar do texto, leia com GET press-releases/{id} ou blog-posts/{id}.
- Envie a decisão com a chave pessoal de quem decide. Eventos e envios de e-mail são decididos no app, pelo link da mensagem.
Leve o resumo de notícias para seu painel
- Crie uma chave do espaço de trabalho com os escopos news e crisis.
- Chame news/digest em intervalos regulares, por exemplo toda manhã.
- Chame crisis/incidents com mais frequência se quiser seus próprios alertas. Acompanhe os cabeçalhos X-RateLimit para ficar dentro dos limites.
Alertas no seu chat
- Para Teams e Google Chat, crie a URL de webhook da sala e adicione-a como destino em Configurações > API > Webhooks.
- Para JANDI, Dooray! e Chatwork, conecte em Configurações > Integrações.
- Escolha quais entre alertas, pedidos de aprovação e briefing da manhã cada destino recebe e envie uma mensagem de teste.
Pronto para conectar?
O proprietário ou administrador do espaço de trabalho faz o pedido em Configurações > API. Você é avisado por e-mail e no app quando a análise terminar.
Abrir configurações da API