Weâre building incident.io as the single place you turn to when things go wrong. When an issue is disrupting your business-as-usual, the last thing you want is to start opening ten different tools to diagnose and fix it!
As your central incident hub, we need to give you two powers:
Workflows cover the former. Workflows are like a mini incident.io Zapier. You can use them to tell us when to page teammates, send updates to your affected customers and other stakeholders, assign roles and to-dos, and infinitely more.
What about the latter? We already offer a catalogue of native integrations with on-call solutions (PagerDuty, OpsGenie), issue trackers (e.g. Jira, Linear, GitHub) and communications tools (Statuspage; Zoom; GMeet). Weâll continue adding more as we grow: from Datadog or Zendesk to let you declare incidents from those tools; to Backstage or Terraform to sync your service catalog into incident.io.
Today though, we are stepping up our connectedness game by launching the incident.io API!
Check out the API reference, or read on to see how our early-access customers have used it.
Native integrations are a beautiful thing. They are easy to set up, even for non-technical teammates. Sales, Customer Support, BizOps - anyone can plug in their suite of tools without a line of code. They are faster to implement and reduce the need for maintenance on our customersâ side.
However, integrations also have their downfalls. Firstly, they must be built separately for every tool. We are known to ship at the speed of light, but there are a lot of tools that our customers use - in their engineering teams, and beyond. This means you might have to wait a few months before we integrate natively with that one tool you need.
Moreover, native integrations have a smaller surface area. They could cover 80% of use cases, and fall short on the outstanding 20%. You might be looking for a functionality thatâs very specific to your team or company. Or that we simply havenât got round to building yet.
The API is the answer to both those issues.
At the highest level, our API lets you connect incident.io to any tool in your stack (or even to your own application), and give us instructions via that connection. No more waiting around for that one integration you need, and no more constraints on what you can do: the API world is your oyster!
Itâs worth noting at this point that the first version of our API focuses on the three major use cases, namely:
We picked these three because they were the most requested by our existing users, and we wanted to stay focussed on laying solid foundations while building quickly.
Needless to say though, weâll be extending this over time, so weâd love to hear what youâd like to use our API for!
Most of our users have a ticketing system like Zendesk to manage their customer support. Inbound tickets are triaged by customer support teammates, and escalated to the engineering teams based on specific criteria (e.g. a certain severity, or a particular incident type such as data breaches).
In a pre-API world, things could get a little painful to execute that escalation policy. Support team members would have to exit Zendesk. Then head to Slack to manually declare an incident (and remember to append the Zendesk ticket link). Weâd work our magic at the point of declaration, and downstream of it.
In a post-API world, we can add value upstream of the declaration point too: a support agent can declare an incident with one click, straight from within Zendesk. Weâll take care of the rest, from declaring the incident in incident.io to pulling in the right teammates, notifying the relevant internal and external stakeholders, spinning up your public Statuspage and much more.
Here are the few key steps to bringing this flow to life.
Youâll want to generate a key with Create incidents
enabled. Keep this safe - weâll need it in a minute.
This lets you choose when Zendesk should escalate a ticket. In this case, we might use a checkbox custom field, which will declare an incident when itâs ticked.
Configure it to make an HTTP POST request to https://api.incident.io/v1/incidents
. The API Key we generated earlier is used for Bearer token authentication. The request body needs to be JSON that looks like:
{
"name": "{{ ticket.title }}",
"idempotency_key": "{{ ticket.id }}",
"severity_id": "01FCQSP07Z74QMMYPDDGQB9FTG",
"summary": "From Zendesk: {{ ticket.description }}",
"visibility": "public",
"custom_field_entries": [
{
"custom_field_id": "01FCNDV6P870EA6S7TK1DSYDG0",
"values": [
{
"value_link": "{{ ticket.link }}"
}
]
}
]
}
Thereâs a couple of special IDs in there youâll need:
custom_field_id
references a âZendesk Ticket Linkâ custom field weâve configured. You can find the IDs of your custom fields using the List Custom Fields API.severity_id
references our âMinorâ severity. You can find the IDs of your severities using the List Severities API.Thatâs it! đ Whenever that trigger fires, youâll get a new incident declared in incident.io. Nice.
As a bonus: you can configure workflows that only run on your API-generated incidents. For example, you could build a workflow that automatically adds the support agent that declared the incident in Zendesk to the incidentâs Slack channel.
To do that, add a Condition based on the API Key that reported the incident. This would look like:
The API for declaring an incident is as permissive as possible: if somethingâs going wrong, itâs better that an incident is declared with some missing context than not declared at all. This means that required custom fields wonât be enforced, for example.
We also wanted to avoid accidental spam. If things are going wrong in the middle of the night, the last thing you need is 5 incidents with reminders pinging around. To create an incident with the API, you must specify a unique key which we can deduplicate on. That might be the ID of an alert firing, or the reference for a support ticket. Weâll only create one incident for each key, so you donât have to worry about waking up to more incident channels than necessary.
We built our API around these three use-cases for now, but weâll keep expanding it over the coming weeks.
Weâd absolutely love to hear what you build with it, and how youâd like us to extend it.
Thereâs an #api
channel in the incident.io Community. See you there đ
We created a dedicated page for Anthropic to showcase our incident management platform, complete with a custom game called PagerTron, which we built using Claude Code. This project showcases how AI tools like Claude are revolutionizing marketing by enabling teams to focus on creative ways to reach potential customers.
We examine both companies' comparison pages and find some significant discrepancies between PagerDuty's claims and reality. Learn how our different origins shape our approaches to incident management.
The EU AI Act introduces new incident reporting rules for high-risk AI systems. This post breaks down what Article 73 actually mandates, why it's not as scary as it sounds, and how good incident management makes compliance a breeze.
Ready for modern incident management? Book a call with one our of our experts today.