curl --request POST \
--url http://localhost:3500/v1/claims/{id}/alerts/remove \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"alert_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"filter": {
"mine": true,
"team_ids": [
"<string>"
],
"claim_ids": [
"<string>"
],
"has_claim": true,
"claim_statuses": [],
"invoice_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_invoice_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"agreement_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_agreement_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"supplier_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_supplier_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"recipient_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_recipient_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"tag_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"topic_ids": [
"<string>"
],
"excluded_topic_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"has_topic": true,
"statuses": [],
"confidence_levels": [],
"currency_codes": [
"<string>"
],
"correction_types": [],
"impact_min": "<string>",
"impact_max": "<string>",
"issued_from": "<string>",
"issued_through": "<string>",
"created_from": "<string>",
"created_through": "<string>",
"search": "<string>"
},
"excluded_alert_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
alert_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
filter: {
mine: true,
team_ids: ['<string>'],
claim_ids: ['<string>'],
has_claim: true,
claim_statuses: [],
invoice_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_invoice_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
agreement_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_agreement_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
supplier_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_supplier_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
recipient_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_recipient_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
tag_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
topic_ids: ['<string>'],
excluded_topic_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
has_topic: true,
statuses: [],
confidence_levels: [],
currency_codes: ['<string>'],
correction_types: [],
impact_min: '<string>',
impact_max: '<string>',
issued_from: '<string>',
issued_through: '<string>',
created_from: '<string>',
created_through: '<string>',
search: '<string>'
},
excluded_alert_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};
fetch('http://localhost:3500/v1/claims/{id}/alerts/remove', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "http://localhost:3500/v1/claims/{id}/alerts/remove"
payload = {
"alert_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"filter": {
"mine": True,
"team_ids": ["<string>"],
"claim_ids": ["<string>"],
"has_claim": True,
"claim_statuses": [],
"invoice_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_invoice_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"agreement_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_agreement_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"supplier_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_supplier_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"recipient_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_recipient_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"tag_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"topic_ids": ["<string>"],
"excluded_topic_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"has_topic": True,
"statuses": [],
"confidence_levels": [],
"currency_codes": ["<string>"],
"correction_types": [],
"impact_min": "<string>",
"impact_max": "<string>",
"issued_from": "<string>",
"issued_through": "<string>",
"created_from": "<string>",
"created_through": "<string>",
"search": "<string>"
},
"excluded_alert_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"changed_count": 123,
"skipped_count": 123
}{
"error": {
"code": "validation_error",
"message": "Invalid request format, parameters, or body. Details contain up to 20 actionable field errors; the complete encoded request body must be at most 2 MiB (2,097,152 bytes).",
"request_id": "req_example"
}
}{
"error": {
"code": "invalid_token",
"message": "Missing or invalid bearer credential.",
"request_id": "req_example"
}
}{
"error": {
"code": "forbidden",
"message": "Access denied: forbidden, token_disabled, organization_required, insufficient_role, or mfa_required. Check the error code and effective permissions.",
"request_id": "req_example"
}
}{
"error": {
"code": "not_found",
"message": "The claim, a transfer target, an alert in alert_ids, or a selected team was not found.",
"request_id": "req_example"
}
}{
"error": {
"code": "conflict",
"message": "The claim is locked or does not accept alerts, an alert in alert_ids does not qualify, the filter selects too many alerts, a selected alert changed while the command ran, or a selected team has invalid saved rules. Nothing changed.",
"request_id": "req_example"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "The IP or authenticated credential exceeded its request limit.",
"request_id": "req_example"
}
}{
"error": {
"code": "internal_error",
"message": "Unexpected server failure. Include the request ID when contacting support.",
"request_id": "req_example"
}
}{
"error": {
"code": "service_unavailable",
"message": "Authentication infrastructure is unavailable or rate limited. Honor Retry-After when provided.",
"request_id": "req_example"
}
}Remove alerts from a claim
Releases the selected current memberships. Claimed alerts return to pending; pending, credited, and dismissed alerts keep their status. Completed claims are locked. With alert_ids, an alert that is not a current member returns 409, so repeating a removal conflicts. A filter covers current members only, so repeating it changes nothing. Select alerts with alert_ids or with filter. The command is one transaction and changes at most 5000 alerts; a filter that would change more returns 409 and changes nothing. Matching alerts already in the requested state, or left alone, do not count toward the limit, so a retry is safe.
curl --request POST \
--url http://localhost:3500/v1/claims/{id}/alerts/remove \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"alert_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"filter": {
"mine": true,
"team_ids": [
"<string>"
],
"claim_ids": [
"<string>"
],
"has_claim": true,
"claim_statuses": [],
"invoice_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_invoice_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"agreement_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_agreement_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"supplier_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_supplier_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"recipient_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"excluded_recipient_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"tag_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"topic_ids": [
"<string>"
],
"excluded_topic_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"has_topic": true,
"statuses": [],
"confidence_levels": [],
"currency_codes": [
"<string>"
],
"correction_types": [],
"impact_min": "<string>",
"impact_max": "<string>",
"issued_from": "<string>",
"issued_through": "<string>",
"created_from": "<string>",
"created_through": "<string>",
"search": "<string>"
},
"excluded_alert_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
alert_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
filter: {
mine: true,
team_ids: ['<string>'],
claim_ids: ['<string>'],
has_claim: true,
claim_statuses: [],
invoice_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_invoice_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
agreement_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_agreement_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
supplier_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_supplier_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
recipient_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
excluded_recipient_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
tag_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
topic_ids: ['<string>'],
excluded_topic_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
has_topic: true,
statuses: [],
confidence_levels: [],
currency_codes: ['<string>'],
correction_types: [],
impact_min: '<string>',
impact_max: '<string>',
issued_from: '<string>',
issued_through: '<string>',
created_from: '<string>',
created_through: '<string>',
search: '<string>'
},
excluded_alert_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};
fetch('http://localhost:3500/v1/claims/{id}/alerts/remove', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "http://localhost:3500/v1/claims/{id}/alerts/remove"
payload = {
"alert_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"filter": {
"mine": True,
"team_ids": ["<string>"],
"claim_ids": ["<string>"],
"has_claim": True,
"claim_statuses": [],
"invoice_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_invoice_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"agreement_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_agreement_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"supplier_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_supplier_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"recipient_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"excluded_recipient_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"tag_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"topic_ids": ["<string>"],
"excluded_topic_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"has_topic": True,
"statuses": [],
"confidence_levels": [],
"currency_codes": ["<string>"],
"correction_types": [],
"impact_min": "<string>",
"impact_max": "<string>",
"issued_from": "<string>",
"issued_through": "<string>",
"created_from": "<string>",
"created_through": "<string>",
"search": "<string>"
},
"excluded_alert_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"changed_count": 123,
"skipped_count": 123
}{
"error": {
"code": "validation_error",
"message": "Invalid request format, parameters, or body. Details contain up to 20 actionable field errors; the complete encoded request body must be at most 2 MiB (2,097,152 bytes).",
"request_id": "req_example"
}
}{
"error": {
"code": "invalid_token",
"message": "Missing or invalid bearer credential.",
"request_id": "req_example"
}
}{
"error": {
"code": "forbidden",
"message": "Access denied: forbidden, token_disabled, organization_required, insufficient_role, or mfa_required. Check the error code and effective permissions.",
"request_id": "req_example"
}
}{
"error": {
"code": "not_found",
"message": "The claim, a transfer target, an alert in alert_ids, or a selected team was not found.",
"request_id": "req_example"
}
}{
"error": {
"code": "conflict",
"message": "The claim is locked or does not accept alerts, an alert in alert_ids does not qualify, the filter selects too many alerts, a selected alert changed while the command ran, or a selected team has invalid saved rules. Nothing changed.",
"request_id": "req_example"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "The IP or authenticated credential exceeded its request limit.",
"request_id": "req_example"
}
}{
"error": {
"code": "internal_error",
"message": "Unexpected server failure. Include the request ID when contacting support.",
"request_id": "req_example"
}
}{
"error": {
"code": "service_unavailable",
"message": "Authentication infrastructure is unavailable or rate limited. Honor Retry-After when provided.",
"request_id": "req_example"
}
}Authorizations
Personal API key. Send X-Organization-Id. The required cumulative level is listed in x-watchdog-permission.
Headers
Required for personal API keys. Target one organization you have access to. Migrated keys may omit it to use their original organization. For Clerk sessions, it must match the active organization.
Path Parameters
Body
Explicit alerts. The command applies to every listed alert or fails: an unknown ID returns 404 and an alert that may not be changed returns 409.
1 - 5000 elementsEvery alert matching this filter when the command runs. Takes the GET /v1/alerts filters with JSON lists and booleans. Matching alerts that may not be changed are left alone and counted in skipped_count.
Show child attributes
Show child attributes
Alerts to leave out of a filter selection. Only valid with filter.
1 - 5000 elementsResponse
How many alerts the command changed and how many matching alerts were left alone. Read the claim for its current counts and amounts.