Μετάβαση στο κύριο περιεχόμενο

Suppressions API

Το Suppressions API διαχειρίζεται τις ανά χώρο εργασίας λίστες διευθύνσεων email και αριθμών τηλεφώνου στις οποίες το Joryio δεν θα στείλει. Μια καταστολή είναι απόλυτη πύλη: όσο ένα αναγνωριστικό είναι κατεσταλμένο σε ένα κανάλι, κάθε μήνυμα προς αυτό στο συγκεκριμένο κανάλι παραλείπεται, ανεξάρτητα από το ποια καμπάνια ή ποιο journey προσπαθεί να το προσεγγίσει.

Αυτό το API αντικατοπτρίζει την επιφάνεια Κοινό → Λίστες καταστολής του dashboard. Χρησιμοποιήστε το για να ελέγξετε ποιοι είναι κατεσταλμένοι, να μεταφέρετε μια υπάρχουσα λίστα νεκρών διευθύνσεων από άλλη πλατφόρμα, να τιμήσετε ένα αίτημα συγκατάθεσης από τα δικά σας συστήματα ή να άρετε μια καταστολή αφού επιλυθεί ένα hard bounce.

Όλα τα endpoints αυτής της σελίδας είναι σχετικά ως προς το βασικό URL: https://api-eu1.joryio.com/api - δείτε Επισκόπηση API.

Έλεγχος ταυτότητας​

Κάθε αίτημα ελέγχεται είτε με κλειδί API που φέρει το σχετικό scope παραδοσιμότητας είτε με συνεδρία dashboard (JWT). Τα δεδομένα καταστολής ισχύουν ανά χώρο εργασίας - ένα κλειδί βλέπει και επεξεργάζεται μόνο τις λίστες του δικού του χώρου εργασίας.

Authorization: Bearer jry_live_your_api_key_here
Content-Type: application/json

Scopes ανά endpoint​

Το κανάλι καθορίζει ποιο scope απαιτείται. Τα endpoints email χρειάζονται το scope email_suppression:*· τα endpoints SMS και WhatsApp χρειάζονται το scope sms_suppression:*.

EndpointΚανάλι emailΚανάλι SMS / WhatsApp
GET /suppressionsemail_suppression:readsms_suppression:read
GET /suppressions/{identifier}email_suppression:readsms_suppression:read
POST /suppressionsemail_suppression:writesms_suppression:write
POST /suppressions/hard-bounceemail_suppression:write- (μόνο email)
POST /suppressions/importemail_suppression:writesms_suppression:write
DELETE /suppressions/{identifier}email_suppression:writesms_suppression:write

Βασικές έννοιες​

Διαβάστε αυτή την ενότητα πριν καλέσετε τα endpoints εγγραφής - το υπόλοιπο API βγάζει νόημα μόνο όταν έχει ξεκαθαρίσει ο διαχωρισμός reason και source.

reason (γιατί) και source (από πού προήλθε)​

Κάθε γραμμή καταστολής φέρει δύο ανεξάρτητα πεδία:

  • reason - γιατί είναι κατεσταλμένο το αναγνωριστικό. Ένα από τα unsubscribe, hard_bounce, complaint, manual.
  • source - από πού προήλθε η καταστολή (η προέλευσή της). Ένα από τα delivery, api, import ή μια πηγή συγκατάθεσης όπως unsubscribe_link.

Είναι ορθογώνια. Ο ίδιος reason μπορεί να προέλθει από διαφορετικές πηγές - ένα hard_bounce που παρατήρησε η δική μας γραμμή αποστολής έχει source: "delivery", ενώ ένα hard_bounce που δηλώνετε εσείς μέσω αυτού του API έχει source: "api". Ο λόγος (reason) σας λέει τη σημασία σε επίπεδο παραδοσιμότητας/συγκατάθεσης· η πηγή (source) σας λέει πόσο να την εμπιστευτείτε και αν προσμετράται στις μετρικές φήμης σας.

Λόγοι συγκατάθεσης και λόγοι παραδοσιμότητας​

Οι τέσσερις λόγοι χωρίζονται σε δύο οικογένειες με διαφορετική συμπεριφορά:

