Browse the docs

List suppression lists

get/v1/suppressions
SDK workwae.suppressions.list()

The global list first, then every named list by listId, with its counts by source.

Errors

It answers only the errors every operation can answer. Each error's reason is the body's code.

Responses

  • 200OK
    application/json
    SuppressionListList
    • itemsarray of SuppressionList
      Item properties
      • idstring
      • namestring
      • descriptionstring or null
      • countinteger
      • countsSuppressionCounts
        Properties
        • unsubscribeinteger
        • bounceinteger
        • apiinteger
        • replyinteger
        • complaintinteger
        • inactiveinteger
      • createdAtstring (date-time) or null
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
curl -X GET "https://api.workwae.com/v1/suppressions" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

Create a suppression list

post/v1/suppressions
SDK workwae.suppressions.create()

id is what sends name as listId; it cannot change later, the name and description can. A send or add naming a list that does not exist creates it too, named after its id.

Errors

StatusReasonWhen
409suppression_list_exists
A list with that id exists.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
Idempotency-Keyheader

Makes the request safe to retry: the first answer to the key is kept for 24 hours and answered again to the same request.

string
length 1 to 255

Request body

required
application/json
CreateSuppressionList
  • idstringrequired
    pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
  • namestringrequired
    length 1 to 100
  • descriptionstring or null
    max length 500

Responses

  • 201OK
    application/json
    SuppressionList
    • idstring
    • namestring
    • descriptionstring or null
    • countinteger
    • countsSuppressionCounts
      Properties
      • unsubscribeinteger
      • bounceinteger
      • apiinteger
      • replyinteger
      • complaintinteger
      • inactiveinteger
    • createdAtstring (date-time) or null
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
    • Idempotent-Replayedconstanttrue when this is the kept answer to an earlier request with the same Idempotency-Key.
curl -X POST "https://api.workwae.com/v1/suppressions" \
  -H "Authorization: Bearer $WORKWAE_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "id": "string",
  "name": "string"
}'

Delete a suppression list

delete/v1/suppressions/{listId}
SDK workwae.suppressions.delete()

Deletes the list and its pending reviews and, with ?withEntries=true, every address on it: later sends naming it reach those addresses again (unless the global list holds them), and the next one naming it creates it anew. The global list cannot be deleted.

Errors

StatusReasonWhen
404suppression_list_not_found
The list does not exist (the global list has none to change).
409suppression_list_not_empty
The list holds addresses and withEntries is not true.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
listIdrequiredpath
string
pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
withEntriesquery
one of
Default false
  1. Option 1boolean
  2. Option 2enum
    One of"true""false"

Responses

  • 204OK

    No body.

    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
curl -X DELETE "https://api.workwae.com/v1/suppressions/string" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

Update a suppression list

patch/v1/suppressions/{listId}
SDK workwae.suppressions.update()

Only the fields given change; description null clears it. The global list cannot be changed.

Errors

StatusReasonWhen
404suppression_list_not_found
The list does not exist (the global list has none to change).

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
listIdrequiredpath
string
pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$

Request body

application/json
object
  • namestring
    length 1 to 100
  • descriptionstring or null
    max length 500

Responses

  • 200OK
    application/json
    SuppressionList
    • idstring
    • namestring
    • descriptionstring or null
    • countinteger
    • countsSuppressionCounts
      Properties
      • unsubscribeinteger
      • bounceinteger
      • apiinteger
      • replyinteger
      • complaintinteger
      • inactiveinteger
    • createdAtstring (date-time) or null
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
curl -X PATCH "https://api.workwae.com/v1/suppressions/string" \
  -H "Authorization: Bearer $WORKWAE_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "name": "string"
}'

List suppressed addresses

get/v1/suppressions/{listId}/entries
SDK workwae.suppressions.entries.list()

Addresses on one list, by address; a list without addresses is empty, not missing. address keeps those containing it, source those that came from it.

Errors

StatusReasonWhen
400invalid_cursor
The cursor is not one this list issued.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
listIdrequiredpath
string
pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
addressquery
string
max length 320
sourcequery
enum
One of"unsubscribe""bounce""api""reply""complaint""inactive"
limitquery
integer
Default 501 to 200
cursorquery
string
length 1 to 512

Responses

  • 200OK
    application/json
    SuppressionEntryPage
    • itemsarray of SuppressionEntry
      Item properties
      • addressstring
      • sourceenum
        One of"unsubscribe""bounce""api""reply""complaint""inactive"
      • reasonstring or null
      • createdAtstring (date-time)
    • nextCursorstring or null
      length 1 to 512
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
curl -X GET "https://api.workwae.com/v1/suppressions/string/entries" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

Suppress addresses

post/v1/suppressions/{listId}/entries
SDK workwae.suppressions.entries.add()

