# AWS Health Dashboard

> Watch the public AWS Health Dashboard from a workflow. Ask whether AWS is having problems right now, whether one service or one region is affected, and what every open event is. Pull an event's full update timeline for a postmortem, list what happened over a date range, and summarize a period for a reliability report. Filter by the regions you actually run in, so an outage on the other side of the world stays quiet, and by severity, so a routine notice does not page anyone. Every action reads: nothing here changes anything. No AWS account, credentials or support plan required.

App · Monitoring · 8 actions. Web page: https://docs.lodol.com/docs/integrations/aws-health-dashboard

## Actions

### Check whether a region is affected

Ask about one AWS region - 'is anything wrong in eu-west-1?' - and get a flat yes or no, the worst severity open there, every service affected in it, and AWS's latest update. This is the usual gate for a deployment or a failover workflow, because a region is what most teams actually care about. A multi-region event counts here even when AWS filed it under a different region.

**Inputs**

- Region (`region`, text, required): One AWS region. Pick it from the list, or type a region code such as 'eu-west-1' if a value is coming from an earlier step - the region's name ('Europe (Ireland)') and the city ('Ireland') both work too. 'Global' covers the services that are not regional at all. The two China regions are not here: they are a separate AWS partition with their own dashboard, and this feed says nothing about them.

**Outputs**

- `affected_service_count` (number): How many services are affected in it.
- `affected_services` (list): Every affected service in the region, worst first.
- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `dashboard_url` (text): The public dashboard this came from.
- `is_affected` (true/false): True when any open AWS Health event currently affects this region. The field to branch a workflow on.
- `latest_update` (text): AWS's most recent update on that event.
- `open_event_count` (number): How many open events touch the region.
- `open_events` (list): The open events touching the region.
- `region` (text): The region code asked about.
- `region_name` (text): That region's name.
- `severity_level` (number): That status as 0 to 3.
- `status` (text): The worst status open in the region.
- `status_label` (text): That status written out.
- `summary` (text): A ready-to-send sentence answering the question.
- `worst_event` (object): The most severe of them, or null.

**Example output**

```json
{
  "affected_service_count": 6,
  "affected_services": [
    {
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "severity_level": 2,
      "status": "degraded",
      "status_label": "Service degradation",
      "worst_status": "degraded",
      "worst_status_label": "Service degradation"
    }
  ],
  "checked_at": "2026-09-14T14:05:00Z",
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "is_affected": true,
  "latest_update": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region. We will provide an update by 3:00 PM PDT.",
  "open_event_count": 1,
  "open_events": [
    {
      "affected_service_count": 6,
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "started_at": "2026-09-14T13:42:00Z",
      "status": "degraded",
      "status_label": "Service degradation",
      "summary": "Increased API Error Rates"
    }
  ],
  "region": "us-east-1",
  "region_name": "US East (N. Virginia)",
  "severity_level": 2,
  "status": "degraded",
  "status_label": "Service degradation",
  "summary": "US East (N. Virginia) is reporting service degradation: 6 services affected across 1 open event.",
  "worst_event": {
    "affected_service_count": 6,
    "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
    "region": "us-east-1",
    "region_name": "US East (N. Virginia)",
    "service": "ec2",
    "service_name": "Amazon Elastic Compute Cloud",
    "started_at": "2026-09-14T13:42:00Z",
    "status": "degraded",
    "status_label": "Service degradation",
    "summary": "Increased API Error Rates"
  }
}
```

### Check whether a service is affected

Ask about one AWS service - 'is S3 having problems in us-east-1?' - and get a flat yes or no with the severity, the regions it is affected in and AWS's latest update. Leave the region empty to ask everywhere. The answer separates three things a single boolean would blur: the service is in an event, the service is fine, and AWS Health has never heard the name you typed - which looks identical to healthy from here, and is the one case where it should not be read that way.

**Inputs**

- Service (`service`, text, required): The AWS service to ask about. Pick one from the list, or type a name: 's3', 'EC2', 'Amazon Elastic Compute Cloud' and 'lambda' all find the right one. The list holds the services AWS Health has named in an open or recent event, which is short on a quiet week and empty when nothing at all is wrong - AWS publishes a service here only while something is happening to it, so this is not a catalogue of AWS services and the field takes a typed name for that reason.
- Region (`region`, text): Narrow the check to one AWS region. Leave it empty to ask about the service everywhere, which is what you want if you are not sure where a problem is.

