Overview
The Changes API lets you log deployments, configuration changes, and other changes to your services. Changes are automatically correlated with incidents, giving your team instant visibility into what changed before an outage.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/v1/changes |
Log a change (org-level) |
GET |
/api/v1/changes |
List changes with filters |
POST |
/api/v1/services/{id}/changes |
Log a change for a specific service |
GET |
/api/v1/services/{id}/changes |
List changes for a service |
All endpoints require an API key with the appropriate scope. See Authentication.
Log a Change
POST /api/v1/changes
POST /api/v1/services/{serviceId}/changes
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
summary |
string | Yes | Short description of the change |
service_id |
string | No | Service ID (required for org-level endpoint if targeting a service) |
change_type |
string | No | One of: deployment, config_change, infrastructure, code, database_migration, feature_flag, rollback, scaling, security_patch, other. Default: deployment |
description |
string | No | Detailed description |
source |
string | No | Source system (e.g., github_actions, jenkins, terraform). Default: api |
commit_sha |
string | No | Git commit SHA |
commit_message |
string | No | Full commit message |
branch |
string | No | Git branch name |
pr_number |
string | No | Pull request number |
pr_url |
string | No | Pull request URL |
pipeline_url |
string | No | CI/CD pipeline URL |
environment |
string | No | Target environment. Default: production |
risk_level |
string | No | One of: low, medium, high, critical. Default: low |
changed_by |
string | No | Name or email of the person who made the change |
external_id |
string | No | ID in the external system |
tags |
string[] | No | Freeform tags |
Example Request
curl -X POST "https://app.alert24.net/api/v1/services/svc_abc123/changes" \
-H "Authorization: Bearer ak_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"summary": "Deploy v2.1.0 to production",
"change_type": "deployment",
"description": "Release includes new billing module and bug fixes",
"commit_sha": "abc1234def5678",
"branch": "main",
"environment": "production",
"risk_level": "medium",
"changed_by": "jane.doe",
"tags": ["billing", "release"]
}'
Example Response
{
"data": {
"id": "chg_abc123",
"service_id": "svc_abc123",
"service_name": "API Gateway",
"change_type": "deployment",
"summary": "Deploy v2.1.0 to production",
"description": "Release includes new billing module and bug fixes",
"source": "api",
"commit_sha": "abc1234def5678",
"branch": "main",
"environment": "production",
"risk_level": "medium",
"changed_by": "jane.doe",
"tags": ["billing", "release"],
"created_at": "2026-03-30T15:30:00.000Z"
}
}
List Changes
GET /api/v1/changes
GET /api/v1/services/{serviceId}/changes
Query Parameters
| Parameter | Type | Description |
|---|---|---|
service_id |
string | Filter by service (org-level endpoint only) |
change_type |
string | Filter by change type |
source |
string | Filter by source |
environment |
string | Filter by environment |
start_date |
ISO 8601 | Changes after this time |
end_date |
ISO 8601 | Changes before this time |
limit |
integer | Max results (1-100, default 25) |
offset |
integer | Pagination offset |
Example Request
curl "https://app.alert24.net/api/v1/changes?change_type=deployment&environment=production&limit=10" \
-H "Authorization: Bearer ak_live_xxxxx"
Example Response
{
"data": [
{
"id": "chg_abc123",
"service_id": "svc_abc123",
"service_name": "API Gateway",
"change_type": "deployment",
"summary": "Deploy v2.1.0 to production",
"source": "github_actions",
"commit_sha": "abc1234",
"branch": "main",
"environment": "production",
"risk_level": "medium",
"changed_by": "jane.doe",
"tags": ["billing"],
"created_at": "2026-03-30T15:30:00.000Z"
}
],
"meta": {
"total": 1,
"limit": 10,
"offset": 0,
"has_more": false
}
}
Webhook Endpoint
For automated integrations (GitHub, GitLab, CI/CD), you can also send changes via the webhook receiver endpoint:
POST /api/webhooks/incoming/changes/{token}
This endpoint accepts any JSON payload and auto-detects the source (GitHub, GitLab, AWS CloudTrail, Azure Monitor, GCP Audit Logs). No API key is needed — authentication is via the unique token in the URL.
See Change Management for setup instructions for each provider.