API reference
The Parachute REST API lets you ingest alerts, manage runbooks, query incidents, retrieve evidence packages, and configure webhooks programmatically.
Base URL: https://api.withparachute.org/v1. All requests must use HTTPS. HTTP requests are rejected with a 301 redirect.
Authentication
All API requests must include a Bearer token in the Authorization header. Tokens are workspace-scoped and can be created in Workspace settings > API tokens.
Authorization: Bearer prc_live_xxxxxxxxxxxxxxxxxxxxxxxx
Token format: prc_live_ prefix for production tokens, prc_test_ for tokens created in test mode. Test mode tokens only affect the sandbox intake endpoint.
Rate limits
Rate limits apply per workspace, not per token. Exceeding the limit returns 429 Too Many Requests with a Retry-After header (seconds).
Developer plan : 60 req/min (alert intake: 20 req/min)
Starter plan : 200 req/min (alert intake: 100 req/min)
Professional plan : 600 req/min (alert intake: 300 req/min)
Enterprise : Custom limit on request
Alerts
Use the Alerts endpoint to ingest raw alert payloads into Parachute. Alerts are matched against runbook trigger conditions and execute any matching runbooks.
POST /alerts
Ingest an alert into the workspace. Returns the alert ID and matched runbook IDs synchronously; runbook execution is asynchronous.
POST /v1/alerts HTTP/1.1
Host: api.withparachute.org
Authorization: Bearer prc_live_xxx
Content-Type: application/json
{
"source": "datadog",
"severity": "critical",
"title": "EC2 brute force detected on i-0abc123456",
"host_id": "i-0abc123456",
"tags": ["brute-force", "ec2", "prod"],
"raw_payload": { ... }
}
{
"alert_id": "alrt_01j8xxx",
"matched_runbooks": ["rb_ec2_brute_force"],
"executions_started": 1
}
GET /alerts
List alerts ingested into the workspace. Accepts query parameters: since (ISO 8601 timestamp), severity, source, limit (default 50, max 500), cursor (pagination cursor from previous response).
Runbooks
Manage runbook definitions via the API. Useful for GitOps workflows where runbook YAML is version-controlled and synced programmatically.
GET /runbooks
List all runbooks in the workspace. Returns ID, name, status (active/inactive/draft), version, and last-modified timestamp.
PUT /runbooks/{id}
Update a runbook definition. Body is the full YAML document as a JSON string under "yaml". Returns the updated runbook object with the new version number.
POST /runbooks/{id}/activate
Set a runbook's status to active. Runbooks must be in valid/passing dry-run state to be activated via API.
Incidents
Incidents are created automatically when a runbook executes. Use the Incidents endpoint to query status, retrieve execution timelines, and update resolution state.
GET /incidents
List incidents. Accepts: status (open/resolved/suppressed), runbook_id, since, limit, cursor.
GET /incidents/{id}
Retrieve a single incident with full execution timeline, step results, and evidence manifest.
{
"incident_id": "inc_01j8xxx",
"runbook_id": "rb_ec2_brute_force",
"alert_id": "alrt_01j8xxx",
"status": "resolved",
"started_at": "2026-06-01T03:14:22Z",
"resolved_at": "2026-06-01T03:14:41Z",
"duration_ms": 19000,
"steps": [
{ "id": "isolate", "status": "success", "duration_ms": 4200 },
{ "id": "collect", "status": "success", "duration_ms": 8100 },
{ "id": "timeline", "status": "success", "duration_ms": 5700 },
{ "id": "notify", "status": "success", "duration_ms": 1000 }
],
"evidence_ids": ["evd_01j8xxx"]
}
PATCH /incidents/{id}
Update incident status. Accepted body: {"status": "resolved"} or {"status": "suppressed", "reason": "..."}.
Evidence
Evidence packages are created by pull_logs and capture_process_list runbook actions. They contain raw log files, process snapshots, and the AI-generated timeline.
GET /evidence/{id}
Retrieve evidence package metadata and a pre-signed download URL valid for 15 minutes. The evidence archive is a .tar.gz containing all collected artifacts.
Retention: Evidence is permanently deleted when the workspace retention window expires. Download before the expiry if you need long-term storage.
Webhooks
Parachute can push events to your own endpoint when incidents open, steps complete, or evidence is collected.
POST /webhooks
Register a webhook endpoint. Specify the target URL and the event types to subscribe to.
{
"url": "https://your-endpoint.example.com/parachute",
"events": ["incident.opened", "incident.resolved", "evidence.collected"],
"secret": "your-hmac-secret"
}
Webhook event payload
All webhook deliveries include an X-Parachute-Signature-256 header. Verify it against HMAC-SHA256(secret, raw_body) before processing.
Webhook event types
incident.opened- A runbook execution beganincident.resolved- An incident was marked resolvedincident.step_completed- A single runbook step completedevidence.collected- A new evidence package was createdalert.no_match- An alert was ingested but no runbook matched
Errors
All errors return a JSON body with error (machine code) and message (human-readable). HTTP status follows standard semantics.
{
"error": "runbook_not_found",
"message": "Runbook rb_abc123 does not exist in this workspace."
}
Next steps
- Quickstart guide - Set up your first runbook
- Integration guides - Connect PagerDuty, Datadog, Opsgenie
- Security practices - Webhook HMAC verification details