**Outputs**

- `affected_regions` (list): Every region the service is currently affected in.
- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `dashboard_url` (text): The public dashboard this came from.
- `event` (object): The most severe event naming it, or null.
- `impacts` (list): One row per region the service appears in, including regions where it has already recovered inside a still-open event.
- `is_affected` (true/false): True when an open AWS Health event currently reports this service as anything other than normal. The field to branch a workflow on.
- `latest_update` (text): AWS's most recent update on that event.
- `match_type` (text): 'exact' when the name or code matched outright, 'partial' when it matched part of a longer name, 'none' when AWS Health has named other services but not this one, and 'no_events' when AWS has published nothing at all to match against.
- `matched` (true/false): True for an exact or partial match.
- `note` (text): A caveat about the name, empty when there is none: that it matched part of a longer name, or matched nothing at all.
- `region` (text): The region asked about, empty when asking everywhere.
- `region_name` (text): That region's name.
- `service` (text): What AWS calls the service that was matched.
- `service_codes` (list): The service codes the query resolved to.
- `service_names` (list): Every service name the query matched, which is more than one only when it matched part of several names.
- `service_query` (text): The service as it was typed.
- `severity_level` (number): The status as 0 to 3.
- `status` (text): One of 'disruption' (a service is down), 'degraded' (slow or erroring), 'informational' (a notice) or 'operational' (nothing wrong).
- `status_label` (text): The status written out.
- `summary` (text): A ready-to-send sentence answering the question.

**Example output**

```json
{
  "affected_regions": [
    "us-east-1"
  ],
  "checked_at": "2026-09-14T14:05:00Z",
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "event": {
    "affected_service_count": 6,
    "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
    "region": "us-east-1",
    "region_name": "US East (N. Virginia)",
    "service": "ec2",
    "service_name": "Amazon Elastic Compute Cloud",
    "started_at": "2026-09-14T13:42:00Z",
    "status": "degraded",
    "status_label": "Service degradation",
    "summary": "Increased API Error Rates"
  },
  "impacts": [
    {
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "event_summary": "Increased API Error Rates",
      "has_recovered": false,
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "severity_level": 2,
      "started_at": "2026-09-14T13:42:00Z",
      "status": "degraded",
      "status_label": "Service degradation",
      "worst_status": "degraded",
      "worst_status_label": "Service degradation"
    }
  ],
  "is_affected": true,
  "latest_update": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region. We will provide an update by 3:00 PM PDT.",
  "match_type": "exact",
  "matched": true,
  "note": "",
  "region": "us-east-1",
  "region_name": "US East (N. Virginia)",
  "service": "Amazon Elastic Compute Cloud",
  "service_codes": [
    "ec2"
  ],
  "service_names": [
    "Amazon Elastic Compute Cloud"
  ],
  "service_query": "ec2",
  "severity_level": 2,
  "status": "degraded",
  "status_label": "Service degradation",
  "summary": "Amazon Elastic Compute Cloud in US East (N. Virginia) is reporting service degradation."
}
```

### Get an event

One event in full: every update AWS posted on it in order, every service it names with where each stands now, and every status change during it. This is the incident timeline to post into a channel or attach to a postmortem. Takes the event_id any listing action returned, or the event's AWS ARN. Open and recent events can both be asked for.

**Inputs**

- Event (`event_id`, text, required): The event to fetch. Use the event_id from 'Get AWS status', 'List open events' or 'List past events' - chaining it straight from an earlier step is the usual way. A full AWS event ARN works too. The dashboard publishes only open events and the recent past, so an older id cannot be fetched and is refused rather than answered empty.

**Outputs**

