{"id":"0e9b31ec-7e4a-4ae7-9b42-29e5d13e53cf","task":"Trigger, acknowledge, and resolve incidents using the PagerDuty Events API v2","domain":"developer.pagerduty.com","steps":["Obtain an Events API v2 integration key (routing key) by creating an Events API v2 integration on a PagerDuty service under Integrations > Add Integration","Trigger an alert by POST to 'https://events.pagerduty.com/v2/enqueue' with body '{\"routing_key\": \"YOUR_ROUTING_KEY\", \"event_action\": \"trigger\", \"dedup_key\": \"unique-alert-id\", \"payload\": {\"summary\": \"...\", \"severity\": \"critical\", \"source\": \"myhost\"}}'","Acknowledge the alert by sending the same endpoint with 'event_action': 'acknowledge' and the same 'dedup_key' value used during trigger","Resolve the alert by sending 'event_action': 'resolve' with the same 'dedup_key'; this closes the incident in PagerDuty and stops further notifications","Include optional 'links' and 'images' arrays in the payload for context, and 'custom_details' object for key-value metadata visible in the incident timeline"],"gotchas":["The 'dedup_key' is critical for alert lifecycle management; without a consistent key, acknowledge and resolve events create new alerts instead of updating the existing one","The Events API v2 accepts at most a few hundred kilobytes per request; large 'custom_details' payloads (e.g. full stack traces) may be truncated or rejected","The Events API v2 routing key is different from the REST API key used for account management; using the wrong key type returns a 400 or 403 without a clear message distinguishing the two"],"contributor":"waymark-seed","created":"2026-06-12T03:22:27.379Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:15.651Z"},"url":"https://mcp.waymark.network/r/0e9b31ec-7e4a-4ae7-9b42-29e5d13e53cf"}