ΟικογένειαΛόγοιΣημασίαΕπιβιώνει μιας επανεγγραφής;
Συγκατάθεσηunsubscribe, manualΟ παραλήπτης (ή εσείς, εκ μέρους του) ζήτησε να μην ενοχλείται.Όχι - μια επανεγγραφή αφήνει να περάσει μόνο εκείνη την επαφή (οι άλλες επαφές με τη διεύθυνση παραμένουν αποκλεισμένες)· το DELETE /suppressions την αίρει.
Παραδοσιμότηταhard_bounce, complaintΗ διεύθυνση/ο αριθμός είναι νεκρός ή μας επισήμανε ως spam.Ναι - παραμένει ακόμη κι αν ο παραλήπτης επανεγγραφεί.

Μια καταστολή παραδοσιμότητας είναι τεχνικό γεγονός για τη διεύθυνση, όχι προτίμηση, οπότε η επανεγγραφή του παραλήπτη δεν την αίρει - ούτε το API, μια εισαγωγή ή ο πίνακας ελέγχου. Μόνο η υποστήριξη του Joryio αίρει ένα hard bounce ή μια καταγγελία spam (ή η αλλαγή της επαφής σε νέα διεύθυνση email).

Δεν μπορείτε να κατασκευάσετε bounce​

Οι συνήθεις διαδρομές εγγραφής - POST /suppressions και POST /suppressions/import - περιορίζουν το reason σε manual ή unsubscribe. Είναι φυσικά αδύνατο να δημιουργήσουν γραμμή hard_bounce ή complaint. Ένα bounce είναι κάτι που η πλατφόρμα παρατηρεί, όχι κάτι που ένας πελάτης δηλώνει ελαφρά τη καρδία.

Η μόνη διαδρομή που μπορεί να δηλώσει bounce είναι το POST /suppressions/hard-bounce, και ακόμη και τότε η γραμμή σφραγίζεται με source: "api", ώστε να μη συγχέεται ποτέ με bounce που είδαμε εμείς.

Μόνο τα πραγματικά bounces αγγίζουν τη φήμη σας​

Το αναφερόμενο ποσοστό bounce του λογαριασμού σας και οι μετρικές παραδοσιμότητας/φήμης μετρούν μόνο τα bounces με source: "delivery" - αυτά που παρατήρησε η δική μας γραμμή αποστολής στο επίπεδο SMTP. Μια καταστολή δηλωμένη μέσω API (source: "api") ή εισηγμένη (source: "import") αποκλείει την αποστολή προς το αναγνωριστικό, αλλά δεν διογκώνει το αναφερόμενο ποσοστό bounce σας. Έτσι μπορείτε να προστατεύσετε τη φήμη αποστολέα σας προφορτώνοντας γνωστές νεκρές διευθύνσεις, χωρίς να μολύνετε την ίδια τη μετρική που προσπαθείτε να προστατεύσετε.

Η καταστολή ακολουθεί τη διεύθυνση / τον αριθμό​

Μια καταστολή έχει κλειδί την κανονικοποιημένη διεύθυνση email ή τον αριθμό τηλεφώνου, ανά χώρο εργασίας - όχι μια εγγραφή επαφής. Μία κατεσταλμένη διεύθυνση καλύπτει επομένως κάθε διπλότυπη επαφή που τη μοιράζεται. Καταστείλετε το [email protected] μία φορά, και όλες οι επαφές με αυτή τη διεύθυνση αποκλείονται στο email, σε όλο τον χώρο εργασίας.

Οι αριθμοί τηλεφώνου διαβάζονται όπως τους αποθηκεύουν οι επαφές: ένας αριθμός χωρίς κωδικό χώρας (0501234567) διαβάζεται στην προεπιλεγμένη χώρα για αριθμούς τηλεφώνου του χώρου εργασίας, και η καταστολή αποθηκεύεται τόσο με αυτόν τον αριθμό (+972501234567) όσο και με την παλαιότερη μορφή που μπορεί να έχουν παλαιότερες εγγραφές, ώστε να μπλοκάρει κάθε επαφή με τον αριθμό. Ένας αριθμός που δεν είναι καθόλου έγκυρος αποθηκεύεται κι αυτός - δεν απορρίπτεται ποτέ.

Ένας αμφίσημος αριθμός (έγκυρος τόσο ως εθνικός αριθμός της προεπιλεγμένης χώρας όσο και ως αριθμός άλλης χώρας) απορρίπτεται (400) όταν τον προσθέτετε ή τον αφαιρείτε, και παραλείπεται (μετράται στο ambiguous) σε μαζική εισαγωγή, επειδή μία από τις αναγνώσεις μπορεί να είναι αριθμός άλλου ατόμου: στείλτε τον με τον κωδικό χώρας (+...).


