Naar inhoud springen
Ontwikkelaars

Koppel uw systemen aan Marcomm AI

Lees nieuwsoverzichten, kritiek nieuws en openstaande goedkeuringen vanuit uw eigen systemen en keur goed of af met uw eigen goedkeuringstools. De API is beschikbaar vanaf het Team-abonnement, na een korte beoordeling.

Aan de slag

  1. 1
    Toegang aanvragen

    Beschrijf uw systeem en kies de gegevens die u nodig hebt. Elke aanvraag wordt beoordeeld.

  2. 2
    Een sleutel aanmaken

    Maak na goedkeuring een sleutel aan via Instellingen > API. De sleutel wordt maar één keer getoond, dus bewaar hem in uw systeem.

  3. 3
    Een verzoek versturen

    Stuur de sleutel mee in de Authorization-header en roep een van de onderstaande endpoints aan.

Voorbeeldverzoek

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

Authenticatie

Stuur uw sleutel bij elk verzoek mee als Bearer-token. Een persoonlijke sleutel treedt op als de persoon die hem heeft aangemaakt, dus hij kan goedkeuringen lezen en beslissen namens die persoon. Een werkruimtesleutel wordt door een beheerder aangemaakt en kan alleen lezen. Sleutels kunnen verlopen, worden beperkt tot IP-adressen en worden geroteerd: na een rotatie blijft de oude sleutel nog 24 uur werken.

Scopes

Elke sleutel heeft alleen de scopes waarvoor uw toepassing is goedgekeurd.

news
Nieuwsoverzicht, artikelen en media.
crisis
Kritiek nieuws en crisisincidenten.
approvals
Openstaande goedkeuringen, en deze goed- of afkeuren met een persoonlijke sleutel.
content
Persberichten en blogberichten lezen.

Endpoints

Paden beginnen met /api/v1. Leesendpoints gebruiken GET en accepteren queryparameters. Een antwoord is JSON in de vorm {"data": ...}.

MethodePadScopeWat het doet
GET/api/v1/news/digestnewsAantal vermeldingen, sentiment en topmedia voor een periode.
GET/api/v1/news/articlesnewsZoeken in nieuwsberichtgeving.
GET/api/v1/news/outletsnewsMedia die over uw bedrijven berichten.
GET/api/v1/crisis/incidentscrisisCrisisincidenten en kritieke artikelen.
GET/api/v1/approvalsapprovalsPersberichten en blogberichten die op de sleuteleigenaar wachten, en die waarvoor de sleuteleigenaar goedkeuring heeft gevraagd.
GET/api/v1/press-releasescontentPersberichten weergeven.
GET/api/v1/press-releases/{id}contentEén persbericht met inleiding en tekst.
GET/api/v1/blog-postscontentBlogberichten weergeven.
GET/api/v1/blog-posts/{id}contentEén blogbericht met de tekst.
POST/api/v1/approvals/press-releases/{id}approvalsEen persbericht goed- of afkeuren dat op de sleuteleigenaar wacht.
POST/api/v1/approvals/blog-posts/{id}approvalsEen blogbericht goed- of afkeuren dat op de sleuteleigenaar wacht.

Goedkeuren en afkeuren

Stuur {"decision": "approve"} of {"decision": "reject", "comment": "..."} naar het item. Bij afkeuren is een opmerking verplicht. De beslissing volgt dezelfde regels als in de app en Slack en wordt vastgelegd onder de sleuteleigenaar. Bevat de tekst formuleringen die bevestiging vereisen, dan ontvangt u 409 confirmation_required met de waarschuwingen en kunt u het verzoek opnieuw versturen met "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."}'

Aanvraaglimieten

Limieten gelden per werkruimte, per minuut en per dag (UTC). Antwoorden bevatten de onderstaande headers. Boven de limiet ontvangt u 429 met Retry-After. Vraag een verhoging aan via Instellingen > API als u een limiet wilt verhogen. Ons team beoordeelt de aanvraag.

