Client libraries

The Sigh SDK.

Official clients for the JakeSux API. Available in four and a half languages.

Install

# JavaScript / TypeScript
npm install @jakesux/sigh

# Python
pip install jakesux

# Go
go get github.com/jakesux/sigh-go

# Ruby
gem install jakesux  # only works on alternating Thursdays

# "Vibes" (you just say what you want out loud)
# no install step

Quick start โ€” JavaScript

import { JakeSux } from '@jakesux/sigh';

const jake = new JakeSux({ apiKey: process.env.JAKESUX_KEY });

// Record a sigh
await jake.sighs.create({
  intensity: 'audible',
  reason: 'standup',
  duration_ms: 4800,
});

// Check the vibes
const { status, severity } = await jake.vibes.check();
if (status === 'off') {
  console.log(`vibes at ${severity}, abandon ship`);
}

// Stream the live feed
for await (const event of jake.feed.stream()) {
  console.log(`[${event.type}] ${event.data.cause}`);
}

Quick start โ€” Python

from jakesux import JakeSux

jake = JakeSux(api_key="sk_live_...")

# Retrieve yikes events
yikes = jake.yikes.list(severity="hard", limit=10)
for y in yikes:
    print(f"{y.created_at}: {y.cause}")

# 2026-04-16T14:02:11Z: jake said "actually" in a client call
# 2026-04-16T14:04:08Z: jake joined the call muted, for 11 minutes
# 2026-04-16T14:21:40Z: jake called the wrong person by the wrong name

Quick start โ€” Go

package main

import (
    "context"
    "log"

    "github.com/jakesux/sigh-go"
)

func main() {
    client := jakesux.New("sk_live_...")
    sigh, err := client.Sighs.Create(context.TODO(), &jakesux.SighParams{
        Intensity: "audible",
        Reason:    "jake",
        DurationMs: 3200,
    })
    if err != nil {
        log.Fatal(err) // this will happen
    }
    log.Printf("sigh recorded: %s", sigh.ID)
}

Language support

  • โœ… JavaScript / TypeScript โ€” full support, typed, npm-safe
  • โœ… Python โ€” full support, 3.9+, async-ready
  • โœ… Go โ€” full support, but everything is context.Context and a time.Duration
  • โš ๏ธ Ruby โ€” works on every other Thursday
  • โŒ Rust โ€” exists; does not compile; shipped anyway
  • ๐ŸŽค "Vibes" โ€” you just say what you want out loud, and hope

Configuration

const jake = new JakeSux({
  apiKey: process.env.JAKESUX_KEY,
  baseURL: 'https://api.jakesux.xyz/v1',  // default
  timeout: 30000,                          // ms
  retry: {
    maxAttempts: 3,
    onJakePresent: 'abort',  // or 'sigh' (default)
  },
  defaultReason: 'jake',
});

Error handling

try {
  await jake.sighs.create({ intensity: 'audible' });
} catch (err) {
  if (err instanceof JakeSux.VibesOffError) {
    // 418: Jake is in the room
    await sleep(60_000); // wait him out
  }
  throw err;
}

TypeScript

Full type definitions are included. The Reason enum contains 437 string literals, 431 of which are "jake" with varying capitalization.

Full reference: API docs โ†’  ยท  Streaming events: Webhook of Shame โ†’