Αναφορά reason / source​

Τιμές reason​

reasonΟικογένειαΔημιουργείται από
unsubscribeΣυγκατάθεσηΣύνδεσμο opt-out του παραλήπτη, POST /suppressions, POST /suppressions/import
manualΣυγκατάθεσηΕνέργεια χειριστή, POST /suppressions, POST /suppressions/import
hard_bounceΠαραδοσιμότηταΤη δική μας γραμμή αποστολής, POST /suppressions/hard-bounce
complaintΠαραδοσιμότηταΤη δική μας γραμμή αποστολής (feedback loops)

Τιμές source​

sourceΣημασίαΠροσμετράται στη φήμη;
deliveryΠαρατηρήθηκε από τη δική μας γραμμή αποστολής/λήψης (πραγματικό bounce ή καταγγελία).Ναι
apiΔηλώθηκε μέσω αυτού του REST API.Όχι
importΦορτώθηκε μέσω POST /suppressions/import (μαζική μετάβαση).Όχι
unsubscribe_link (και άλλες πηγές συγκατάθεσης)Αλλαγή συγκατάθεσης με πρωτοβουλία του παραλήπτη.Όχι

Λίστα καταστολών​

Επιστρέφει μια σελιδοποιημένη λίστα κατεσταλμένων αναγνωριστικών σε ένα κανάλι.

Endpoint​

GET /suppressions

Παράμετροι query​

ΠαράμετροςΤύποςΠροεπιλογήΠεριγραφή
channelstring-email, sms ή whatsapp. Απαιτείται.
reasonstring-Προαιρετικό φίλτρο: unsubscribe, hard_bounce, complaint ή manual.
limitnumber100Γραμμές ανά σελίδα (μέγιστο 1000).
offsetnumber0Μετατόπιση σελιδοποίησης.

Παράδειγμα αιτήματος​

curl -X GET "https://api-eu1.joryio.com/api/suppressions?channel=email&reason=hard_bounce&limit=50" \
-H "Authorization: Bearer jry_live_your_api_key"

Απόκριση​

{
"items": [
{
"identifier": "[email protected]",
"channel": "email",
"identifierType": "email",
"reason": "hard_bounce",
"source": "delivery",
"scope": "channel",
"listId": null,
"createdAt": "2026-06-30T12:04:11.000Z"
},
{
"identifier": "[email protected]",
"channel": "email",
"identifierType": "email",
"reason": "unsubscribe",
"source": "unsubscribe_link",
"scope": "group",
"listId": "grp_newsletter",
"createdAt": "2026-07-02T09:20:00.000Z"
}
],
"total": 214,
"limit": 50,
"offset": 0
}

Έλεγχος ενός αναγνωριστικού​

Ελέγξτε αν ένα μεμονωμένο αναγνωριστικό είναι κατεσταλμένο σε ένα κανάλι.

Endpoint​

GET /suppressions/{identifier}

Η παράμετρος διαδρομής {identifier} είναι η κωδικοποιημένη σε URL διεύθυνση email ή ο αριθμός τηλεφώνου.

Παράμετροι query​

ΠαράμετροςΤύποςΠροεπιλογήΠεριγραφή
channelstring-email, sms ή whatsapp. Απαιτείται.

Παράδειγμα αιτήματος​

curl -X GET "https://api-eu1.joryio.com/api/suppressions/[email protected]?channel=email" \
-H "Authorization: Bearer jry_live_your_api_key"

Απόκριση - κατεσταλμένο​

{
"suppressed": true,
"identifier": "[email protected]",
"reason": "hard_bounce",
"source": "delivery",
"scope": "channel",
"listId": null,
"createdAt": "2026-06-30T12:04:11.000Z"
}

Απόκριση - μη κατεσταλμένο​

{
"suppressed": false
}

Προσθήκη καταστολής​

Προσθέστε μια καταστολή συγκατάθεσης ή μη αυτόματη. Χρησιμοποιήστε το για να τιμήσετε ένα opt-out που έφτασε σε εσάς μέσω των δικών σας συστημάτων (αίτημα υποστήριξης, σήμανση στο CRM, αλλαγή στο δικό σας κέντρο προτιμήσεων).

Endpoint​

