https://sreagent.app and takes a POST. Replace <token> with your organization’s webhook token. You find the token, and a ready-made URL for each source, on Integrations, Webhooks tab.
Endpoints
Fix pull requests, including the Jira, Zoho Sprints and fix request routes, need the Business plan and the GitHub App installed. See Plan matrix.
How authentication works
The token in the URL decides which organization receives the request. A token that does not match any organization, or one whose organization is disabled, always gets the same404 with “Invalid webhook token”, so the endpoint never confirms whether a token exists.
Grafana, Datadog, New Relic and PagerDuty alerts must be signed once you have an approved runbook that runs automatically. Requests without a valid signature from those sources then answer 401. You set PagerDuty and GitHub signing secrets under Integrations, Webhooks tab. For Grafana, Datadog and New Relic, contact support to enable signing. Once a PagerDuty or GitHub secret is saved, every request must carry a matching signature or it is refused with 401. Without a saved secret, GitHub accepts requests on the token alone, and the tab shows a warning saying so.
CloudWatch and CloudTrail deliver through SNS, which signs its own messages. When signature checking is enabled for your organization, an unsigned message or a direct alarm payload that did not come through SNS is refused.
Rotating the token
Choose Rotate token on the Webhooks tab to get a new URL. The old URL keeps working for 72 hours so you can move your senders over, then answers404. Revoke now stops the old URL immediately.
Response codes
Ops board cards, updates and comments
The three ops board endpoints work on any plan, including Free. A card opened here lands in Triage with no author. Anystatus, source or author you send on create is ignored.
Open a card
title is required. A 201 answers with the card’s id, its key (for example OPS-12) and its url. priority is one of urgent, high, normal or low, and any other value becomes normal. assignee_email assigns the card when it matches a member of your organization and never invites anyone. Field sizes are on Limits.
Update a card or add a comment
Use either the cardid or its key in the path. The key is matched without regard to case, and only within your organization.
status is one of backlog, triage, todo, in_progress, blocked or done, and the usual synonyms work. won't do, wontfix and cancelled archive the card without counting it as done. An unknown status or priority on update answers 422 rather than guessing.
A comment needs a body. author is a display name shown beside it and is not matched against your members.
Idempotency keys
Without a key, every POST opens a new card, and a sender that retries creates duplicates. To make a delivery safe to repeat, send your own id for it. A card accepts the id as anIdempotency-Key header or a dedup_key field in the body. If both are present, the header wins. When the body is an SNS notification, its message id is used automatically. A comment takes comment_id.
The first delivery answers 201. Every repeat answers 200 with the same body and "duplicate": true, and nothing else happens: no second card, notification or Slack post. A key is up to 200 characters of letters, digits and . _ - : / + = @. Anything else, including a blank key, answers 422. Keys belong to your organization and never expire, so use a new key when you mean a new card.
Card endpoint responses
Deployments
event_type defaults to deploy and status to succeeded. You can also send previous_version, deployed_by, description, commit_sha, repo_full_name, pr_url, compare_url, run_url, branch, author, started_at and completed_at. Posting the same dedup_key again, for example from the start and the end of one CI run, updates the same timeline entry. A success answers 200 with {"status":"ok","id":"...","action":"..."}, and a payload that cannot be recorded answers 422.
Fix requests
description is required. service or repo pins the target repository. Sending the same dedup_key or ticket again replaces the earlier request instead of opening a second pull request. A 202 with {"status":"analyzing","id":"..."} means the request was queued, not that a pull request will follow. The result, a draft pull request or a decline with reasoning, appears in Control Tower. A 422 means it was refused before analysis, with a reason such as the GitHub App not being installed, a target that matches nothing you mapped, or five open pull requests already on that repository.
Jira
Jira answers200 for an issue it accepts and for one it ignores, so Jira does not disable the webhook over a configuration problem. {"status":"ok"} means a fix pull request is being generated. {"status":"ignored"} carries the reason: the issue has no sre-agent-fix label, the GitHub App is not installed, the target matches nothing you mapped, or the repository is at its limit of open pull requests. A wrong token answers 404, and a payload with no summary answers 422.
Related
- Quickstart: send a first test alert.
- Connect PagerDuty: set up the PagerDuty signing secret.
- Ops board webhook and tracker sync: use the ops board webhook step by step.
- Troubleshooting: fix a failing webhook.

