Aller au contenu
MarcommAI
Développeurs

Connectez vos systèmes à Marcomm AI

Lisez les synthèses d’actualité, les actualités critiques et les validations en attente depuis vos propres systèmes, et approuvez ou rejetez depuis vos outils de validation. L’API est disponible avec l’offre Team et supérieures, après une courte vérification.

Pour commencer

  1. 1
    Demander l’accès

    Décrivez votre système et choisissez les données dont vous avez besoin. Nous examinons les demandes.

  2. 2
    Créer une clé

    Après approbation, créez une clé dans Paramètres, API. La clé n’est affichée qu’une fois, enregistrez-la donc dans votre système.

  3. 3
    Envoyer une requête

    Envoyez la clé dans l’en-tête Authorization et appelez l’un des points d’accès ci-dessous.

Exemple de requête

curl https://app.marcomm.works/api/v1/news/digest?days=7 \
  -H "Authorization: Bearer mc_live_..."

Authentification

Envoyez votre clé comme jeton Bearer à chaque requête. Une clé personnelle agit au nom de la personne qui l’a créée : elle peut donc lire et trancher des validations en son nom. Une clé d’espace de travail est créée par un administrateur et ne peut que lire. Les clés peuvent expirer, être limitées à des adresses IP et être renouvelées : l’ancienne clé reste valable 24 heures après un renouvellement.

Scopes

Une clé ne porte que les scopes pour lesquels votre demande a été approuvée.

news
Synthèse d’actualité, articles et médias.
crisis
Actualités critiques et incidents de crise.
approvals
Validations en attente, avec approbation ou rejet à l’aide d’une clé personnelle.
content
Lecture des communiqués de presse et des articles de blog.

Points d’accès

Les chemins commencent par /api/v1. Les points de lecture utilisent GET et acceptent des paramètres de requête. La réponse est du JSON de la forme {"data": ...}.

MéthodeCheminScopeFonction
GET/api/v1/news/digestnewsVolume de couverture, tonalité et principaux médias sur une période.
GET/api/v1/news/articlesnewsRecherche dans la couverture médiatique.
GET/api/v1/news/outletsnewsMédias qui parlent de vos entreprises.
GET/api/v1/crisis/incidentscrisisIncidents de crise et articles critiques.
GET/api/v1/approvalsapprovalsCommuniqués et articles de blog en attente du titulaire de la clé, et ceux dont le titulaire a demandé la validation.
GET/api/v1/press-releasescontentListe les communiqués de presse.
GET/api/v1/press-releases/{id}contentUn communiqué de presse avec son chapeau et son texte.
GET/api/v1/blog-postscontentListe les articles de blog.
GET/api/v1/blog-posts/{id}contentUn article de blog avec son texte.
POST/api/v1/approvals/press-releases/{id}approvalsApprouve ou rejette un communiqué en attente du titulaire de la clé.
POST/api/v1/approvals/blog-posts/{id}approvalsApprouve ou rejette un article de blog en attente du titulaire de la clé.

Approuver et rejeter

Envoyez {"decision": "approve"} ou {"decision": "reject", "comment": "..."} à l’élément. Un rejet exige un commentaire. La décision suit les mêmes règles que l’application et Slack, et elle est enregistrée au nom du titulaire de la clé. Si le texte contient des formulations qui demandent confirmation, vous recevez 409 confirmation_required avec les avertissements, et vous pouvez renvoyer la requête avec "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 débit

Les limites s’appliquent par espace de travail, par minute et par jour (UTC). Les réponses portent les en-têtes ci-dessous. Au-delà d’une limite, vous recevez 429 avec Retry-After. Pour relever une limite, faites une demande dans Paramètres, API. Notre équipe l’examine.

X-RateLimit-Limit
Requêtes autorisées par minute.
X-RateLimit-Remaining
Requêtes restantes dans la minute en cours.
X-RateLimit-Reset
Heure Unix de réinitialisation de la fenêtre d’une minute.
X-RateLimit-Day-Limit
Requêtes autorisées par jour.
X-RateLimit-Day-Remaining
Requêtes restantes aujourd’hui.
Retry-After
Secondes à attendre avant de réessayer. Uniquement avec 429.

Erreurs

Les erreurs renvoient du JSON de la forme {"error": {"code": ..., "message": ...}}.

CodeStatutSignification
invalid_key401La clé est absente, mal formée ou révoquée.
expired401La clé a expiré. Créez ou renouvelez une clé.
ip_denied403La clé est limitée à d’autres adresses IP.
plan_required403L’espace de travail n’a pas l’offre Team ou supérieure.
access_required403L’accès à l’API n’est pas approuvé pour cet espace de travail.
suspended403L’accès à l’API de cet espace de travail est suspendu.
scope_denied403La clé n’a pas le scope requis par ce point d’accès.
personal_key_required403Seule une clé personnelle peut approuver ou rejeter.
denied403Le rôle du titulaire de la clé ne l’autorise pas.
unknown_endpoint404Ce point d’accès n’existe pas.
comment_required400Un motif est requis pour rejeter.
confirmation_required409Les avertissements demandent confirmation. Renvoyez la requête avec force à true.
rate_limited429La limite par minute a été dépassée.
daily_limit429La limite quotidienne a été atteinte.

Webhooks

Les alertes, les demandes de validation et le briefing du matin peuvent aussi être envoyés à votre système. Ajoutez une destination dans Paramètres, API, Webhooks. Chaque requête est du JSON avec les champs event (alert, approval ou briefing), workspace, title, text, url, data et sentAt. Une demande de validation contient data.kind (press_release, blog ou event) et data.id, que vous pouvez utiliser pour lire et trancher via l’API.

Les requêtes sont signées. Calculez le HMAC-SHA256 du corps brut de la requête avec votre secret de signature et comparez-le à l’en-tête X-Marcomm-Signature, de la forme sha256=<hex>. Rejetez les requêtes qui ne correspondent pas.

Vérifier 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);
}

Guides de connexion

Approuver depuis votre système de validation

  1. Ajoutez une destination de webhook générique et activez les demandes de validation.
  2. Quand un webhook de validation arrive, vérifiez la signature et lisez data.kind et data.id.
  3. Affichez la demande dans votre système de validation. Si besoin, lisez le texte avec GET press-releases/{id} ou blog-posts/{id}.
  4. Envoyez la décision avec la clé personnelle de la personne qui décide. Les événements et les envois d’e-mails se décident dans l’application, via le lien du message.

Alimenter votre tableau de bord avec la synthèse d’actualité

  1. Créez une clé d’espace de travail avec les scopes news et crisis.
  2. Appelez news/digest selon un calendrier, par exemple chaque matin.
  3. Appelez crisis/incidents plus souvent si vous voulez vos propres alertes. Surveillez les en-têtes X-RateLimit pour rester dans vos limites.

Alertes dans votre messagerie

  1. Pour Teams et Google Chat, créez l’URL de webhook du salon et ajoutez-la comme destination dans Paramètres, API, Webhooks.
  2. Pour JANDI, Dooray! et Chatwork, connectez-les depuis Paramètres, Intégrations.
  3. Choisissez si chaque destination reçoit les alertes, les demandes de validation et le briefing du matin, puis envoyez un message de test.

Prêt à vous connecter ?

Le propriétaire ou un administrateur de l’espace de travail dépose la demande dans Paramètres, API. Vous êtes prévenu par e-mail et dans l’application une fois la vérification terminée.

Ouvrir les paramètres de l’API