POST /suppressions

Σώμα αιτήματος​

ΠεδίοΤύποςΑπαιτείταιΠεριγραφή
channelstringΝαιemail, sms ή whatsapp.
identifierstringΝαιΔιεύθυνση email ή αριθμός τηλεφώνου προς καταστολή.
reasonstringΌχιmanual (προεπιλογή) ή unsubscribe. Περιορίζεται - οποιαδήποτε άλλη τιμή απορρίπτεται.
scopestringΌχιchannel (προεπιλογή) - κάθε λίστα στο κανάλι - ή group με listId για μία λίστα.
Γιατί δεν υπάρχει εδώ εμβέλεια οργανισμού

Κάθε διαπιστευτήριο σε αυτό το endpoint φέρει έναν μόνο χώρο εργασίας: ένα κλειδί API αποθηκεύει ένα workspaceId και μια συνεδρία dashboard ενεργεί μέσα στον τρέχοντα χώρο εργασίας της. Μια καταστολή σε επίπεδο οργανισμού - που σιωπά ένα αναγνωριστικό σε κάθε χώρο εργασίας - δεν έχει εδώ καλούντα που να εκπροσωπεί τον οργανισμό, οπότε δεν μπορεί να δημιουργηθεί μέσω αυτού του API.

Ήταν κάποτε η ΠΡΟΕΠΙΛΟΓΗ, που σήμαινε ότι μια ενσωμάτωση ενός μόνο brand σιωπούσε ένα αναγνωριστικό και για τα αδελφά brands, χωρίς να το ζητήσει.

Οι γραμμές επιπέδου οργανισμού που δημιουργήθηκαν πριν από αυτή την αλλαγή εξακολουθούν να διαβάζονται και να τηρούνται κατά την αποστολή. Ένα DELETE καθαρίζει μόνο τις γραμμές αυτού του χώρου εργασίας - ποτέ μια γραμμή επιπέδου οργανισμού, γιατί αυτό θα ήρε τον αποκλεισμό και σε κάθε άλλο χώρο εργασίας. Για να αρθεί μια παλαιά γραμμή επιπέδου οργανισμού, επικοινωνήστε με την υποστήριξη του Joryio.

| listId | string | Όχι | Απαιτείται όταν το scope είναι group: η ομάδα/λίστα στην οποία ισχύει η καταστολή. Πρέπει να είναι λίστα αυτού του χώρου εργασίας - ένα listId που λείπει, ή άλλου χώρου εργασίας, επιστρέφει 400. |

Το source μιας γραμμής που δημιουργείται εδώ καταγράφεται πάντα ως api. Αυτό το endpoint δεν μπορεί να δημιουργήσει hard_bounce ή complaint.

Παράδειγμα αιτήματος​

curl -X POST https://api-eu1.joryio.com/api/suppressions \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"channel": "email",
"identifier": "[email protected]",
"reason": "unsubscribe",
"scope": "group",
"listId": "grp_newsletter"
}'

Απόκριση​

{
"identifier": "[email protected]",
"channel": "email",
"identifierType": "email",
"reason": "unsubscribe",
"source": "api",
"scope": "group",
"listId": "grp_newsletter",
"createdAt": "2026-07-11T08:15:00.000Z"
}
Το reason: "unsubscribe" ενημερώνει και τις επαφές

Με reason: "unsubscribe", κάθε επαφή του workspace με αυτό το email ή τηλέφωνο γίνεται επίσης unsubscribed στο κανάλι (ή, με scope: "group", σε αυτή τη λίστα), με εγγραφή ιστορικού. Μια καταστολή manual μπλοκάρει την αποστολή χωρίς να αλλάζει την κατάσταση των ίδιων των επαφών.


Δήλωση hard bounce​

Καταγράψτε ένα hard bounce για μια διεύθυνση email. Είναι η μόνη διαδρομή του API που μπορεί να δηλώσει καταστολή παραδοσιμότητας, και είναι σκόπιμα ξεχωριστή και περιορισμένη.

