PagerMate Docs
Incident API

Send your first incident

A copyable HTTPS form-data request for monitoring integrations.

Before you start

You need an active service, its public service ID, and API credentials created by an organisation administrator. Read Authentication if you have not created credentials yet.

The public endpoint is:

POST https://api.pagermate.com/v1/incident

This is a server-to-server API. Send credentials in the request body over HTTPS. The API accepts multipart form data and URL-encoded forms, not JSON, file uploads, or query parameters.

Prepare your environment

Set your own credential values and service ID in your shell or your monitoring system’s secret store:

export PAGERMATE_CLIENT_KEY='pmc_REPLACE_WITH_YOUR_CLIENT_KEY'
export PAGERMATE_CLIENT_SECRET='pms_REPLACE_WITH_YOUR_CLIENT_SECRET'
export PAGERMATE_SERVICE_ID='REPLACE_WITH_YOUR_32_CHARACTER_SERVICE_ID'

These are placeholders, not working credentials. Keep the secret out of source control and shared command output.

Create an incident

curl --fail-with-body --silent --show-error \
  https://api.pagermate.com/v1/incident \
  --form-string "client_key=$PAGERMATE_CLIENT_KEY" \
  --form-string "client_secret=$PAGERMATE_CLIENT_SECRET" \
  --form-string "service_id=$PAGERMATE_SERVICE_ID" \
  --form-string "title=Database unavailable" \
  --form-string "body=Connection checks are failing" \
  --form-string "severity=critical" \
  --form-string "source=Database health check"

--form-string sends literal values, including text that might otherwise be interpreted as a file upload by curl.

A successful creation returns HTTP 201 and JSON like this illustrative response:

{
  "success": true,
  "data": {
    "incident_id": "INC-1000000",
    "service_id": "00000000000000000000000000000000",
    "title": "Database unavailable",
    "severity": "critical",
    "status": "triggered",
    "deduplicated": false,
    "created_at": "2026-10-31T10:00:00+00:00",
    "acknowledged_at": null,
    "resolved_at": null
  }
}

Save the actual incident_id returned by your request for later updates. API timestamps are ISO 8601 timestamps with a timezone offset; the workspace displays them in the organisation timezone.

Send URL-encoded data instead

curl --fail-with-body --silent --show-error \
  https://api.pagermate.com/v1/incident \
  --data-urlencode "client_key=$PAGERMATE_CLIENT_KEY" \
  --data-urlencode "client_secret=$PAGERMATE_CLIENT_SECRET" \
  --data-urlencode "service_id=$PAGERMATE_SERVICE_ID" \
  --data-urlencode "title=Database unavailable" \
  --data-urlencode "severity=critical"

Next steps

On this page