Unsubscribe from alert email
const url = 'https://api-staging.fedwright.com/v1/alerts/unsubscribe?token=example';const options = { method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: new URLSearchParams({})};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://api-staging.fedwright.com/v1/alerts/unsubscribe?token=example' \ --header 'Content-Type: application/x-www-form-urlencoded'A signed, non-expiring token in an alert email identifies the recipient and organization.
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”The signed token from the alert email.
Request Body
Section titled “Request Body”object
Example generated
Responses
Section titled “Responses”Email alerts disabled for the recipient and organization.
The request is malformed, or its schema refuses it: an unknown
property, a value of the wrong type or outside its bounds, a limit
above 200, or a sort outside the operation’s allow-list (Problem
type bad-request). errors names each field by its path, such as
nested.note, or $ for the body itself. The request is refused
before anything is read or written. A cursor that was altered, has
expired, or was issued for other filters, another sort, organization,
or user returns Problem type invalid-cursor.
RFC 9457 Problem Details.
object
An explanation specific to this occurrence of the problem. It is absent for server errors.
Validation errors, by field path.
object
A URI reference that identifies this occurrence of the problem, when the API provides one.
On rate-limited, the quota that is used up, such as org-day. On premium-quota-exceeded, org-premium-day. A 429 with an empty body does not name it.
On rate-limited from the API and on premium-quota-exceeded, when that quota starts again.
The HTTP status code of the response, from 400 to 599.
A short, human-readable summary of the problem. Use type to identify the kind of problem, not this text.
W3C trace ID of the failed request.
https://fedwright.com/problems/{code}, the same in every environment.
Example generated
{ "detail": "example", "errors": { "additionalProperty": [ "example" ] }, "instance": "example", "limit": "example", "resetsAt": "2026-04-15T12:00:00Z", "status": 1, "title": "example", "traceId": "example", "type": "https://example.com"}Too many unsubscribe requests from one network address: at most 10 a minute. Try again after a minute. This limit is separate from the quotas that count against an organization.
default
Section titled “default”Any other error. A request body over 64 KiB returns 413
(payload-too-large), and a request that takes longer than 10 seconds
(90 for askOpportunities) returns 503 (request-timeout). An invitation when the API can’t send mail returns 503
(mail-unavailable), and creates nothing. An unexpected failure returns 500 (internal-error)
with only type, title, status, and traceId.
RFC 9457 Problem Details.
object
An explanation specific to this occurrence of the problem. It is absent for server errors.
Validation errors, by field path.
object
A URI reference that identifies this occurrence of the problem, when the API provides one.
On rate-limited, the quota that is used up, such as org-day. On premium-quota-exceeded, org-premium-day. A 429 with an empty body does not name it.
On rate-limited from the API and on premium-quota-exceeded, when that quota starts again.
The HTTP status code of the response, from 400 to 599.
A short, human-readable summary of the problem. Use type to identify the kind of problem, not this text.
W3C trace ID of the failed request.
https://fedwright.com/problems/{code}, the same in every environment.
Example generated
{ "detail": "example", "errors": { "additionalProperty": [ "example" ] }, "instance": "example", "limit": "example", "resetsAt": "2026-04-15T12:00:00Z", "status": 1, "title": "example", "traceId": "example", "type": "https://example.com"}