---
title: "Your in-app notifications, newest first"
method: GET
path: "/notifications"
tags: ["Notifications"]
---

# Your in-app notifications, newest first

`GET /notifications`

## Request

- Base URL: `https://hostingsurge.com/api/v1`
- URL: `https://hostingsurge.com/api/v1/notifications`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Host-hs_session`

## Query parameters

- `unreadOnly` 'true' | 'false'
- `limit` integer
- `cursor` string
- `lang` 'en' | 'sv' | 'de' | 'fr' | 'es' | 'pt' | 'id' | 'da' | 'nb': render titles and bodies in this language (the dashboard's); default: the caller's email language
- `orgId` string

## Response `200`

Notifications

- object
  - `items` object[], required
    - `id` string, uuid, required
    - `eventId` string, uuid, required
    - `eventType` 'deployment_failed' | 'deployment_succeeded' | 'domain_verified' | 'domain_verification_failing' | 'certificate_problem' | 'import_finished' | 'import_failed' | 'import_needs_input' | 'uptime_down' | 'uptime_recovered' | 'email_sending_approved' | 'email_sending_denied' | 'builder_publish_finished' | 'builder_site_check' | 'team_invitation_accepted' | 'webhook_auto_disabled' | 'audit_log' | 'backup_failed' | 'billing_suspended' | 'billing_unsuspended' | 'capacity_alert' | 'server_alert' | 'usage_alert' | 'domain_order' | 'domain_registration' | 'project_auto_stopped' | 'billing_operator_alert' | 'project_alert' | 'support_reply' | 'support_ticket' | 'trial_ending' | 'trial_ended' | 'trial_site_cap' | 'trial_pausing' | 'trial_paused' | 'trial_resumed' | 'trial_retention_warning' | 'usage_cap_reached', required: trial_*: the team's Free trial (migration 203, service/trial.ts): ending soon, ended, its one site is live, the one warning before its sites are paused, paused, back online, and how long a paused team's data is kept; usage_cap_reached: a Free team used a monthly usage cap (requests, bandwidth, CPU time). Sent to owners, admins and billing members; which ones a brand sends is an operator setting (by default the warning, paused and resumed). audit_log: one team audit-log entry, delivered only to webhooks with auditStream on (never in-app or email). backup_failed: an off-site backup alert, sent only to the platform operators' own organization. billing_suspended/billing_unsuspended: the organization was suspended for non-payment (migration 128) or automatically restored once paid. capacity_alert: the Free capacity pool is almost full (80 %) or full (migration 153), sent only to the platform operators' own organization. server_alert: the platform server crossed (or came back under) a threshold the operators set (migration 156), sent only to the platform operators' own organization. usage_alert: the team is at 80 % or 100 % of a plan limit, or a project's memory, CPU or volume is at 80 % or at its limit (migration 165, docs/USAGE_COST.md). domain_order: a bought domain needs the operators (a name to register by hand, a transfer to start, a failed registration, a low registrar balance; migration 171), sent only to the platform operators' own organization. domain_registration: the team's bought domain was registered, renewed, is due for renewal, expired or was refunded (docs/DOMAIN_REGISTRATION.md). project_auto_stopped: the crash-loop guard stopped a project whose containers kept restarting (migration 170, docs/OPERATOR.md "Crash-loop guard"); the team starts it again once the cause is fixed. billing_operator_alert: a billing problem only the platform operators can settle at Stripe (a duplicate subscription whose refund Stripe refused: canceled anyway, its invoice to check and refund by hand; migration 176), sent only to the platform operators' own organization. project_alert: a project alert (migration 190, docs/LOGS_ALERTS.md): many 5xx answers, error words in the app's logs, a renewed certificate or working deploys after an alert, or a test; data.kind and data.phase (firing, resolved) say which. support_reply: Hostingsurge support answered a support ticket (only to the member who opened it; docs/SUPPORT.md). support_ticket: a team opened a support ticket or wrote in one (data.kind new or message), sent only to the platform operators' own organization.
    - `severity` 'info' | 'success' | 'warning' | 'error', required
    - `projectId` string, uuid, nullable, required
    - `title` string, required: rendered in the caller's language
    - `body` string, required
    - `link` string, nullable, required
    - `data` object, required
    - `readAt` string, nullable, required: ISO-8601 timestamp
    - `createdAt` string, required: ISO-8601 timestamp
  - `nextCursor` string, nullable, required
  - `unreadCount` integer, required

## Other responses

- `400`: Invalid request (code invalid_request)
- `401`: Missing or invalid session/token (code unauthorized)
- `403`: Authenticated but not permitted (code forbidden)
- `404`: Not found or not visible to the caller (code not_found)
- `429`: Too many requests (code rate_limited); see Retry-After

---

[API](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api.md) · [All operations](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api/revisions/4d08337cdff1?raw)
