The Notifications & Events API surfaces two related streams of activity on the Hoody platform. Notifications are user-facing messages (maintenance windows, announcements, status updates) targeted at specific users or broadcast globally. Events are an immutable audit log of platform actions — container lifecycle changes, firewall edits, proxy permission updates, and similar — used for observability, compliance, and integration tooling.
Use these endpoints to list, inspect, and manage both streams. Most operations require authentication; the public notifications endpoint is the only one that does not.
Note
The event log is bounded: paginate using limit (max 500) and offset, and use the cleanup or bulk-delete endpoints to prune old entries. The mark-read endpoints use HTTP PUT, despite the operation identifiers ending in Patch.
Query event history with filtering, pagination, and sorting. Maximum 500 events per page.
Name In Type Required Description limitquery integer No Number of events to return (max 500). Default: 100 offsetquery integer No Number of events to skip. Default: 0 sort_byquery string No Field to sort by. Allowed: "created_at", "event_type". Default: "created_at" sort_orderquery string No Sort direction. Allowed: "asc", "desc". Default: "desc" event_typequery string No Filter by specific event type (see enum below) resource_typequery string No Filter by resource type (see enum below) resource_idquery string No Filter by specific resource ID project_idquery string No Filter by project ID container_idquery string No Filter by container ID start_datequery string No Filter events after this timestamp end_datequery string No Filter events before this timestamp realm_idquery string No Filter by realm ID
The event_type parameter accepts: container.creating, container.running, container.stopped, container.failed, container.deleting, auth.token.deleted, container.autostart_enabled, container.autostart_disabled, container.renamed, container.resource_updated, container.ssh_key.added, container.ssh_key.removed, container.snapshot.created, container.snapshot.deleted, container.snapshot.restored, container.snapshot.renamed, container.display.enabled, user.created, auth.token.updated, auth.token.enabled, auth.token.disabled, proxy.alias.expiring_soon, proxy.alias.expired, storage.share.mount_changed, notification.read, server.health_changed, server.rental_expiring, firewall.rule.added, firewall.rule.removed, firewall.rule.updated, firewall.rule.enabled, firewall.rule.disabled, proxy.permissions.default_changed, proxy.permissions.group_added, proxy.permissions.group_updated, proxy.permissions.group_removed, pool.member.joined, pool.member.left, pool.member.role_changed, pool.invited, pool.invitation_revoked, user.banned, user.unbanned, user.role_changed, activity.logged.
The resource_type parameter accepts: container, storage_share, notification, project, server, firewall, proxy_alias, proxy_permissions, auth_token, pool, user, activity_log.
curl -G https://api.hoody.icu/api/v1/events \
-H " Authorization: Bearer <token> " \
--data-urlencode " limit=50 " \
--data-urlencode " event_type=container.running " \
--data-urlencode " resource_type=container " \
--data-urlencode " sort_by=created_at " \
--data-urlencode " sort_order=desc "
await client . api . events . listIterator ({
event_type : ' container.running ' ,
resource_type : ' container ' ,
" message " : " Events retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439044 " ,
" event_type " : " container.running " ,
" resource_type " : " container " ,
" resource_id " : " 507f1f77bcf86cd799439033 " ,
" user_id " : " 507f1f77bcf86cd799439011 " ,
" id " : " 507f1f77bcf86cd799439033 " ,
" project_id " : " 507f1f77bcf86cd799439022 "
" realm_ids " : [ " 507f1f77bcf86cd799439022 " ],
" created_at " : " 2025-01-15T10:30:05.123Z "
" message " : " Invalid date range: start_date cannot be after end_date "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation Check the error message for specific field requirements and correct your input INVALID_PARAMETER_VALUEInvalid parameter value A parameter value is outside the allowed range or format Ensure parameter values meet the documented constraints (min/max, format, regex) INVALID_DATE_RANGEInvalid date range The start_date cannot be after the end_date Ensure the start_date is before or the same as the end_date
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired Obtain a new token by logging in again or refreshing your session
Retrieve detailed information about a specific event.
Name In Type Required Description idpath string Yes Event ID
curl https://api.hoody.icu/api/v1/events/507f1f77bcf86cd799439044 \
-H " Authorization: Bearer <token> "
await client . api . events . get ( ' 507f1f77bcf86cd799439044 ' );
" message " : " Event retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439044 " ,
" event_type " : " container.running " ,
" resource_type " : " container " ,
" resource_id " : " 507f1f77bcf86cd799439033 " ,
" user_id " : " 507f1f77bcf86cd799439011 " ,
" id " : " 507f1f77bcf86cd799439033 " ,
" project_id " : " 507f1f77bcf86cd799439022 "
" realm_ids " : [ " 507f1f77bcf86cd799439022 " ],
" created_at " : " 2025-01-15T10:30:05.123Z "
" message " : " Invalid ID format "
Error Code Title Description Resolution INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f)
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired Obtain a new token by logging in again or refreshing your session
" message " : " Event not found "
Error Code Title Description Resolution EVENT_NOT_FOUNDEvent not found The requested event does not exist or has been deleted Verify the event ID is correct and that you have access to this event
Get aggregated statistics about event history, broken down by event type and resource type over an optional time range.
Name In Type Required Description start_datequery string No Start of time range end_datequery string No End of time range realm_idquery string No Filter by realm
curl -G https://api.hoody.icu/api/v1/events/stats \
-H " Authorization: Bearer <token> " \
--data-urlencode " start_date=2025-01-01T00:00:00.000Z " \
--data-urlencode " end_date=2025-01-31T23:59:59.999Z "
await client . api . events . getStats ({
start_date : ' 2025-01-01T00:00:00.000Z ' ,
end_date : ' 2025-01-31T23:59:59.999Z ' ,
" message " : " Event statistics retrieved successfully " ,
" container.running " : 3456 ,
" container.stopped " : 2134 ,
" storage.share.mount_changed " : 1523 ,
" notification.read " : 8121
" oldest_event " : " 2024-11-15T10:30:00.000Z " ,
" newest_event " : " 2025-01-15T10:30:00.000Z "
" message " : " Invalid date range: start_date cannot be after end_date "
Error Code Title Description Resolution INVALID_DATE_RANGEInvalid date range The start_date cannot be after the end_date Ensure the start_date is before or the same as the end_date
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired Obtain a new token by logging in again or refreshing your session
Delete events older than a specified retention period. Admin-only.
Field Type Required Description retention_daysinteger Yes Delete events older than this many days. Range: 1 to 365
curl -X POST https://api.hoody.icu/api/v1/events/cleanup \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-d ' { "retention_days": 30 } '
await client . api . events . cleanup ({ retention_days : 30 });
" message " : " Old events cleaned up successfully " ,
" cutoff_date " : " 2024-12-15T10:30:00.000Z "
" message " : " Validation failed "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation Check the error message for specific field requirements and correct your input
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired Obtain a new token by logging in again or refreshing your session
" message " : " Admin access required "
Error Code Title Description Resolution ADMIN_ONLYAdmin access required This endpoint is only accessible to admin users Contact an administrator if you need access to this functionality ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource Contact support for information about your account status
Delete multiple events at once based on filters. At least one filter or all=true must be supplied.
Field Type Required Description event_typestring No Delete all events of this type (see event_type enum on the list endpoint) resource_typestring No Delete all events for this resource type (see resource_type enum on the list endpoint) resource_idstring No Delete all events for this resource before_datestring No Delete events before this date realm_idstring No Delete events in this realm
curl -X DELETE https://api.hoody.icu/api/v1/events \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-d ' { "resource_type": "container", "before_date": "2024-12-15T00:00:00.000Z" } '
await client . api . events . bulkDelete ({
resource_type : ' container ' ,
before_date : ' 2024-12-15T00:00:00.000Z ' ,
" message " : " Events deleted successfully " ,
" message " : " Either filters or `all=true` must be provided for bulk delete "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation Check the error message for specific field requirements and correct your input INVALID_BULK_DELETE_PARAMSInvalid bulk delete parameters You must provide at least one filter when performing a bulk delete, or set all=true to delete all events. Provide one or more filters (e.g., resource_type, event_type) or use all=true to confirm deletion of all events.
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired Obtain a new token by logging in again or refreshing your session
Permanently delete a single event from history.
Name In Type Required Description idpath string Yes Event ID to delete
curl -X DELETE https://api.hoody.icu/api/v1/events/507f1f77bcf86cd799439044 \
-H " Authorization: Bearer <token> "
await client . api . events . delete ( ' 507f1f77bcf86cd799439044 ' );
" message " : " Event deleted successfully "
" message " : " Invalid ID format "
Error Code Title Description Resolution INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f)
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request Include a valid JWT token in the Authorization header as Bearer <token> INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid Obtain a new token by logging in again or using a valid auth token TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired Obtain a new token by logging in again or refreshing your session
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action Contact the resource owner or administrator to request access ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource Contact support for information about your account status
" message " : " Event not found "
Error Code Title Description Resolution EVENT_NOT_FOUNDEvent not found The requested event does not exist or has been deleted Verify the event ID is correct and that you have access to this event
Get all notifications for the authenticated user, including global broadcasts and notifications targeted to that user. Returns per-user read state via is_read and read_at.
This endpoint takes no parameters.
curl https://api.hoody.icu/api/v1/notifications/ \
-H " Authorization: Bearer <token> "
await client . api . notifications . listIterator ();
" message " : " Notifications retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439030 " ,
" title " : " System Maintenance Notice " ,
" message " : " Scheduled maintenance will occur on January 25th at 2:00 AM UTC. " ,
" expires_at " : " 2025-01-26T00:00:00.000Z " ,
" created_at " : " 2025-01-20T10:00:00.000Z " ,
" updated_at " : " 2025-01-20T10:00:00.000Z " ,
" message " : " Authentication token required "
" error " : " Internal Server Error " ,
" message " : " Failed to retrieve notifications "
Get all public notifications. Does not require authentication, so is_read and read_at are not included in the response.
This endpoint takes no parameters.
curl https://api.hoody.icu/api/v1/notifications/public
await client . api . notifications . listPublicIterator ();
" message " : " Public notifications retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439030 " ,
" title " : " System Maintenance Notice " ,
" message " : " Scheduled maintenance will occur on January 25th at 2:00 AM UTC. " ,
" expires_at " : " 2025-01-26T00:00:00.000Z " ,
" created_at " : " 2025-01-20T10:00:00.000Z " ,
" updated_at " : " 2025-01-20T10:00:00.000Z "
" error " : " Internal Server Error " ,
" message " : " Failed to retrieve public notifications "
Mark a single notification as read for the authenticated user.
Name In Type Required Description idpath string Yes Unique identifier of the notification to mark as read
curl -X PUT https://api.hoody.icu/api/v1/notifications/507f1f77bcf86cd799439030/read \
-H " Authorization: Bearer <token> "
await client . api . notifications . markRead ( ' 507f1f77bcf86cd799439030 ' );
" message " : " Notification marked as read " ,
" id " : " 507f1f77bcf86cd799439150 " ,
" notification_id " : " 507f1f77bcf86cd799439030 " ,
" read_at " : " 2025-01-21T21:30:00.000Z "
" message " : " Invalid notification ID "
" message " : " Authentication token required "
" message " : " You cannot mark this notification "
" message " : " Notification not found "
" error " : " Internal Server Error " ,
" message " : " Failed to mark notification as read "
Mark every notification belonging to the authenticated user as read in a single call.
This endpoint takes no parameters.
curl -X PUT https://api.hoody.icu/api/v1/notifications/read-all \
-H " Authorization: Bearer <token> "
await client . api . notifications . markAllRead ();
" message " : " All notifications marked as read " ,
" message " : " Authentication token required "
" error " : " Internal Server Error " ,
" message " : " Failed to mark all notifications as read "