- `affected_regions` (list): Every region code the event names.
- `affected_service_count` (number): How many services AWS names in the event. A large multi-region event can name well over a hundred.
- `affected_services` (list): Every service AWS names in the event, with where each stands now and the worst it reached. AWS publishes this for open events only, so a past event has an empty list.
- `arn` (text): The event's AWS ARN. Open events have one; past events do not, and carry an empty string.
- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `current_status` (text): Where the event stands as of its last update, which is lower than 'status' once AWS has started reporting recovery.
- `current_status_label` (text): The current status written out.
- `dashboard_url` (text): The public dashboard this came from.
- `duration_minutes` (number): How long the event ran, in minutes. For an open event, how long it has been running so far.
- `ended_at` (text): When AWS closed the event, ISO 8601 in UTC; empty while it is open.
- `ended_at_epoch` (number): The same moment in seconds, 0 while the event is open.
- `event_id` (text): The handle to pass to 'Get an event'. AWS's own event id for an open event; for a past one, which AWS publishes no identifier for, a stable handle built from its type, region and start.
- `first_update` (text): What AWS wrote when it opened the event.
- `is_open` (true/false): True while AWS has not closed the event.
- `last_update_at` (text): When AWS last posted an update, ISO 8601 in UTC.
- `latest_update` (text): The text of AWS's most recent update on the event.
- `region` (text): The AWS region code, or 'global' for a service that is not regional.
- `region_name` (text): The region's name, such as 'US East (N. Virginia)'.
- `service` (text): The service code both AWS feeds agree on, lowercase and without the region: 'ec2', 's3', 'multipleservices'.
- `service_code` (text): The service code as AWS writes it, such as 'EC2'.
- `service_name` (text): AWS's display name for the service, such as 'Amazon Elastic Compute Cloud', where AWS has published one.
- `service_status_changes` (list): Each time a service's status changed during the event, oldest first. Open events only.
- `severity_level` (number): The status as AWS's own number, 0 to 3, so events sort by how bad they are.
- `started_at` (text): When AWS opened the event, ISO 8601 in UTC.
- `started_at_epoch` (number): The same moment as a Unix timestamp in seconds.
- `status` (text): One of 'disruption' (a service is down), 'degraded' (slow or erroring), 'informational' (a notice) or 'operational' (nothing wrong).
- `status_label` (text): The status written out, such as 'Service disruption'.
- `summary` (text): AWS's own headline for the event, such as 'Increased Error Rates'.
- `summary_line` (text): A ready-to-send sentence describing the event.
- `type_code` (text): AWS's event type, such as 'AWS_EC2_OPERATIONAL_ISSUE'.
- `update_count` (number): How many updates AWS has posted on the event.
- `updates` (list): Every update AWS posted on the event, oldest first.

**Example output**

```json
{
  "affected_regions": [
    "us-east-1"
  ],
  "affected_service_count": 1,
  "affected_services": [
    {
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "event_summary": "Increased API Error Rates",
      "has_recovered": false,
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "severity_level": 2,
      "started_at": "2026-09-14T13:42:00Z",
      "status": "degraded",
      "status_label": "Service degradation",
      "worst_status": "degraded",
      "worst_status_label": "Service degradation"
    }
  ],
  "arn": "arn:aws:health:us-east-1::event/EC2/AWS_EC2_OPERATIONAL_ISSUE/AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
  "checked_at": "2026-09-14T14:05:00Z",
  "current_status": "degraded",
  "current_status_label": "Service degradation",
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "duration_minutes": 23.0,
  "ended_at": "",
  "ended_at_epoch": 0,
  "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
  "first_update": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region.",
  "is_open": true,
  "last_update_at": "2026-09-14T14:01:00Z",
  "latest_update": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region. We will provide an update by 3:00 PM PDT.",
  "region": "us-east-1",
  "region_name": "US East (N. Virginia)",
  "service": "ec2",
  "service_code": "EC2",
  "service_name": "Amazon Elastic Compute Cloud",
  "service_status_changes": [
    {
      "changed_at": "2026-09-14T13:42:00Z",
      "changed_at_epoch": 1789738920,
      "from_status": "operational",
      "from_status_label": "Operating normally",
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "to_status": "degraded",
      "to_status_label": "Service degradation"
    }
  ],
  "severity_level": 2,
  "started_at": "2026-09-14T13:42:00Z",
  "started_at_epoch": 1789738920,
  "status": "degraded",
  "status_label": "Service degradation",
  "summary": "Increased API Error Rates",
  "summary_line": "Increased API Error Rates - Amazon Elastic Compute Cloud in US East (N. Virginia), open, 2 updates over 23 minutes.",
  "type_code": "AWS_EC2_OPERATIONAL_ISSUE",
  "update_count": 2,
  "updates": [
    {
      "message": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region.",
      "posted_at": "2026-09-14T13:42:00Z",
      "posted_at_epoch": 1789738920,
      "severity_level": 2,
      "status": "degraded",
      "status_label": "Service degradation",
      "summary": "Increased API Error Rates"
    },
    {
      "message": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region. We will provide an update by 3:00 PM PDT.",
      "posted_at": "2026-09-14T14:01:00Z",
      "posted_at_epoch": 1789740060,
      "severity_level": 2,
      "status": "degraded",
      "status_label": "Service degradation",
      "summary": "Increased API Error Rates"
    }
  ]
}
```

