Developers

Argus API

REST + JSON. JWT auth. Same endpoints the Argus UI uses. Plain-English search, AI classification, and similar-incident embeddings are first-class citizens — not premium add-ons.

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
  }
}

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.