
Product
Introducing Repository Access Permissions and Custom Roles
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.
Unified batch API for AI providers — low-cost LLM batch processing at scale.
A unified batch API for AI providers. Submit thousands of LLM requests at roughly half the cost with a single call — batchwork handles JSONL, file uploads, inline submission, polling, and result parsing across every major provider.
📖 Full documentation: batchwork.dev
npm install batchwork
# plus the provider package(s) you use:
npm install @ai-sdk/openai @ai-sdk/anthropic
batchwork depends only on ai. The @ai-sdk/* provider packages are optional peer dependencies — install only the ones you batch with. Requires Node.js 20 or newer.
import { batch } from "batchwork";
import { openai } from "@ai-sdk/openai";
const job = await batch({
model: openai.chat("gpt-5.5"),
requests: [
{ customId: "a", prompt: "Summarize: …" },
{ customId: "b", messages: [{ role: "user", content: "Translate: …" }] },
],
});
const results = await job.wait().then(() => job.collect());
for (const r of results) {
console.log(r.customId, r.status, r.text);
}
Author requests in the same generateText shape you already use, pass the AI SDK models you already use, and get back one normalized result type correlated by customId.
Batch embeddings work the same way — pass a text embedding model and values, and get one vector per request back on result.embedding:
import { batchEmbeddings } from "batchwork";
import { openai } from "@ai-sdk/openai";
const job = await batchEmbeddings({
model: openai.textEmbeddingModel("text-embedding-3-small"),
requests: [
{ customId: "a", value: "The quick brown fox." },
{ customId: "b", value: "A lazy dog sleeps." },
],
});
const results = await job.wait().then(() => job.collect());
for (const r of results) {
console.log(r.customId, r.embedding?.length);
}
Batch embeddings are available for OpenAI, Mistral, and Google Gemini — the providers whose batch API accepts embeddings. The rest throw a clear error: Anthropic, Groq, and xAI have no embedding model, and Together AI's batch API doesn't accept the embeddings endpoint.
generateText shape.batch() for completions, batchEmbeddings() for vectors.batchwork/postgres) and Upstash Redis (batchwork/redis) adapters for the poller, or bring your own.Guides for models, the job handle, rehydration, the server layer, and Next.js handlers all live at batchwork.dev.
FAQs
Unified batch API for AI providers — low-cost LLM batch processing at scale.
The npm package batchwork receives a total of 142 weekly downloads. As such, batchwork popularity was classified as not popular.
We found that batchwork demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.