### Get AWS status

Is AWS having problems right now? One step, one flat answer: all_operational to branch a workflow on, the worst severity open, how many services and regions are affected, and a ready-to-send sentence. Narrow it to the regions you run in so an outage on the other side of the world does not wake anyone up. This is also the one-step check that the connection works.

**Inputs**

- Regions (`regions`, list): Narrow the answer to the AWS regions you actually run in. Pick as many as you like, or leave it empty for everywhere. A multi-region event counts for every region it names, not just the one AWS filed it under, so a filter on eu-west-1 still catches an event AWS opened against us-east-1 that reached Ireland. 'Global' covers the services that are not regional at all, such as CloudFront, Route 53, Billing and the console.

**Outputs**

- `affected_regions` (list): Every affected region, worst first.
- `affected_service_count` (number): How many distinct services are affected.
- `affected_service_region_count` (number): How many service-and-region pairs are affected, which is larger when one service is down in several regions.
- `all_operational` (true/false): True when AWS has no open events at all. The one field to branch a workflow on.
- `announcement` (text): The banner AWS is showing on the dashboard, empty almost always. AWS puts one up for something the event feed cannot say on its own.
- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `dashboard_url` (text): The public dashboard this came from.
- `degraded_count` (number): How many of them are service degradations.
- `disruption_count` (number): How many of them are service disruptions.
- `informational_count` (number): How many of them are informational notices.
- `open_event_count` (number): How many events AWS currently has open in scope.
- `open_events` (list): Every open event in scope, newest first.
- `regions_filtered` (list): The regions this answer was narrowed to, if any.
- `severity_level` (number): That status as 0 to 3.
- `status` (text): The worst status open anywhere in scope, or 'operational'.
- `status_label` (text): That status written out.
- `summary` (text): A ready-to-send sentence saying how AWS is doing.
- `worst_event` (object): The most severe open event, or null when there is none.

**Example output**

```json
{
  "affected_regions": [
    {
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "severity_level": 2,
      "status": "degraded",
      "status_label": "Service degradation"
    }
  ],
  "affected_service_count": 6,
  "affected_service_region_count": 6,
  "all_operational": false,
  "announcement": "",
  "checked_at": "2026-09-14T14:05:00Z",
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "degraded_count": 1,
  "disruption_count": 0,
  "informational_count": 0,
  "open_event_count": 1,
  "open_events": [
    {
      "affected_service_count": 6,
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "started_at": "2026-09-14T13:42:00Z",
      "status": "degraded",
      "status_label": "Service degradation",
      "summary": "Increased API Error Rates"
    }
  ],
  "regions_filtered": [],
  "severity_level": 2,
  "status": "degraded",
  "status_label": "Service degradation",
  "summary": "AWS is reporting 1 service degradation, affecting 6 services in 1 region.",
  "worst_event": {
    "affected_service_count": 6,
    "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
    "region": "us-east-1",
    "region_name": "US East (N. Virginia)",
    "service": "ec2",
    "service_name": "Amazon Elastic Compute Cloud",
    "started_at": "2026-09-14T13:42:00Z",
    "status": "degraded",
    "status_label": "Service degradation",
    "summary": "Increased API Error Rates"
  }
}
```

### List affected services

Every AWS service currently reported as affected, one row per service and region, worst first - the service-level view of 'what is broken right now', rather than the event-level one. A single event can name well over a hundred services, so this is what a workflow reads when it wants to compare the list against the things you run. Each row says where the service stands now and the worst it reached, so a service that has already recovered inside an open event is visibly different from one that has not.

**Inputs**

