---
title: "Connect a status page"
description: "Connect Atlassian Statuspage or Instatus so Halon can read what your status pages tell customers, and post incidents, maintenance and component status there when you allow it."
canonical: https://firefight.app/docs/api/status-pages
---

# Connect a status page

A status page connection lets Firefight read what your public status pages tell customers and, when you allow it, change them. You can connect Atlassian Statuspage and Instatus, and both sit under **Status pages** in **Configure → Integrations**.

Everything that changes a page is seen by your customers, so each of those tools needs a grant, follows your [approval rules](https://firefight.app/docs/gateway/approvals.md) and asks before it runs in a chat. Halon never changes a status page while it investigates.

## Connecting Statuspage

1. In Statuspage, click your avatar, choose **API info** and create a key. Copy it straight away, since Statuspage shows it only once.
2. In Firefight, open **Configure → Integrations**, click **Connect** on **Statuspage** and paste the key under **API key**.
3. Click **Connect**. A wrong or expired key is refused on the form.

A Statuspage key belongs to your organization rather than a person, so the connection keeps working when someone leaves. It reaches every page in the organization. Statuspage has no read-only key, so every key can change your pages, and what Firefight may do with it is decided by the tools you switch on and the grants you give.

## Connecting Instatus

1. In Instatus, open **User settings → Developer settings** and copy your API key.
2. In Firefight, open **Configure → Integrations**, click **Connect** on **Instatus** and paste the key under **API key**.
3. Click **Connect**. A wrong key is refused on the form.

An Instatus key belongs to the person who made it and reaches every page they can. Make it as a dedicated Instatus user, such as Firefight, so changes do not show as a teammate and the connection keeps working when someone leaves.

## Which page a tool works on

Name a page by its id or its name, and on Instatus by its subdomain too. When the key reaches only one page you never need to name it. Components are named the same way, by id or by name, so you can ask Halon to set "Checkout" to a major outage without looking up its id.

Every answer links to the page as your customers see it, at your own domain or the provider's subdomain, and an incident or maintenance to its own page there.

## What Halon can read

| Statuspage | Instatus |
|---|---|
| `list_pages` | `list_status_pages` |
| `list_components`, with their groups | `list_components`, `get_component` |
| `get_component_uptime` | |
| `list_incidents` (unresolved, maintenance under way, upcoming, scheduled or a search of all) | `list_incidents` (open, resolved or all) |
| `get_incident`, with every update | `get_incident`, with every update |
| `get_postmortem` | |
| | `list_maintenances`, `get_maintenance` |
| `list_incident_templates` | `list_templates` |
| `list_subscribers`, `count_subscribers`, `subscriber_histogram`, `list_unsubscribed`, `list_incident_subscribers` | `list_subscribers` |
| `list_metrics_providers`, `list_metrics` | `list_metrics`, `get_metric` |
| `list_page_access_users`, `list_page_access_groups` | |
| `get_status_embed` | |
| | `list_notices`, `list_outages`, `list_teammates` |
| | `list_monitors`, `get_monitor_logs`, `list_monitor_alerts`, `list_cron_monitors`, `get_cron_monitor` |
| | `list_workspaces`, `list_audience_groups` |
| | `list_routing_rules`, `list_escalation_policies`, `who_is_on_call` |

## What Halon can change

| Change | Statuspage | Instatus |
|---|---|---|
| Open an incident | `create_incident` | `create_incident`, `create_incident_from_template` |
| Post an update, such as monitoring or resolved | `post_incident_update` | `post_incident_update` |
| Rename an incident or change what it affects | `update_incident` | `update_incident` |
| Edit or delete an update | `edit_incident_update` | `edit_incident_update`, `delete_incident_update` |
| Delete an incident | `delete_incident` | `delete_incident` |
| Schedule maintenance | `schedule_maintenance` | `schedule_maintenance` |
| Move maintenance or post an update to it | `update_maintenance`, `post_incident_update` | `update_maintenance`, `post_maintenance_update` |
| Edit or delete maintenance | `edit_incident_update`, `delete_incident` | `edit_maintenance_update`, `delete_maintenance_update`, `delete_maintenance` |
| Set a component's status, or rename it | `update_component` | `update_component` |
| Add or remove a component | `create_component`, `delete_component` | `create_component`, `delete_component` |
| Group components | `create_component_group`, `update_component_group`, `delete_component_group` | `create_component` and `update_component` with a group |
| Write and publish a postmortem | `draft_postmortem`, `publish_postmortem`, `revert_postmortem`, `delete_postmortem` | |
| Save an incident template | `create_incident_template` | |
| Manage subscribers | `add_subscriber`, `update_subscriber`, `unsubscribe`, `resend_subscriber_confirmation`, `add_incident_subscriber`, `remove_incident_subscriber` | `add_subscriber`, `remove_subscriber` |
| Manage many subscribers at once, up to 100 or all | `unsubscribe_subscribers`, `resend_confirmations`, `reactivate_subscribers` | |
| Change a page's settings and how it looks | `update_page`, with its template and colours, `update_status_embed` | `create_status_page`, `update_status_page`, with its logo, colours, HTML and CSS, `delete_status_page` |
| Chart metrics on the page | `create_metrics_provider`, `update_metrics_provider`, `delete_metrics_provider`, `create_metric`, `update_metric`, `delete_metric`, `add_metric_data`, `reset_metric_data` | `create_metric`, `update_metric`, `delete_metric`, `add_metric_data`, `delete_metric_data` |
| Decide who sees an audience-specific page | `create_page_access_user`, `update_page_access_user`, `delete_page_access_user`, `change_page_access_user_access`, `create_page_access_group`, `update_page_access_group`, `change_page_access_group_components`, `delete_page_access_group` | |
| Show a general notice | | `create_notice`, `update_notice`, `delete_notice` |
| Record an outage on a component's uptime | | `create_outage`, `update_outage`, `delete_outage` |
| Manage who runs the page | | `add_teammate`, `remove_teammate` |
| Run workspaces | | `create_workspace`, `delete_workspace` |
| Decide who sees a private page | | `create_audience_group`, `update_audience_group`, `delete_audience_group` |
| Connect a monitoring tool such as Pingdom | | `create_monitoring_integration`, `update_monitoring_integration`, `delete_monitoring_integration` |
| Route and escalate incidents to people | | `create_routing_rule`, `update_routing_rule`, `delete_routing_rule`, `create_escalation_policy`, `update_escalation_policy`, `delete_escalation_policy` |
| Plan who is on call | | `create_on_call_schedule`, `update_on_call_schedule`, `delete_on_call_schedule` |
| Monitor addresses and scheduled jobs | | `create_monitor`, `update_monitor`, `delete_monitor`, `run_monitor_check`, `create_monitor_alert`, `update_monitor_alert`, `delete_monitor_alert`, `create_monitor_group`, `update_monitor_group`, `add_monitors_to_group`, `delete_monitor_group`, `run_monitor_group_check`, `create_cron_monitor`, `update_cron_monitor`, `delete_cron_monitor` |

Every tool that posts something your subscribers could be told about asks whether to tell them, and has no default. Halon asks you which you want rather than choosing for you.

## What stays in the provider

Some settings work as passwords, so Firefight never sends or shows them. Set these in Statuspage or Instatus itself.

| Setting | Where |
|---|---|
| A Statuspage metrics provider that pulls from Datadog, New Relic, Librato or Pingdom | Statuspage, under the page's system metrics |
| A monitor's basic auth, or a header or query parameter that carries a credential | Instatus, on the monitor |
| A Slack, Discord, Teams, Google Chat or webhook monitor alert | Instatus, under monitoring alerts |
| A cron monitor's ping address | Instatus, on the cron monitor |
| A page's SMS provider | Instatus, in the page's settings |
| A monitoring tool's keys, and the address it sends to | Instatus, on the integration, and the monitoring tool itself |

Running a monitor's check counts as a change, since a check that fails can open an incident on your page.

## Updating a status page from a workflow

A workflow's **Status page update** step offers the tools of your connected status pages that change something, such as `post_incident_update` or `schedule_maintenance`, and none that only read. Its values can come from earlier steps, such as the incident's name. Like every step that changes something, it asks how a person puts the change back, such as posting that the incident is resolved. See [Workflows](https://firefight.app/docs/ai/workflows.md).
