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.Contextand atime.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 โ