- Regions (`regions`, list): Narrow the answer to the AWS regions you actually run in. Pick as many as you like, or leave it empty for everywhere. A multi-region event counts for every region it names, not just the one AWS filed it under, so a filter on eu-west-1 still catches an event AWS opened against us-east-1 that reached Ireland. 'Global' covers the services that are not regional at all, such as CloudFront, Route 53, Billing and the console.
- Severity (`severity`, list): Which severities to include. AWS grades an event three ways, and the difference matters: a disruption means a service is down, a degradation means it is slow or erroring, and an informational event is a notice about something that is not itself an outage. Pick none for all three; pick 'Service disruption' alone for a page-the-on-call workflow that should stay quiet for notices. One or more of: `disruption` (Service disruption (red)), `degraded` (Service degradation (yellow)), `informational` (Informational (blue)).
- Include recovered services (`include_recovered`, true/false): Also list services that are back to normal but were affected by an event AWS has not closed yet. Off by default, because 'what is affected' usually means right now; turn it on to write the recovery update. Default: `false`.
- How many to return (`limit`, number): How many services to return, worst first. Defaults to 200, because one large AWS event can name well over a hundred services and this list is meant to be compared against the things you run. The result always says how many matched in total, so a short list is never a silent one. From 1 to 500. Default: `200`.

**Outputs**

- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `count` (number): How many are in this result.
- `dashboard_url` (text): The public dashboard this came from.
- `include_recovered` (true/false): Whether recovered services were included.
- `open_event_count` (number): How many open events they came from.
- `region_count` (number): How many regions those services are spread over.
- `regions_filtered` (list): The regions this answer was narrowed to, if any.
- `service_count` (number): How many distinct services are affected. Lower than 'total_count' when one service is affected in several regions, and the number 'Get AWS status' reports.
- `services` (list): One row per affected service and region, worst first.
- `severity_filtered` (list): The severities this answer was narrowed to, if any.
- `summary` (text): A ready-to-send sentence describing the result.
- `total_count` (number): How many rows matched in total, before the limit. A row is one service in one region.

**Example output**

```json
{
  "checked_at": "2026-09-14T14:05:00Z",
  "count": 1,
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "include_recovered": false,
  "open_event_count": 1,
  "region_count": 1,
  "regions_filtered": [],
  "service_count": 6,
  "services": [
    {
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "event_summary": "Increased API Error Rates",
      "has_recovered": false,
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "severity_level": 2,
      "started_at": "2026-09-14T13:42:00Z",
      "status": "degraded",
      "status_label": "Service degradation",
      "worst_status": "degraded",
      "worst_status_label": "Service degradation"
    }
  ],
  "severity_filtered": [],
  "summary": "6 AWS services are currently affected across 1 open event in US East (N. Virginia): Amazon Elastic Compute Cloud.",
  "total_count": 6
}
```

### List open events

Every event AWS currently has open, with what it is, where, how long it has been running and AWS's latest update on it. Narrow by region, by service and by severity, so a workflow can page someone for a disruption in your regions and stay quiet for an informational notice somewhere else. Ordered newest first unless you say otherwise.

**Inputs**

- Regions (`regions`, list): Narrow the answer to the AWS regions you actually run in. Pick as many as you like, or leave it empty for everywhere. A multi-region event counts for every region it names, not just the one AWS filed it under, so a filter on eu-west-1 still catches an event AWS opened against us-east-1 that reached Ireland. 'Global' covers the services that are not regional at all, such as CloudFront, Route 53, Billing and the console.
- Service (`service`, text): Only events touching this AWS service. Pick one, or type a name - 's3', 'EC2' and 'Amazon Elastic Compute Cloud' all find the right one. Leave it empty for every service. A big multi-service event counts for every service it names, not only the one in its headline.
- Severity (`severity`, list): Which severities to include. AWS grades an event three ways, and the difference matters: a disruption means a service is down, a degradation means it is slow or erroring, and an informational event is a notice about something that is not itself an outage. Pick none for all three; pick 'Service disruption' alone for a page-the-on-call workflow that should stay quiet for notices. One or more of: `disruption` (Service disruption (red)), `degraded` (Service degradation (yellow)), `informational` (Informational (blue)).
- Order (`order`, text): Newest first by default, which is what a message about 'the current problem' should read. Oldest first puts the start of the story at the top, which is what a report of a period reads. One of: `newest` (Newest first), `oldest` (Oldest first).
- How many to return (`limit`, number): How many events to return. Defaults to 50, which is comfortably more than AWS has open at once or records in a typical quarter. The result always says how many matched in total, so a short list is never a silent one. From 1 to 500. Default: `50`.

