Skip to main content

Endpoints

MethodPathDescription
GET/v1/ticketsList incidents
POST/v1/ticketsCreate incident
GET/v1/tickets/:idGet incident
PATCH/v1/tickets/:idUpdate incident
DELETE/v1/tickets/:idDelete incident
GET/v1/incidents/streamSSE live stream
GET/v1/incidents/:id/repliesList replies
POST/v1/incidents/:id/repliesAdd reply
/v1/tickets and /v1/incidents both refer to the same resource. The paths are interchangeable.

GET /v1/tickets

List your incidents, newest first. Query params
ParamDefaultDescription
statusopen | in_progress | resolved | closed
prioritylow | normal | high | urgent
limit50Max results
page1Page number
Response 200
{
  "tickets": [
    {
      "Id": 42,
      "title": "Unit 3 unresponsive",
      "status": "open",
      "priority": "urgent",
      "source": "alert",
      "sla_due_at": "2026-03-15T08:00:00Z",
      "sla_breached": false,
      "sla_status": "warning",
      "customer_token": "abc123xyz...",
      "lat": 35.4676,
      "lng": -97.5164,
      "location_name": "Grid Sector 7",
      "created_at": "2026-03-15T07:00:00Z"
    }
  ],
  "total": 1
}

POST /v1/tickets

Create a new incident. Body
{
  "title": "Unit 3 unresponsive",
  "description": "No ping in 5 minutes. Last known: Grid 7.",
  "priority": "urgent",
  "source": "alert",
  "lat": 35.4676,
  "lng": -97.5164,
  "location_name": "Grid Sector 7"
}
FieldTypeRequiredDescription
titlestringyesIncident title
descriptionstringnoDetail
prioritystringnolow | normal | high | urgent — default normal
sourcestringnoapi | email | webhook | alert — default api
source_refstringnoExternal reference ID
lat / lngnumbernoIncident coordinates
location_namestringnoHuman-readable location
Response 201
{
  "Id": 42,
  "title": "Unit 3 unresponsive",
  "status": "open",
  "priority": "urgent",
  "sla_due_at": "2026-03-15T08:00:00Z",
  "sla_breached": false,
  "sla_status": "ok",
  "customer_token": "k9mXzQ2pL8wR...",
  "customer_status_url": "https://schedkit.net/incidents/status/k9mXzQ2pL8wR..."
}
Share customer_status_url with affected parties — no login required. Shows title, status, and public replies only.

PATCH /v1/tickets/:id

Update status, priority, or description.
{
  "status": "in_progress",
  "priority": "high"
}
Broadcasts incident.updated to all SSE subscribers.

DELETE /v1/tickets/:id

Permanently delete an incident and all its replies.

GET /v1/incidents/stream

SSE stream of all incident events for the authenticated user.
curl -N https://schedkit.net/v1/incidents/stream \
  -H "x-api-key: $SCHEDKIT_KEY"
Events
EventTrigger
incident.createdNew incident opened
incident.updatedStatus/priority changed
incident.replyNew reply posted

POST /v1/incidents/:id/replies

Add a reply to an incident thread.
{ "body": "On scene. Investigating now." }
Broadcasts incident.reply to all SSE subscribers.