Puts up to 1000 addresses on the list in one call; a repeated address counts once. added counts the addresses put on the list, alreadyListed those that were on it already, which are left as they were. A list that does not exist is created, named after its listId. Answers 200: entries are listed, not fetched one by one. Emits no suppression.created: that event reports what recipients and bounces did.

Errors

It answers only the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
listIdrequiredpath
string
pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
Idempotency-Keyheader

Makes the request safe to retry: the first answer to the key is kept for 24 hours and answered again to the same request.

string
length 1 to 255

Request body

required
application/json
object
  • addressesarray of string (email)required
    1 to 1000 items
  • reasonstring
    length 1 to 200

Responses

  • 200OK
    application/json
    SuppressionEntriesAdded
    • addedinteger
    • alreadyListedinteger
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
    • Idempotent-Replayedconstanttrue when this is the kept answer to an earlier request with the same Idempotency-Key.
curl -X POST "https://api.workwae.com/v1/suppressions/string/entries" \
  -H "Authorization: Bearer $WORKWAE_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "addresses": [
    "[email protected]"
  ]
}'

Release an address

delete/v1/suppressions/{listId}/entries/{address}
SDK workwae.suppressions.entries.remove()

Later sends naming the list reach the address again (unless another list they consult holds it).

Errors

StatusReasonWhen
404suppression_entry_not_found
The address is not on the list.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
listIdrequiredpath
string
pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
addressrequiredpath
string
length 1 to 320

Responses

  • 204OK

    No body.

    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
curl -X DELETE "https://api.workwae.com/v1/suppressions/string/entries/string" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

List opt-outs to review

get/v1/suppression-reviews
SDK workwae.suppressionReviews.list()

Detected opt-outs waiting for a person, newest first; listId keeps one list's. Holds AI-classified opt-out replies while optOutHandling is review, and auto-replies saying the person is no longer at the address (source inactive, on the global list) while it is review or suppress. A detection of an address already on its list, or already waiting, is not queued again.

Errors

StatusReasonWhen
400invalid_cursor
The cursor is not one this list issued.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
listIdquery
string
pattern ^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
limitquery
integer
Default 501 to 200
cursorquery
string
length 1 to 512

Responses

  • 200OK
    application/json
    SuppressionReviewPage
    • itemsarray of SuppressionReview
      Item properties
      • idstring (uuid)
      • listIdstring
      • addressstring
      • sourceenum
        One of"reply""complaint""inactive"
      • accountIdstring (uuid)
      • messageIdstring (uuid)
      • probabilitynumber
      • alternateContactsarray of string
      • createdAtstring (date-time)
    • nextCursorstring or null
      length 1 to 512
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
curl -X GET "https://api.workwae.com/v1/suppression-reviews" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

Approve an opt-out

post/v1/suppression-reviews/{reviewId}/approve
SDK workwae.suppressionReviews.approve()

Puts the address on the review's list with the review's source and removes the review. added is false when the address was on the list already. Emits suppression.created when it was not.

Errors

StatusReasonWhen
404suppression_review_not_found
The review does not exist.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
reviewIdrequiredpath
string (uuid)
Idempotency-Keyheader

Makes the request safe to retry: the first answer to the key is kept for 24 hours and answered again to the same request.

string
length 1 to 255

Responses

  • 200OK
    application/json
    SuppressionAdded
    • addedboolean
    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
    • Idempotent-Replayedconstanttrue when this is the kept answer to an earlier request with the same Idempotency-Key.
curl -X POST "https://api.workwae.com/v1/suppression-reviews/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/approve" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"

Dismiss an opt-out

post/v1/suppression-reviews/{reviewId}/dismiss
SDK workwae.suppressionReviews.dismiss()

Removes the review without suppressing anything; a later detection of the same address queues it again.

Errors

StatusReasonWhen
404suppression_review_not_found
The review does not exist.

It can also answer the errors every operation can answer. Each error's reason is the body's code.

Parameters

NameInSchema
reviewIdrequiredpath
string (uuid)
Idempotency-Keyheader

Makes the request safe to retry: the first answer to the key is kept for 24 hours and answered again to the same request.

string
length 1 to 255

Responses

  • 204OK

    No body.

    Headers
    • X-Request-IdstringThe request's id: the X-Request-Id you sent when it is 1 to 128 of A-Z a-z 0-9 . _ : -, else one the API generated.
    • RateLimit-LimitintegerRequests the tightest of the plan's per-minute windows (tenant, credential) admits.
    • RateLimit-RemainingintegerRequests that window still admits.
    • RateLimit-ResetintegerSeconds until that window ends.
    • Idempotent-Replayedconstanttrue when this is the kept answer to an earlier request with the same Idempotency-Key.
curl -X POST "https://api.workwae.com/v1/suppression-reviews/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/dismiss" \
  -H "Authorization: Bearer $WORKWAE_API_KEY"