npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@transcribe-api/sdk

v0.1.3

Published

Official JavaScript SDK for Transcribe API.

Readme

Transcribe API JavaScript SDK

Official JavaScript SDK for Transcribe API.

Installation

npm install @transcribe-api/sdk

Usage

import { TranscribeAPI } from "@transcribe-api/sdk";

const client = new TranscribeAPI({
  apiKey: "YOUR_API_KEY",
  showLogs: true,
  polling: {
    interval: 10,
    timeout: 15 * 60,
  },
});

const transcript = await client.transcribe({
  file: "audio.mp3",
});

const asyncJob = await client.transcribe({
  file: "long-audio.mp3",
  multipartConcurrency: 8,
});

const batchJob = await client.batch.transcribe({
  files: [
    { reference_id: "episode_1", file: "a.mp3" },
    { reference_id: "episode_2", file: "b.wav" },
  ],
});

const remoteJob = await client.transcribe({
  file: { url: "https://signed-get-url-from-s3-or-r2" },
});

const remoteBatchJob = await client.batch.transcribe({
  files: [
    { reference_id: "episode_1", url: "https://signed-get-url-1" },
    { reference_id: "episode_2", url: "https://signed-get-url-2" },
  ],
});

const mixedBatchJob = await client.batch.transcribe({
  files: [
    { reference_id: "episode_1", file: "local.mp3" },
    { reference_id: "episode_2", url: "https://signed-get-url-2" },
  ],
});

For Cloudflare Workers and other web-style runtimes, use the Worker entrypoint:

import { TranscribeAPI } from "@transcribe-api/sdk/worker";

Async uploads use signed R2 URLs returned by the API. Multipart upload is used automatically when the backend returns a multipart flow. Async job creation now goes through POST /v1/transcribe for single-file and batch jobs. For batch calls, each item must be { reference_id, file } or { reference_id, url }, and local plus remote entries can be mixed in the same batch. The SDK adds size_bytes automatically for large local files when the backend needs multipart upload. Set polling.interval and optional polling.timeout in seconds on the client to make async jobs wait for completion automatically. The SDK enforces a minimum polling interval of 10 seconds and stops on completed, failed, or insufficient_funds. If polling is not configured, use GET /v1/transcribe/{job_id} manually. The response always includes the core job fields and adds result_url when job_status is completed. The SDK defaults multipartConcurrency to 8 for reliability. You can increase it up to 32 when your network path is stable. For Node path uploads, multipart progress is persisted to a sidecar resume file and the SDK will resume the existing big-file job on the next run instead of starting over. Multipart uploads also adaptively reduce concurrency on retryable transport errors instead of failing the whole upload immediately. Set showLogs: true on the client or per async call to let the SDK print upload URL receipt, upload progress, and the final /upload-completed response automatically. Pass a custom logger object if you want those messages redirected somewhere other than console.

Use @transcribe-api/sdk/worker when you need a runtime-safe build for Cloudflare Workers. The Worker entrypoint supports remote URLs, Blob, File, and byte inputs, but does not support local file path strings or Node.js filesystem resume state.