Claude-code-plugins wispr-install-auth

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/wispr-pack/skills/wispr-install-auth" ~/.claude/skills/jeremylongshore-claude-code-plugins-wispr-install-auth && rm -rf "$T"
manifest: plugins/saas-packs/wispr-pack/skills/wispr-install-auth/SKILL.md
source content

Wispr Flow Install & Auth

Overview

Configure Wispr Flow API for voice-to-text transcription. Supports WebSocket (recommended, lower latency) and REST endpoints. Auth via API key (backend) or access tokens (client-side).

Prerequisites

Instructions

Step 1: Configure API Key

# .env
WISPR_API_KEY=your-api-key-here
WISPR_API_URL=https://api.wisprflow.ai

Step 2: WebSocket Connection (Recommended)

const ws = new WebSocket('wss://api.wisprflow.ai/api/v1/ws', {
  headers: { Authorization: `Bearer ${process.env.WISPR_API_KEY}` },
});

ws.on('open', () => {
  // Send context for better transcription
  ws.send(JSON.stringify({
    type: 'config',
    context: { app: 'code-editor', language: 'en' },
  }));
  console.log('Connected to Wispr Flow');
});

ws.on('message', (data) => {
  const result = JSON.parse(data.toString());
  if (result.type === 'transcription') {
    console.log(`Transcript: ${result.text}`);
  }
});

Step 3: REST API (Simpler, Higher Latency)

import requests, os

response = requests.post(
    f"{os.environ['WISPR_API_URL']}/api/v1/transcribe",
    headers={"Authorization": f"Bearer {os.environ['WISPR_API_KEY']}"},
    files={"audio": open("recording.wav", "rb")},
    data={"language": "en"},
)
print(f"Transcript: {response.json()['text']}")

Step 4: Generate Client Access Token

// Backend: generate short-lived token for client use
const response = await fetch('https://api.wisprflow.ai/api/v1/auth/token', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WISPR_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ expires_in: 3600 }), // 1 hour
});
const { access_token } = await response.json();
// Send access_token to client for direct WebSocket connection

Error Handling

ErrorCauseSolution
401 Unauthorized
Invalid API keyCheck key at wisprflow.ai/developers
WebSocket disconnectNetwork interruptionReconnect with backoff
Empty transcriptNo speech detectedCheck audio format and quality

Resources

Next Steps

Proceed to

wispr-hello-world
for your first transcription.