Lyssnar …
Teknisk referens
Fråga om en mottagare är spärrad innan ni kontaktar den. Anropet innehåller en hash, inte en person: vi kan varken läsa numret eller räkna tillbaka det. Svaret är ett ja eller nej, plus ett kvittonummer ni kan visa upp i efterhand.
API:t har två slutpunkter. /v1/suppression/check svarar på en mottagare i taget och används i realtid, till exempel i ringlistan eller precis innan ett utskick. /v1/suppression/batch tar en lista och används när en kampanj förbereds.
Båda tar emot hashade identifierare. Ingen slutpunkt returnerar personuppgifter, och ingen slutpunkt bekräftar att en person existerar hos oss — bara att hashen inte ska kontaktas.
Ett svar med suppressed: false betyder att vi inte känner till någon spärr. Det är inte ett medgivande, och det ersätter inte er egen laglighetsbedömning.
Varje anrop bär en nyckel i Authorization-huvudet. Nycklar är miljöbundna: mm_test_ mot testmiljön, mm_live_ mot produktion. En nyckel som används mot fel miljö avvisas med 401 i stället för att tyst falla tillbaka.
Authorization: Bearer mm_live_…Content-Type: application/jsonIdempotency-Key: <uuid v4> # rekommenderas för alla skrivande anropHashen beräknas hos er, med en peppar som är unik för er organisation. Det gör två saker: vi kan inte återskapa kontaktuppgiften, och en läcka av era hashar går inte att korsköra mot någon annans.
# 1. Normalisera till E.164 innan något annat görs 070-123 45 67 -> +46701234567 Namn@Exempel.SE -> namn@exempel.se # 2. Hasha med er tilldelade peppar (aldrig i klienten) sha256(pepper + normalized) # 3. Skicka hashen, aldrig värdet "identifier_hash": "sha256:9f1a3c…c07d"Normaliseringen måste ske före hashningen. 070-123 45 67 och +46 70 123 45 67 är samma abonnent men olika strängar — utan normalisering blir de olika hashar och kontrollen missar spärren.
Används per mottagare, i realtid. Svarstiden är avsedd att rymmas i ett samtalsflöde, så anropet kan ligga direkt före uppringningen.
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": "kampanj-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"}Spara receipt_id tillsammans med er utskickslogg. Det är den enda referens som kopplar ihop er kontroll med vårt svar om utfallet ifrågasätts senare.
Skicka upp till 10 000 hashar per anrop. Resultatlistan har alltid samma ordning och samma längd som identifier_hashes, så ni kan indexera rakt av utan att matcha på värden.
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: samma ordning som i begäran, aldrig omkastad{ "results": [ { "suppressed": true, "scope": "sender" }, { "suppressed": false, "scope": null } ], "receipt_id": "rcpt_01HZK4Q2M8V44P"}Större listor delas upp av er, inte av oss. Ett anrop som överskrider taket avvisas med 400 i stället för att trunkeras tyst.
| Fält | Typ | Betydelse |
|---|---|---|
| suppressed | boolean | Sant om en spärr gäller för hashen på den angivna kanalen och det angivna syftet. |
| scope | string | null | sender = spärren gäller er organisation. global = spärren gäller all direktmarknadsföring. |
| effective_from | string (RFC 3339) | När spärren började gälla. Saknas när suppressed är falskt. |
| receipt_id | string | Kvittonummer för kontrollen. Bevarar att ni frågade, när ni frågade och vilket svar ni fick. |
| checked_at | string (RFC 3339) | Serverns tidpunkt för svaret. Använd denna, inte er egen klocka, i loggar. |
suppressed: true — kontakta inte hashen på den kanalen.suppressed: false — ingen känd spärr. Er egen bedömning gäller fortfarande.Alla fel returneras som JSON med fälten error och message. Statuskoden är auktoritativ — läs den före kroppen.
RateLimit-Remaining.Idempotency-Key så räknas försöket en gång.Testnyckeln är tillgänglig direkt och svarar mot en spegel av produktionen med syntetiska hashar. Produktionsnyckeln kräver att avsändaren är registrerad och att en kontaktväg för rättighetsbegäran är angiven.