**Outputs**

- `all_operational` (true/false): True when AWS has no open events at all.
- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `count` (number): How many are in this result.
- `dashboard_url` (text): The public dashboard this came from.
- `events` (list): The events that matched, in the chosen order.
- `note` (text): A caveat about the service filter, empty when there is none: that it matched on part of a name, or matched nothing.
- `open_event_count` (number): How many events AWS has open, before any filter.
- `order` (text): The order the events are in.
- `regions_filtered` (list): The regions this answer was narrowed to, if any.
- `service_matched` (true/false): Whether the service filter matched anything AWS Health has named. Null when no service filter was used.
- `service_query` (text): The service filter as it was typed.
- `severity_filtered` (list): The severities this answer was narrowed to, if any.
- `summary` (text): A ready-to-send sentence describing the result.
- `total_count` (number): How many matched in total, before the limit.

**Example output**

```json
{
  "all_operational": false,
  "checked_at": "2026-09-14T14:05:00Z",
  "count": 1,
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "events": [
    {
      "affected_regions": [
        "us-east-1"
      ],
      "affected_service_count": 6,
      "arn": "arn:aws:health:us-east-1::event/EC2/AWS_EC2_OPERATIONAL_ISSUE/AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "current_status": "degraded",
      "current_status_label": "Service degradation",
      "dashboard_url": "https://health.aws.amazon.com/health/status",
      "duration_minutes": 23.0,
      "ended_at": "",
      "ended_at_epoch": 0,
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "is_open": true,
      "last_update_at": "2026-09-14T14:01:00Z",
      "latest_update": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region. We will provide an update by 3:00 PM PDT.",
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_code": "EC2",
      "service_name": "Amazon Elastic Compute Cloud",
      "severity_level": 2,
      "started_at": "2026-09-14T13:42:00Z",
      "started_at_epoch": 1789738920,
      "status": "degraded",
      "status_label": "Service degradation",
      "summary": "Increased API Error Rates",
      "type_code": "AWS_EC2_OPERATIONAL_ISSUE",
      "update_count": 2
    }
  ],
  "note": "",
  "open_event_count": 1,
  "order": "newest",
  "regions_filtered": [],
  "service_matched": null,
  "service_query": "",
  "severity_filtered": [],
  "summary": "AWS has 1 open event: Increased API Error Rates (us-east-1).",
  "total_count": 1
}
```

### List past events

The AWS events recorded over a date range - what happened last week, or since the start of the quarter. Narrow by region, service and severity the same way as the open ones. An event that began before the range and was still running inside it is included, because it was part of that period. The dashboard keeps only the recent past, so the result also says the earliest date it actually covers: a range reaching further back is unanswerable, not quiet, and the two should not look alike.

**Inputs**

- From date (`start_date`, date): The first day to include, counted in, as a whole UTC day. Leave it empty for everything the dashboard still holds. An event that began before this date and was still running on it is included, because it was part of that day. The dashboard publishes only the recent past, so the result also reports the earliest date it actually covers: a date before that is unanswerable rather than quiet.
- To date (`end_date`, date): The last day to include, counted in, as a whole UTC day. Leave it empty to run up to now. It must be on or after the start date.
- Regions (`regions`, list): Narrow the answer to the AWS regions you actually run in. Pick as many as you like, or leave it empty for everywhere. A multi-region event counts for every region it names, not just the one AWS filed it under, so a filter on eu-west-1 still catches an event AWS opened against us-east-1 that reached Ireland. 'Global' covers the services that are not regional at all, such as CloudFront, Route 53, Billing and the console.
- Service (`service`, text): Only events touching this AWS service. Pick one, or type a name - 's3', 'EC2' and 'Amazon Elastic Compute Cloud' all find the right one. Leave it empty for every service. A big multi-service event counts for every service it names, not only the one in its headline.
- Severity (`severity`, list): Which severities to include. AWS grades an event three ways, and the difference matters: a disruption means a service is down, a degradation means it is slow or erroring, and an informational event is a notice about something that is not itself an outage. Pick none for all three; pick 'Service disruption' alone for a page-the-on-call workflow that should stay quiet for notices. One or more of: `disruption` (Service disruption (red)), `degraded` (Service degradation (yellow)), `informational` (Informational (blue)).
- Order (`order`, text): Newest first by default, which is what a message about 'the current problem' should read. Oldest first puts the start of the story at the top, which is what a report of a period reads. One of: `newest` (Newest first), `oldest` (Oldest first).
- How many to return (`limit`, number): How many events to return. Defaults to 50, which is comfortably more than AWS has open at once or records in a typical quarter. The result always says how many matched in total, so a short list is never a silent one. From 1 to 500. Default: `50`.