Γιατί αυτό το endpoint είναι ξεχωριστό​

  • Ένα bounce είναι φυσιολογικά κάτι που το Joryio παρατηρεί τη στιγμή της αποστολής, όχι κάτι που δηλώνει ο καλών. Το να μένει η δήλωση bounce εκτός των συνηθισμένων διαδρομών προσθήκης/εισαγωγής αποτρέπει την τυχαία ή απρόσεκτη κατασκευή.
  • Επειδή δηλώνετε εσείς αντί να παρατηρούμε εμείς, η γραμμή σφραγίζεται με source: "api". Αποκλείει την αποστολή ακριβώς όπως ένα πραγματικό bounce, αλλά δεν εκλαμβάνεται ποτέ ως bounce που είδαμε εμείς, και δεν προσμετράται στο αναφερόμενο ποσοστό bounce ή στις μετρικές φήμης αποστολέα.
  • Είναι μόνο για email. Δεν υπάρχει αντίστοιχο για τηλέφωνα - η μη παράδοση SMS/WhatsApp μοντελοποιείται διαφορετικά.

Endpoint​

POST /suppressions/hard-bounce

Σώμα αιτήματος​

ΠεδίοΤύποςΑπαιτείταιΠεριγραφή
identifierstringΝαιΗ διεύθυνση email που έκανε hard bounce.

Το κανάλι είναι σιωπηρά email. Η γραμμή καταγράφεται με reason: "hard_bounce" και source: "api".

Παράδειγμα αιτήματος​

curl -X POST https://api-eu1.joryio.com/api/suppressions/hard-bounce \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"identifier": "[email protected]"
}'

Απόκριση​

{
"identifier": "[email protected]",
"channel": "email",
"identifierType": "email",
"reason": "hard_bounce",
"source": "api",
"scope": "channel",
"listId": null,
"createdAt": "2026-07-11T08:20:00.000Z"
}

Μαζική εισαγωγή​

Φορτώστε μια υπάρχουσα λίστα καταστολών - για παράδειγμα, όταν μεταβαίνετε από άλλη πλατφόρμα.

Endpoint​

POST /suppressions/import

Σώμα αιτήματος​

ΠεδίοΤύποςΑπαιτείταιΠεριγραφή
channelstringΝαιemail, sms ή whatsapp.
entriesarrayΝαιΈως 5000 αντικείμενα, καθένα { identifier, reason? }.

Το reason κάθε εγγραφής περιορίζεται σε manual (προεπιλογή) ή unsubscribe· οποιαδήποτε άλλη τιμή μετατρέπεται σε manual. Κάθε εισηγμένη γραμμή καταγράφεται με source: "import". Όπως και το endpoint προσθήκης, η εισαγωγή δεν μπορεί να δημιουργήσει bounce ή καταγγελία.

Παράδειγμα αιτήματος​

curl -X POST https://api-eu1.joryio.com/api/suppressions/import \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"channel": "email",
"entries": [
{ "identifier": "[email protected]" },
{ "identifier": "[email protected]", "reason": "unsubscribe" },
{ "identifier": "[email protected]" }
]
}'

Απόκριση​

{
"channel": "email",
"received": 3,
"imported": 3,
"skipped": 0,
"source": "import"
}

Αφαίρεση καταστολής (άρση)​

Αφαιρέστε μια καταστολή, ώστε το Joryio να μπορεί να στείλει ξανά στο αναγνωριστικό.

Endpoint​

DELETE /suppressions/{identifier}

Παράμετροι query​

ΠαράμετροςΤύποςΠροεπιλογήΠεριγραφή
channelstring-email, sms ή whatsapp. Απαιτείται.
προειδοποίηση

Αυτό αφαιρεί τις γραμμές καταστολής συγκατάθεσης (unsubscribe, manual) του αναγνωριστικού στο κανάλι, μόνο σε αυτό το workspace. Δεν αφαιρεί ποτέ διαγραφή από λέξη STOP ούτε γραμμή hard_bounce / complaint - αυτές αναφέρονται στο kept. Οι επαφές των οποίων η κατάσταση έγινε unsubscribed παραμένουν διαγραμμένες· επανεγγράψτε μια επαφή μέσω του Subscriptions API.

Παράδειγμα αιτήματος​

curl -X DELETE "https://api-eu1.joryio.com/api/suppressions/[email protected]?channel=email" \
-H "Authorization: Bearer jry_live_your_api_key"

Απόκριση​

{
"identifier": "[email protected]",
"removed": 1,
"kept": { "deliverability": 1 }
}

Το removed είναι το πλήθος των γραμμών καταστολής που διαγράφηκαν (ένα μεμονωμένο αναγνωριστικό μπορεί να φέρει ταυτόχρονα μια γραμμή συγκατάθεσης εύρους ομάδας και μια καθολική γραμμή παραδοσιμότητας).

