Base URL
https://argus.ekarche.com/api/v1
Authentication
All endpoints accept a JWT Bearer token issued by POST /api/v1/auth/login or POST /api/v1/auth/signup. Tokens expire after one hour; refresh via POST /api/v1/auth/refresh.
See the security page for details on session lifetime, MFA, and SSO.
Authenticate
curl -X POST https://argus.ekarche.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@company.com", "password": "..."}'
# 200 OK
{
"access_token": "eyJ...",
"refresh_token": "eyJ...",
"user": { ... }
}
Create an incident
curl -X POST https://argus.ekarche.com/api/v1/incidents/ \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{
"title": "Payments API returning 500s",
"description": "Latency spike, error rate >50%",
"severity": "P1",
"service_id": "..."
}'
# 201 Created
{
"id": "...",
"title": "Payments API returning 500s",
"severity": "P1",
"status": "open",
"auto_classified": true,
"classification_confidence": 0.94
}
Classify on the fly
curl -X POST https://argus.ekarche.com/api/v1/ai/classify \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{
"title": "Payments API returning 500s",
"description": "Latency spike, error rate >50%"
}'
# 200 OK
{
"severity": "P1",
"confidence": 0.94,
"reasoning": "...",
"suggested_team_id": "...",
"suggested_service_id": "..."
}
Find similar incidents
curl https://argus.ekarche.com/api/v1/ai/similar-incidents/INC-2287 \
-H "Authorization: Bearer eyJ..."
# 200 OK
{
"matches": [
{ "incident_id": "INC-1842", "score": 0.91, "title": "...", "severity": "P1" },
{ "incident_id": "INC-2103", "score": 0.83, "title": "...", "severity": "P2" }
]
}
Draft a postmortem
curl -X POST https://argus.ekarche.com/api/v1/ai/postmortem-draft \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{"incident_id": "INC-2287", "persist": false}'
# 200 OK
{
"draft": {
"title": "...",
"severity_impact": "...",
"timeline": "...",
"root_cause": "...",
"contributing_factors": "...",
"action_items": "...",
"duration_minutes": 47
}
}
Plain-English search
curl -X POST https://argus.ekarche.com/api/v1/ai/search \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{
"query": "all P1 incidents touching payments last 30 days",
"entity_types": ["incident", "postmortem"],
"top_k": 10
}'
# 200 OK
{
"hits": [ { "entity_type": "incident", "entity_id": "...", "title": "...", "snippet": "...", "score": 0.92 } ]
}
Auto-CRUD for every entity
Every Argus entity — incidents, problems, change requests, assets, teams, services, postmortems, on-call schedules, SLA policies, and more — ships a uniform CRUD interface:
GET /api/v1/<entity>/ # list (paginated, filterable)
POST /api/v1/<entity>/ # create
GET /api/v1/<entity>/:id # read
PATCH /api/v1/<entity>/:id # update
DELETE /api/v1/<entity>/:id # delete
Webhooks
Subscribe to incident lifecycle events via the alert-rule and webhook-source endpoints. Outbound webhooks are signed; verify with the per-source signing secret.
SDKs
First-party SDKs are on the roadmap. The TypeScript types used by the Argus UI live in frontend/src/api.ts and double as an unofficial reference today.