**Outputs**

- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `count` (number): How many are in this result.
- `covered_from` (text): The earliest date the dashboard still holds. Anything before this is not covered, which is not the same as nothing having happened.
- `covered_to` (text): The most recent date the dashboard holds.
- `dashboard_url` (text): The public dashboard this came from.
- `end_date` (text): The last day asked for, empty when none was given.
- `events` (list): The events that matched, in the chosen order.
- `note` (text): A caveat about the service filter, empty when there is none: that it matched on part of a name, or matched nothing.
- `order` (text): The order the events are in.
- `regions_filtered` (list): The regions this answer was narrowed to, if any.
- `service_matched` (true/false): Whether the service filter matched anything AWS Health has named. Null when no service filter was used.
- `service_query` (text): The service filter as it was typed.
- `severity_filtered` (list): The severities this answer was narrowed to, if any.
- `start_date` (text): The first day asked for, empty when none was given.
- `starts_before_coverage` (true/false): True when the range asked for reaches back past coverage.
- `summary` (text): A ready-to-send sentence describing the result.
- `total_count` (number): How many matched in total, before the limit.

**Example output**

```json
{
  "checked_at": "2026-09-14T14:05:00Z",
  "count": 1,
  "covered_from": "2026-06-18",
  "covered_to": "2026-09-14",
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "end_date": "2026-09-14",
  "events": [
    {
      "affected_regions": [
        "us-east-1"
      ],
      "affected_service_count": 6,
      "arn": "arn:aws:health:us-east-1::event/EC2/AWS_EC2_OPERATIONAL_ISSUE/AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "current_status": "degraded",
      "current_status_label": "Service degradation",
      "dashboard_url": "https://health.aws.amazon.com/health/status",
      "duration_minutes": 23.0,
      "ended_at": "",
      "ended_at_epoch": 0,
      "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
      "is_open": true,
      "last_update_at": "2026-09-14T14:01:00Z",
      "latest_update": "We are investigating increased API error rates for Amazon EC2 in the US-EAST-1 Region. We will provide an update by 3:00 PM PDT.",
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "service": "ec2",
      "service_code": "EC2",
      "service_name": "Amazon Elastic Compute Cloud",
      "severity_level": 2,
      "started_at": "2026-09-14T13:42:00Z",
      "started_at_epoch": 1789738920,
      "status": "degraded",
      "status_label": "Service degradation",
      "summary": "Increased API Error Rates",
      "type_code": "AWS_EC2_OPERATIONAL_ISSUE",
      "update_count": 2
    }
  ],
  "note": "",
  "order": "newest",
  "regions_filtered": [],
  "service_matched": null,
  "service_query": "",
  "severity_filtered": [],
  "start_date": "2026-07-01",
  "starts_before_coverage": false,
  "summary": "The AWS Health Dashboard recorded 4 events active between 2026-07-01 and 2026-09-14.",
  "total_count": 4
}
```

### Summarize events over a period

The reliability report in one step: how many AWS events there were over a period, how many of each severity, how long they ran in total, which was the longest, and which services and regions had the most. Written for the monthly review that would otherwise mean counting a list by hand. Narrow to the regions and the service you run on.

**Inputs**

- From date (`start_date`, date): The first day to include, counted in, as a whole UTC day. Leave it empty for everything the dashboard still holds. An event that began before this date and was still running on it is included, because it was part of that day. The dashboard publishes only the recent past, so the result also reports the earliest date it actually covers: a date before that is unanswerable rather than quiet.
- To date (`end_date`, date): The last day to include, counted in, as a whole UTC day. Leave it empty to run up to now. It must be on or after the start date.
- Regions (`regions`, list): Narrow the answer to the AWS regions you actually run in. Pick as many as you like, or leave it empty for everywhere. A multi-region event counts for every region it names, not just the one AWS filed it under, so a filter on eu-west-1 still catches an event AWS opened against us-east-1 that reached Ireland. 'Global' covers the services that are not regional at all, such as CloudFront, Route 53, Billing and the console.
- Service (`service`, text): Only events touching this AWS service. Pick one, or type a name - 's3', 'EC2' and 'Amazon Elastic Compute Cloud' all find the right one. Leave it empty for every service. A big multi-service event counts for every service it names, not only the one in its headline.