Το kept (υπάρχει μόνο όταν κάτι κρατήθηκε) μετρά τις γραμμές που αυτό το API δεν μπορεί να αφαιρέσει: stop_keyword (η αφαίρεσή του θα άρει τον αριθμό για κάθε επαφή που τον μοιράζεται - επανεγγράψτε τη μία επαφή μέσω του Subscriptions API, ή το άτομο στέλνει START) και deliverability (hard bounce ή καταγγελία spam - μόνο η υποστήριξη του Joryio το αίρει).

Το legacy_twin (μόνο τηλέφωνο) μετρά καταχωρίσεις με την παλιά τοπική μορφή του αριθμού (+10612345678 για το +31612345678) που κρατήθηκαν: αίρονται μόνο όταν ο χώρος εργασίας έχει προεπιλεγμένη χώρα για αριθμούς τηλεφώνου που τις διαβάζει ακριβώς ως αυτόν τον αριθμό, επειδή τα ίδια τοπικά ψηφία μπορεί να είναι αριθμός άλλης χώρας. Ένα START ακολουθεί τον ίδιο κανόνα και δεν αίρει ποτέ τέτοια καταχώριση σε διαγραφή για όλο τον οργανισμό.


Μετάβαση με υπάρχουσα λίστα καταστολών​

Όταν μετακομίζετε στο Joryio από άλλη πλατφόρμα email ή SMS, φέρτε μαζί σας τη λίστα καταστολών σας από την πρώτη μέρα, ώστε η πρώτη σας αποστολή να μην ξαναστείλει σε διευθύνσεις που ήδη γνωρίζετε ότι είναι νεκρές ή απεγγραμμένες.

  1. Εισαγάγετε ολόκληρη τη λίστα μέσω POST /suppressions/import. Οι εγγραφές φτάνουν ως manual (ή unsubscribe αν τις επισημάνετε), με source: "import". Αποκλείουν την αποστολή και προστατεύουν τη φήμη αποστολέα σας στην πρώτη αποστολή - χωρίς να διογκώνουν το αναφερόμενο ποσοστό bounce, επειδή οι εισηγμένες γραμμές δεν προσμετρώνται ποτέ στη φήμη.
  2. Μόνο αν χρειάζεστε συγκεκριμένα αυτές οι διευθύνσεις να αναφέρονται ως bounces - για παράδειγμα, για να διατηρήσετε τα αναλυτικά στοιχεία bounce συνεχή κατά τη μετάβαση - δηλώστε τις μεμονωμένα με POST /suppressions/hard-bounce. Θα σφραγιστούν και πάλι με source: "api", οπότε αποκλείουν την αποστολή και εμφανίζονται ως bounces στη λίστα καταστολών σας, χωρίς να μετρούν ως bounces που παρατηρήσαμε εμείς.

Για τις περισσότερες μεταβάσεις, το βήμα 1 από μόνο του είναι η σωστή επιλογή: σταματά τις αποστολές και κρατά καθαρές τις μετρικές φήμης σας.


Αποκρίσεις σφαλμάτων​

Όλα τα σφάλματα μοιράζονται την τυπική μορφή - δεν υπάρχει ξεχωριστό μηχαναγνώσιμο λεξιλόγιο κωδικών σφαλμάτων· χρησιμοποιήστε την κατάσταση HTTP μαζί με το πεδίο message. Δείτε Απόκριση σφάλματος στην Επισκόπηση API. Οι αποτυχίες επικύρωσης (400) προσθέτουν έναν πίνακα errors με ένα μήνυμα ανά πεδίο που απέτυχε:

{
"statusCode": 400,
"message": "Bad Request Exception",
"timestamp": "2026-07-12T09:00:00.000Z",
"path": "/suppressions",
"errors": [
"reason must be one of the following values: manual, unsubscribe"
]
}

Αξιοσημείωτο: αυτό το API επιβάλλει scopes ακριβείας καναλιού. Ένα κλειδί API που κατέχει μόνο το scope SMS παίρνει 403 όταν αγγίζει καταστολές email (και αντίστροφα):

{
"statusCode": 403,
"message": "API key missing required scope 'email_suppression:write' for channel 'email'",
"timestamp": "2026-07-12T09:00:00.000Z",
"path": "/suppressions"
}

Επόμενα βήματα​