API Reference
The AlertFlow REST API gives you programmatic access to all alert, incident, workflow, and configuration data in your organization.
Base URL
https://app.yourdomain.com/api/v1
All API endpoints are under /api/v1. The ingest endpoint (for sending alerts) is at a separate path — see Ingest Webhook.
Live OpenAPI spec
The full OpenAPI 3.0.3 spec is available at:
GET https://app.yourdomain.com/api/v1/openapi.json
Import this URL into Postman, Insomnia, or any OpenAPI-compatible client to get auto-generated request builders with your API key.
Response format
All responses follow the same envelope:
Success (list):
{
"data": [ ... ],
"meta": {
"limit": 25,
"hasMore": true,
"nextCursor": "clm123abc",
"total": 1250
}
}
Success (single object):
{
"data": { ... }
}
Error:
{
"error": "Alert not found",
"code": "NOT_FOUND",
"details": null
}
Pagination
List endpoints use cursor-based pagination. Pass the nextCursor from the previous response as the cursor query parameter to fetch the next page.
# Page 1
GET /api/v1/alerts?limit=25
# Page 2 (use nextCursor from page 1's meta)
GET /api/v1/alerts?limit=25&cursor=clm123abc
totalis only returned on the first page (nocursor). Cache it in your UI.hasMore: falsemeans you've reached the last page.
Rate limits
| Limit | Value |
|---|---|
| Authenticated API requests | 300 per minute per org |
| Ingest webhook (per token) | 60 per minute |
| API key creation | 10 per day per org |
Rate-limited responses return 429 Too Many Requests with a Retry-After header (seconds until the window resets).
SDKs and client libraries
There's no official SDK yet. The OpenAPI spec works with any OpenAPI code generator:
# Generate a TypeScript client
npx openapi-typescript https://app.yourdomain.com/api/v1/openapi.json -o types/alertflow.ts
# Generate a Python client
openapi-python-client generate --url https://app.yourdomain.com/api/v1/openapi.json
Resources
All endpoints
| GET | /alerts | List alerts |
| POST | /alerts/bulk | Bulk acknowledge or resolve |
| GET | /alerts/{id} | Get alert |
| POST | /alerts/{id}/acknowledge | Acknowledge alert |
| POST | /alerts/{id}/resolve | Resolve alert |
| GET | /incidents | List incidents |
| GET | /incidents/{id} | Get incident |
| GET | /clients | List clients |
| POST | /clients | Create client |
| PUT | /clients/{id} | Update client |
| DELETE | /clients/{id} | Delete client |
| GET | /workflows | List workflows |
| GET | /workflows/{id} | Get workflow |
| GET | /schedules | List schedules |
| GET | /schedules/{id} | Get schedule |
| PUT | /schedules/{id} | Update schedule |
| DELETE | /schedules/{id} | Delete schedule |
| GET | /schedules/current-oncall | Get current on-call engineer |
| GET | /integrations | List integrations |
| POST | /integrations | Create integration |
| PUT | /integrations/{id} | Update integration |
| DELETE | /integrations/{id} | Delete integration |
| GET | /suppression | List suppression windows |
| POST | /suppression | Create suppression window |
| GET | /suppression/{id} | Get suppression window |
| PUT | /suppression/{id} | Update suppression window |
| DELETE | /suppression/{id} | Delete suppression window |
| GET | /users | List organization members |
| GET | /api-keys | List API keys |
| POST | /api-keys | Create API key |
| DELETE | /api-keys/{id} | Revoke API key |