Skip to content
Browse the docs

Console · Published 2026-09-28 · Updated 2026-09-28 · AgentiSend

Notifications

Choose which conditions ring the bell and which send mail. The bell lists open conditions. Marking one read does not end it.

Notifications are at /settings/notifications. The bell in the top bar is the same list, limited to open rows.

What the screen calls

The bell reads GET /notifications with state=open. Settings reads and writes GET /notifications/preferences and PATCH /notifications/preferences. Two switches per condition: in the app, and by email. A condition with no saved row is on for both.

curl -sS -X GET https://api.agentisend.com/notifications \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "data": [],
  "has_more": false,
  "next_cursor": "example",
  "object": "list"
}
Response
curl -sS -X GET https://api.agentisend.com/notifications/preferences \
  -H "Authorization: Bearer $AGENTISEND_API_KEY"
200
{
  "preferences": []
}
Response
curl -sS -X PATCH https://api.agentisend.com/notifications/preferences \
  -H "Authorization: Bearer $AGENTISEND_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"preferences":[{"type":"budget_exhausted"}]}'
200
{
  "preferences": []
}
Response

Marking one row read is POST /notifications/{id}/read. Marking the open rows read is POST /notifications/read. Reading a row does not end it. The condition ends the row.

curl -sS -X POST https://api.agentisend.com/notifications/9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42/read \
  -H "Authorization: Bearer $AGENTISEND_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
200
{
  "body": "example",
  "console_path": "example",
  "dedupe_key": "example",
  "first_seen_at": "2026-09-04T09:14:00.000Z",
  "id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "last_seen_at": "2026-09-04T09:14:00.000Z",
  "occurrences": -9007199254740991,
  "read_at": "2026-09-04T09:14:00.000Z",
  "resolved_at": "2026-09-04T09:14:00.000Z",
  "state": "open",
  "title": "example",
  "type": "budget_exhausted"
}
Response
curl -sS -X POST https://api.agentisend.com/notifications/read \
  -H "Authorization: Bearer $AGENTISEND_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
200
{
  "read": -9007199254740991
}
Response

A viewer who tries to change a preference:

{
  "error": {
    "code": "insufficient_role",
    "message": "Your role on this account cannot make this change.",
    "fix": "Ask an owner to make the change, or to raise your role with PATCH /team/members/:id.",
    "docs_url": "https://agentisend.com/docs/errors#insufficient_role",
    "retryable": false
  }
}

A retired trial condition is not listed and is not in the bell.

A limit of the screen

The in-app switch is saved. The list the bell reads does not look at that switch, so a condition still appears in the bell when the switch is off. The email switch is what the mailer reads. Billing mail still goes out when its email switch is off. Support mail is not sent from this preference.

Next