X-RateLimit-Limit
Toegestane verzoeken per minuut.
X-RateLimit-Remaining
Resterende verzoeken in de huidige minuut.
X-RateLimit-Reset
Unix-tijd waarop het minuutvenster wordt gereset.
X-RateLimit-Day-Limit
Toegestane verzoeken per dag.
X-RateLimit-Day-Remaining
Resterende verzoeken vandaag.
Retry-After
Seconden wachten voordat u het opnieuw probeert. Alleen bij 429.

Fouten

Fouten worden teruggegeven als JSON in de vorm {"error": {"code": ..., "message": ...}}.

CodeStatusBetekenis
invalid_key401De sleutel ontbreekt, heeft een ongeldig formaat of is ingetrokken.
expired401De sleutel is verlopen. Maak een sleutel aan of roteer de sleutel.
ip_denied403De sleutel is beperkt tot andere IP-adressen.
plan_required403De werkruimte heeft geen Team-abonnement of hoger.
access_required403API-toegang is niet goedgekeurd voor deze werkruimte.
suspended403API-toegang voor deze werkruimte is opgeschort.
scope_denied403De sleutel heeft niet de scope die dit endpoint nodig heeft.
personal_key_required403Alleen een persoonlijke sleutel kan goed- of afkeuren.
denied403De rol van de sleuteleigenaar staat dit niet toe.
unknown_endpoint404Dit endpoint bestaat niet.
comment_required400Voor afkeuren is een reden vereist.
confirmation_required409Waarschuwingen vragen om bevestiging. Verstuur opnieuw met force op true.
rate_limited429De limiet per minuut is overschreden.
daily_limit429De dagelijkse limiet is bereikt.

Webhooks

Meldingen, goedkeuringsverzoeken en de ochtendbriefing kunnen ook naar uw systeem worden gepusht. Voeg een bestemming toe via Instellingen > API > Webhooks. Elk verzoek is JSON met de velden event (alert, approval of briefing), workspace, title, text, url, data en sentAt. Een goedkeuringsverzoek bevat data.kind (press_release, blog of event) en data.id, waarmee u via de API kunt lezen en beslissen.

Elk verzoek is ondertekend. Bereken de HMAC-SHA256 van de ruwe verzoekbody met uw ondertekeningsgeheim en vergelijk die met de X-Marcomm-Signature-header, in de vorm sha256=<hex>. Weiger verzoeken die niet overeenkomen.

Een webhook verifiëren in 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);
}

Koppelgidsen

Goedkeuren vanuit uw goedkeuringssysteem

  1. Voeg een algemene webhookbestemming toe en schakel goedkeuringsverzoeken in.
  2. Controleer bij een binnenkomende goedkeuringswebhook de handtekening en lees data.kind en data.id.
  3. Toon het verzoek in uw goedkeuringssysteem. Lees de tekst indien nodig met GET press-releases/{id} of blog-posts/{id}.
  4. Verstuur de beslissing met de persoonlijke sleutel van degene die beslist. Evenementen en e-mailverzendingen worden in de app beslist via de link in het bericht.

Het nieuwsoverzicht in uw dashboard tonen

  1. Maak een werkruimtesleutel aan met de scopes news en crisis.
  2. Roep news/digest volgens een schema aan, bijvoorbeeld elke ochtend.
  3. Roep crisis/incidents vaker aan als u eigen meldingen wilt. Houd de X-RateLimit-headers in de gaten om binnen uw limieten te blijven.

Meldingen in uw chat

  1. Maak voor Teams en Google Chat de webhook-URL van de ruimte aan en voeg die toe als bestemming via Instellingen > API > Webhooks.
  2. Koppel JANDI, Dooray! en Chatwork via Instellingen > Integraties.
  3. Kies per bestemming welke meldingen, goedkeuringsverzoeken en ochtendbriefings worden ontvangen en verstuur een testbericht.

Klaar om te koppelen?

Een eigenaar of beheerder van de werkruimte vraagt toegang aan via Instellingen > API. U ontvangt een melding per e-mail en in de app zodra de beoordeling klaar is.

API-instellingen openen