Lytter …
Teknisk referanse
Spør om en mottaker har reservert seg før du kontakter dem. Kallet inneholder en hash, ikke en person: vi kan verken lese nummeret eller reversere det. Svaret er ja eller nei, pluss et kvitteringsnummer du kan fremlegge senere.
API-et har to endepunkter. /v1/suppression/check svarer for én mottaker om gangen og brukes i sanntid — for eksempel i en ringekø eller rett før en utsending. /v1/suppression/batch tar imot en liste og brukes når en kampanje forberedes.
Begge tar imot hashede identifikatorer. Ingen endepunkter returnerer personopplysninger, og ingen bekrefter at en person finnes i systemet vårt — bare at hashen ikke bør kontaktes.
Et svar med suppressed: false betyr at vi ikke kjenner til noen reservasjon. Det er ikke samtykke, og det erstatter ikke din egen lovlighetsvurdering.
Hvert kall inneholder en nøkkel i Authorization-headeren. Nøkler er miljøbundet: mm_test_ for testmiljøet, mm_live_ for produksjon. En nøkkel brukt mot feil miljø avvises med 401 i stedet for å falle stille tilbake.
Authorization: Bearer mm_live_…Content-Type: application/jsonIdempotency-Key: <uuid v4> # anbefalt for hvert skrivekallHashen beregnes hos deg, med en pepper som er unik for organisasjonen din. Det gjør to ting: vi kan ikke rekonstruere kontaktopplysningen, og en lekkasje av hashene dine kan ikke krysskjøres mot noen andres.
# 1. Normaliser til E.164 før noe annet gjøres 070-123 45 67 -> +46701234567 Navn@Eksempel.NO -> navn@eksempel.no # 2. Hash med den tildelte pepperen din (aldri i klienten) sha256(pepper + normalized) # 3. Send hashen, aldri verdien "identifier_hash": "sha256:9f1a3c…c07d"Normaliseringen må skje før hashingen. 070-123 45 67 og +46 70 123 45 67 er samme abonnent, men ulike strenger — uten normalisering hasher de forskjellig, og sjekken går glipp av reservasjonen.
Brukes per mottaker, i sanntid. Svartiden er utformet for å passe inn i en samtaleflyt, slik at sjekken kan ligge rett før oppringingen.
POST /v1/suppression/check HTTP/1.1Host: api.marketmute.comAuthorization: Bearer mm_live_…Content-Type: application/jsonIdempotency-Key: 8c1f0b52-3a77-4a1e-9f0c-2b7d4e11ab90 { "channel": "phone", "identifier_hash": "sha256:9f1a3c…c07d", "purpose": "direct_marketing", "sender_ref": "campaign-2026-h2"}HTTP/1.1 200 OKContent-Type: application/jsonRateLimit-Remaining: 986 { "suppressed": true, "channel": "phone", "scope": "sender", "effective_from": "2026-03-04T09:12:00Z", "receipt_id": "rcpt_01HZK4Q2M8V3XT", "checked_at": "2026-08-19T07:41:02Z"}Lagre receipt_id sammen med sendeloggen din. Det er den eneste referansen som knytter sjekken din til svaret vårt hvis utfallet noen gang blir bestridt.
Send opptil 10 000 hasher per kall. Resultatlisten har alltid samme rekkefølge og samme lengde som identifier_hashes, slik at du kan indeksere rett over uten å matche på verdier.
POST /v1/suppression/batch HTTP/1.1Authorization: Bearer mm_live_…Content-Type: application/json { "channel": "phone", "purpose": "direct_marketing", "identifier_hashes": [ "sha256:9f1a3c…c07d", "sha256:41b8ee…9a20" ]} # Svar: samme rekkefølge som forespørselen, aldri omorganisert{ "results": [ { "suppressed": true, "scope": "sender" }, { "suppressed": false, "scope": null } ], "receipt_id": "rcpt_01HZK4Q2M8V44P"}Større lister deles opp av deg, ikke av oss. Et kall som overskrider grensen, avvises med 400 i stedet for å bli stille avkortet.
| Felt | Type | Betydning |
|---|---|---|
| suppressed | boolean | Sann hvis en reservasjon gjelder for hashen på den aktuelle kanalen og formålet. |
| scope | string | null | sender = reservasjonen gjelder din organisasjon. global = reservasjonen gjelder all direkte markedsføring. |
| effective_from | string (RFC 3339) | Når reservasjonen trådte i kraft. Mangler når suppressed er false. |
| receipt_id | string | Kvitteringsnummer for sjekken. Beviser at du spurte, når du spurte, og hvilket svar du fikk. |
| checked_at | string (RFC 3339) | Serverens tidsstempel for svaret. Bruk dette, ikke din egen klokke, i loggene. |
suppressed: true — ikke kontakt hashen på den kanalen.suppressed: false — ingen kjent reservasjon. Din egen vurdering gjelder fortsatt.Alle feil returneres som JSON med feltene error og message. Statuskoden er avgjørende — les den før innholdet.
RateLimit-Remaining.Idempotency-Key, og forsøket telles bare én gang.Testnøkkelen er tilgjengelig umiddelbart og speiler produksjon med syntetiske hasher. Produksjonsnøkkelen krever at avsenderen er registrert, med en kontaktkanal for rettighetskrav på fil.