Zum Inhalt springen
MarcommAI
Entwickler

Verbinden Sie Ihre Systeme mit Marcomm AI

Lesen Sie Nachrichtenübersichten, kritische Meldungen und offene Freigaben aus Ihren eigenen Systemen und genehmigen oder lehnen Sie direkt in Ihren Freigabetools ab. Die API steht ab dem Team-Tarif nach einer kurzen Prüfung zur Verfügung.

Erste Schritte

  1. 1
    Zugang beantragen

    Beschreiben Sie Ihr System und wählen Sie die benötigten Daten. Wir prüfen die Anträge.

  2. 2
    Schlüssel erstellen

    Nach der Freigabe erstellen Sie unter Einstellungen, API einen Schlüssel. Er wird nur einmal angezeigt, speichern Sie ihn daher in Ihrem System.

  3. 3
    Anfrage senden

    Senden Sie den Schlüssel im Authorization-Header und rufen Sie einen der unten aufgeführten Endpunkte auf.

Beispielanfrage

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

Authentifizierung

Senden Sie Ihren Schlüssel bei jeder Anfrage als Bearer-Token. Ein persönlicher Schlüssel handelt als die Person, die ihn erstellt hat, und kann daher in deren Namen Freigaben lesen und entscheiden. Ein Workspace-Schlüssel wird von einem Admin erstellt und kann nur lesen. Schlüssel können ablaufen, auf IP-Adressen beschränkt und rotiert werden: Der alte Schlüssel funktioniert nach einer Rotation noch 24 Stunden.

Scopes

Ein Schlüssel enthält nur die Scopes, für die Ihr Antrag genehmigt wurde.

news
Nachrichtenübersicht, Artikel und Medien.
crisis
Kritische Meldungen und Krisenvorfälle.
approvals
Offene Freigaben sowie deren Genehmigung oder Ablehnung mit einem persönlichen Schlüssel.
content
Pressemitteilungen und Blogbeiträge lesen.

Endpunkte

Die Pfade beginnen mit /api/v1. Lesende Endpunkte nutzen GET und nehmen Query-Parameter entgegen. Die Antwort ist JSON in der Form {"data": ...}.

MethodePfadScopeFunktion
GET/api/v1/news/digestnewsBerichtsvolumen, Stimmung und wichtigste Medien für einen Zeitraum.
GET/api/v1/news/articlesnewsNachrichtenberichterstattung durchsuchen.
GET/api/v1/news/outletsnewsMedien, die über Ihre Unternehmen berichten.
GET/api/v1/crisis/incidentscrisisKrisenvorfälle und kritische Artikel.
GET/api/v1/approvalsapprovalsPressemitteilungen und Blogbeiträge, die auf den Schlüsselinhaber warten, sowie die, deren Freigabe der Schlüsselinhaber angefordert hat.
GET/api/v1/press-releasescontentPressemitteilungen auflisten.
GET/api/v1/press-releases/{id}contentEine Pressemitteilung mit Einleitung und Text.
GET/api/v1/blog-postscontentBlogbeiträge auflisten.
GET/api/v1/blog-posts/{id}contentEin Blogbeitrag mit Text.
POST/api/v1/approvals/press-releases/{id}approvalsEine Pressemitteilung genehmigen oder ablehnen, die auf den Schlüsselinhaber wartet.
POST/api/v1/approvals/blog-posts/{id}approvalsEinen Blogbeitrag genehmigen oder ablehnen, der auf den Schlüsselinhaber wartet.

Genehmigen und ablehnen

Senden Sie {"decision": "approve"} oder {"decision": "reject", "comment": "..."} an das Element. Für eine Ablehnung ist ein Kommentar nötig. Die Entscheidung folgt denselben Regeln wie in der App und in Slack und wird unter dem Schlüsselinhaber erfasst. Enthält der Text Formulierungen, die bestätigt werden müssen, erhalten Sie 409 confirmation_required mit den Warnungen und können die Anfrage mit "force": true erneut senden.

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."}'

Ratenlimits

Die Limits gelten pro Workspace, pro Minute und pro Tag (UTC). Die Antworten enthalten die folgenden Header. Bei Überschreitung erhalten Sie 429 mit Retry-After. Für ein höheres Limit stellen Sie unter Einstellungen, API eine Anfrage. Unser Team prüft sie.

