Connect Rootly, the incident management platform, to Serval with an API key so workflows can work with incidents, alerts, on-call schedules, and retrospectives on demand.
Rootly is an incident management platform covering incidents, alerts, on-call schedules, escalation policies, retrospectives, and status pages. Serval connects to Rootly with an API key that you generate in Rootly and paste into Serval. Workflows then call the Rootly API on demand, with Serval attaching your stored key to every request automatically.Authentication: API key (sent as a Bearer token on every request to the Rootly API).Data sync: On demand only. There is no background sync, no resource ingestion, and no prebuilt workflows are installed with this integration - all reads and writes happen when a workflow runs.
A single “Rootly API request” action can call any of the 213 paths in Rootly’s REST API v1.
Incident management
List, read, create, and update incidents, plus incident types, roles, severities, sub-statuses, permission sets, and related action items.
Alerts
List, read, and create alerts, acknowledge and resolve them, and work with related resources such as alert events, heartbeats, and live call routers.
On-call and scheduling
Schedules, schedule rotations, escalation policies, escalation paths, on-call roles, and shifts - find out who is responsible during an incident.
Catalog, services, and teams
Services, functionalities, teams, environments, and catalogs - the resources incidents map to.
Retrospectives and post-mortems
Post-mortems, post-mortem templates, retrospective processes, process groups, and configurations.
Other Rootly surfaces
Communications, Rootly-native workflows and workflow groups, status pages, dashboards, playbooks, webhooks, form fields and form sets, custom fields, secrets, users, and roles.
Anything defined in the Rootly API can be accessed through Serval.
You need a Rootly API key. Rootly offers three key types, and Serval inherits whatever the key can do - pick the narrowest type that covers what your workflows touch:
Global API Key - org-wide; assigned the On-Call and Incident Response role at generation.
Team API Key - Team Admin permissions over that team’s entities, such as Schedules and Escalation Policies.
Personal API Key - inherits the permissions of the user who creates it.
Sign in to Rootly, click the Organization dropdown in the top navigation, and select Organization Settings.
2
Go to API Keys
Navigate to API Keys in the settings menu.
3
Generate a new key
Click Generate New API Key and select the API Key Type (Global, Team, or Personal) that matches your integration needs.
4
Name and create the key
Give the key a descriptive name, e.g. “Serval Production Integration”, and generate it.
5
Copy the token immediately
Copy the token value right away - Rootly shows it only once.
Rootly displays the API key a single time at creation. If you navigate away without copying it, you will need to generate a new key.
The key inherits the permissions of its type. If your workflows only touch one team’s schedules and escalation policies, a Team API Key is enough; reserve Global keys for org-wide automation.
In Serval, open the integrations page and choose Rootly to open the connect form.
2
Instance Name (optional)
Optionally fill in Instance Name (optional) - “A name to distinguish between different Rootly instances (e.g., ‘Production Rootly’)”. If you leave it blank, the connection is named “Rootly”.
3
API Key (required)
Fill in API Key - “Your Rootly API key. Generate this in Organization Settings > API Keys”. This is a password-style field; after saving, Serval shows it masked, with only the last 4 characters visible.
4
Save
Submit the form. Serval does not test the key against Rootly at save time, so a mistyped key is accepted here. If the save itself fails you will see a general error such as “Failed to connect service” or “Failed to install integration” - check your input and try again.
When you edit an existing connection, the API Key shows as a read-only masked value (bullet characters plus the last 4 characters of your key) with a control to replace it. Leaving it untouched - or starting a replacement and submitting nothing - keeps the stored key; only a non-empty new value replaces it. The Instance Name field comes pre-filled with the current name: type a new name to rename the connection, but note that clearing the field and saving keeps the existing name rather than blanking it.
The Rootly integration has no automated health checks in Serval, and the key is not validated when you save, so there is no pass/fail status to look for. To verify the connection:
Create or run a simple workflow that reads Rootly data - for example, one that lists incidents or schedules.
If the workflow returns Rootly data, the key works.
If it fails with an authentication error, the key was likely revoked in Rootly or pasted incorrectly - generate a fresh key and update the connection.
A successful read only proves the key is valid - it does not prove the key can reach every resource. If a basic read works but a workflow gets a permission error on a specific resource (for example, another team’s schedules), the key’s type or owner lacks access in Rootly. See “Key permissions are inherited” below.
The connection saved fine, but workflows fail with authentication errors
Rootly has no health checks in Serval and the key is not checked at connect time, so a mistyped or revoked key is not caught when you save - it surfaces the first time a workflow calls the Rootly API. Generate a new key in Rootly, enter it in the connection settings, and re-run the workflow.
Key permissions are inherited, not scoped in Serval
Serval does not add or remove any permissions - the connection can do exactly what the key can do in Rootly. A Global key carries the On-Call and Incident Response role org-wide, a Team key has Team Admin rights over that team’s entities, and a Personal key mirrors its creator. If a workflow gets a 403 on a specific resource, regenerate the key under an account or key type with the needed scope and update the connection.
Rootly uses the JSON:API format
Requests to Rootly are sent and received in the JSON:API format rather than plain JSON. Data you send when creating or updating records must be structured as a JSON:API document, and results come back wrapped in a “data” object containing an id, a type, and the record’s attributes. Workflow builders who expect flat JSON will find the fields one level deeper than anticipated.
Lists are paginated page by page
Rootly list responses come back in pages, controlled by page number and page size parameters. To retrieve everything, workflows request page 1, then page 2, and so on until a page comes back with an empty data array.
Requests only work against the Rootly API host
Serval attaches your API key only to requests addressed to api.rootly.com, and requests to any other host are rejected. If a workflow request fails before reaching Rootly, check that it targets the Rootly API rather than another URL.
Multiple connections are told apart by Instance Name only
Rootly has no per-customer subdomains, so every connection points at the same Rootly service. If you connect more than one Rootly organization or key, set a distinct Instance Name on each - otherwise they all display as “Rootly” and are hard to tell apart in the UI.
The key never expires on Serval's side
Serval keeps using the stored key until it stops working. If you revoke or rotate the key in Rootly, workflows will start failing until you paste the new key into the connection. When rotating, edit the connection, replace the API Key with the new value, and save - the Instance Name can stay as is.
Need help? Contact support@serval.com for assistance with your Rootly integration.