**Outputs**

- `by_region` (list): Events per region, most first.
- `by_service` (list): Events per service, most first.
- `checked_at` (text): When this was read, ISO 8601 in UTC.
- `covered_from` (text): The earliest date the dashboard still holds.
- `covered_to` (text): The most recent date the dashboard holds.
- `dashboard_url` (text): The public dashboard this came from.
- `degraded_count` (number): How many were service degradations.
- `disruption_count` (number): How many of them were service disruptions.
- `end_date` (text): The last day asked for, empty when none was given.
- `event_count` (number): How many events were active in the period.
- `informational_count` (number): How many were informational notices.
- `longest_event` (object): The event that ran longest, or null.
- `longest_event_duration_minutes` (number): How long that one ran, in minutes.
- `most_affected_region` (object): The region with the most events, or null.
- `most_affected_service` (object): The service with the most events, or null.
- `note` (text): A caveat about the service filter, empty when none.
- `open_count` (number): How many of them AWS has not closed yet.
- `regions_filtered` (list): The regions this answer was narrowed to, if any.
- `resolved_count` (number): How many AWS has closed.
- `service_matched` (true/false): Whether the service filter matched anything. Null when no service filter was used.
- `service_query` (text): The service filter as it was typed.
- `start_date` (text): The first day asked for, empty when none was given.
- `summary` (text): A ready-to-send sentence describing the period.
- `total_duration_minutes` (number): The events' running times added up, in minutes. An open event counts up to now.

**Example output**

```json
{
  "by_region": [
    {
      "event_count": 2,
      "region": "us-east-1",
      "region_name": "US East (N. Virginia)",
      "total_duration_minutes": 298.6
    },
    {
      "event_count": 1,
      "region": "eu-west-1",
      "region_name": "Europe (Ireland)",
      "total_duration_minutes": 93.0
    }
  ],
  "by_service": [
    {
      "event_count": 2,
      "service": "ec2",
      "service_name": "Amazon Elastic Compute Cloud",
      "total_duration_minutes": 298.6
    },
    {
      "event_count": 1,
      "service": "cloudfront",
      "service_name": "CLOUDFRONT",
      "total_duration_minutes": 120.8
    }
  ],
  "checked_at": "2026-09-14T14:05:00Z",
  "covered_from": "2026-06-18",
  "covered_to": "2026-09-14",
  "dashboard_url": "https://health.aws.amazon.com/health/status",
  "degraded_count": 1,
  "disruption_count": 1,
  "end_date": "2026-09-14",
  "event_count": 4,
  "informational_count": 2,
  "longest_event": {
    "affected_service_count": 6,
    "event_id": "AWS_EC2_OPERATIONAL_ISSUE_4F2A1_9C77B2D4E01",
    "region": "us-east-1",
    "region_name": "US East (N. Virginia)",
    "service": "ec2",
    "service_name": "Amazon Elastic Compute Cloud",
    "started_at": "2026-09-14T13:42:00Z",
    "status": "degraded",
    "status_label": "Service degradation",
    "summary": "Increased API Error Rates"
  },
  "longest_event_duration_minutes": 213.1,
  "most_affected_region": {
    "event_count": 2,
    "region": "us-east-1",
    "region_name": "US East (N. Virginia)",
    "total_duration_minutes": 298.6
  },
  "most_affected_service": {
    "event_count": 2,
    "service": "ec2",
    "service_name": "Amazon Elastic Compute Cloud",
    "total_duration_minutes": 298.6
  },
  "note": "",
  "open_count": 1,
  "regions_filtered": [],
  "resolved_count": 3,
  "service_matched": null,
  "service_query": "",
  "start_date": "2026-07-01",
  "summary": "The AWS Health Dashboard recorded 4 events active between 2026-07-01 and 2026-09-14: 1 service disruption, 1 service degradation and 2 informational events, most often in US East (N. Virginia).",
  "total_duration_minutes": 512.4
}
```