X-RateLimit-Limit
Anfragen pro Minute.
X-RateLimit-Remaining
Verbleibende Anfragen in der aktuellen Minute.
X-RateLimit-Reset
Unix-Zeitpunkt, zu dem das Minutenfenster zurückgesetzt wird.
X-RateLimit-Day-Limit
Anfragen pro Tag.
X-RateLimit-Day-Remaining
Verbleibende Anfragen heute.
Retry-After
Sekunden bis zum nächsten Versuch. Nur bei 429.

Fehler

Fehler werden als JSON in der Form {"error": {"code": ..., "message": ...}} zurückgegeben.

CodeStatusBedeutung
invalid_key401Der Schlüssel fehlt, ist fehlerhaft oder wurde widerrufen.
expired401Der Schlüssel ist abgelaufen. Erstellen oder rotieren Sie einen Schlüssel.
ip_denied403Der Schlüssel ist auf andere IP-Adressen beschränkt.
plan_required403Der Workspace hat nicht den Team-Tarif oder höher.
access_required403Der API-Zugang ist für diesen Workspace nicht genehmigt.
suspended403Der API-Zugang für diesen Workspace ist gesperrt.
scope_denied403Dem Schlüssel fehlt der Scope, den dieser Endpunkt benötigt.
personal_key_required403Nur ein persönlicher Schlüssel kann genehmigen oder ablehnen.
denied403Die Rolle des Schlüsselinhabers erlaubt das nicht.
unknown_endpoint404Diesen Endpunkt gibt es nicht.
comment_required400Für eine Ablehnung ist eine Begründung erforderlich.
confirmation_required409Warnungen müssen bestätigt werden. Senden Sie die Anfrage erneut mit force auf true.
rate_limited429Das Limit pro Minute wurde überschritten.
daily_limit429Das Tageslimit wurde erreicht.

Webhooks

Warnungen, Freigabeanfragen und das Morgenbriefing können auch an Ihr System gesendet werden. Fügen Sie ein Ziel unter Einstellungen, API, Webhooks hinzu. Jede Anfrage ist JSON mit den Feldern event (alert, approval oder briefing), workspace, title, text, url, data und sentAt. Eine Freigabeanfrage enthält data.kind (press_release, blog oder event) und data.id, mit denen Sie über die API lesen und entscheiden können.

Anfragen sind signiert. Berechnen Sie den HMAC-SHA256 des rohen Anfragetexts mit Ihrem Signaturgeheimnis und vergleichen Sie ihn mit dem Header X-Marcomm-Signature im Format sha256=<hex>. Weisen Sie Anfragen ab, die nicht übereinstimmen.

Webhook in Node.js prüfen

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);
}

Anbindungsanleitungen

Aus Ihrem Freigabesystem genehmigen

  1. Fügen Sie ein generisches Webhook-Ziel hinzu und aktivieren Sie Freigabeanfragen.
  2. Wenn ein Freigabe-Webhook eintrifft, prüfen Sie die Signatur und lesen Sie data.kind und data.id.
  3. Zeigen Sie die Anfrage in Ihrem Freigabesystem an. Den Text lesen Sie bei Bedarf mit GET press-releases/{id} oder blog-posts/{id}.
  4. Senden Sie die Entscheidung mit dem persönlichen Schlüssel der entscheidenden Person. Termine und E-Mail-Versände werden in der App über den Link in der Nachricht entschieden.

Nachrichtenübersicht in Ihr Dashboard einspeisen

  1. Erstellen Sie einen Workspace-Schlüssel mit den Scopes news und crisis.
  2. Rufen Sie news/digest nach Zeitplan auf, zum Beispiel jeden Morgen.
  3. Rufen Sie crisis/incidents häufiger auf, wenn Sie eigene Alarme wünschen. Beachten Sie die X-RateLimit-Header, um innerhalb Ihrer Limits zu bleiben.

Warnungen in Ihrem Chat

  1. Erstellen Sie für Teams und Google Chat die Webhook-URL des Raums und fügen Sie sie unter Einstellungen, API, Webhooks als Ziel hinzu.
  2. Verbinden Sie JANDI, Dooray! und Chatwork unter Einstellungen, Integrationen.
  3. Wählen Sie, ob jedes Ziel Warnungen, Freigabeanfragen und das Morgenbriefing erhält, und senden Sie eine Testnachricht.

Bereit zur Verbindung?

Ein Eigentümer oder Admin des Workspace stellt den Antrag unter Einstellungen, API. Sobald die Prüfung abgeschlossen ist, benachrichtigen wir Sie per E-Mail und in der App.

API-Einstellungen öffnen