API reference

The JakeSux API.

Everything the website does, the API does worse. RESTful, GraphQL-adjacent, and (in select cases) just yelling.

Base URL

https://api.jakesux.xyz/v1

Authentication

Authorization: Bearer sk_live_doesntmatter

We do not actually validate your API key. We validate your vibes. If your vibes are off, you will receive a 418 I'm a teapot (and Jake is in the room).

POST /v1/sighs

Record a sigh. Supports synchronous and fire-and-regret modes.

curl -X POST https://api.jakesux.xyz/v1/sighs \
  -H "Authorization: Bearer sk_live_whatever" \
  -H "Content-Type: application/json" \
  -d '{
    "intensity": "audible",
    "reason": "jake",
    "duration_ms": 3200,
    "witnesses": 12
  }'

Response:

{
  "id": "sigh_9f2e1d",
  "created_at": "2026-04-16T21:02:11Z",
  "intensity": "audible",
  "reason": "jake",
  "rendered": true,
  "heard_by": 47
}

GET /v1/yikes

Retrieve yikes events, filterable by severity and time range.

GET /v1/yikes?severity=hard&since=2026-04-01

{
  "data": [
    { "id": "yk_001", "severity": "hard", "cause": "jake said 'actually' in a client call" },
    { "id": "yk_002", "severity": "medium", "cause": "jake's zoom background was a bathroom" },
    { "id": "yk_003", "severity": "critical", "cause": "jake replied-all to a payroll email" }
  ],
  "has_more": true,
  "next_cursor": "cur_yk_003"
}

POST /v1/vibes/check

Check the vibes. Returns 200 if vibes are immaculate, 418 if they are off, 500 if Jake is on the call.

POST /v1/vibes/check

{ "status": "off", "severity": 0.94, "source": "jake" }

POST /v1/eyerolls

Register an eyeroll. Include trajectory for ML training purposes.

POST /v1/eyerolls

{
  "severity": "hard",
  "duration_ms": 1100,
  "trajectory": "upper-left-to-ceiling",
  "ocular_strain": true
}

GET /v1/sighs/aggregate

Aggregated sigh metrics by team, region, or "what did he say now?"

GET /v1/sighs/aggregate?group_by=team&window=24h

{
  "data": [
    { "team": "eng", "total": 4183, "p99_duration_ms": 4400 },
    { "team": "sales", "total": 7291, "p99_duration_ms": 5800 },
    { "team": "product", "total": 9021, "p99_duration_ms": 7200 }
  ]
}

Rate limits

  • Free tier: 10 req/min. Above this we return a 429 and one (1) sigh.
  • Pro tier: 1,000 req/min. Soft limits. Hard feelings.
  • Enterprise: unlimited — but Jake personally reads each request.

Errors

400 Bad Request          The request is bad. So is Jake.
401 Unauthorized         Your vibes are off.
403 Forbidden            Jake said no.
418 I'm a Teapot         Jake is in the room.
429 Too Many Requests    Please sigh fewer.
500 Internal Error       Jake is in the server room.

Webhooks

For real-time event delivery, see the Webhook of Shame.

SDKs

Don't want to call the API directly? Use the Sigh SDK (JS, Python, Go, and "Vibes").