
Product
Introducing Socket Scanning for VS Code Marketplace Extensions
Socket now scans VS Code extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.
@formfeed/sdk
Advanced tools
Formfeed API client: renders, templates, webhooks. No dependencies, Web APIs only.
The TypeScript client for the Formfeed API: generate PDFs and images from
templates, and fill Word and PowerPoint templates. It has no dependencies and uses only Web APIs (fetch, Web Crypto), so it runs in Node 22+,
Deno, Bun, Cloudflare Workers and browsers.
429 and 503 with the server's Retry-After.Idempotency-Key with every render, so a retried request never renders twice.FormfeedError with code, status and request_id.npm install @formfeed/sdk
import { Formfeed } from '@formfeed/sdk';
const client = new Formfeed({
apiKey: process.env.FORMFEED_API_KEY!,
region: 'eu',
});
const render = await client.renders.create({
template: 'invoice-de',
data: {
invoice: {
number: '2026-0042',
lines: [{ description: 'Consulting', qty: 8, price: 120 }],
},
},
});
console.log(render.download_url, render.page_count);
const pdf = await client.renders.download(render); // the bytes
const queued = await client.renders.create({
template: 'invoice-de',
data,
mode: 'async',
});
const done = await client.renders.waitFor(queued.id);
const job = await client.renders.batch({
template: 'invoice-de',
items: orders.map((order) => ({ data: { invoice: order } })),
zip: true,
});
const finished = await client.jobs.waitFor(job.id);
import { readFile } from 'node:fs/promises';
// a template is a .docx or .pptx with tags such as {{ customer.name }} in its text
await client.templates.create({
name: 'Offer',
slug: 'offer',
kind: 'docx',
engine: 'jinja2',
file: { data: await readFile('offer.docx'), name: 'offer.docx' },
publish: true,
});
const filled = await client.renders.create({
template: 'offer',
output: 'docx',
data,
}); // or output: 'pdf'
// a new version with a new document; without `file` the latest document is kept
await client.templates.versions.create('offer', {
file: { data: await readFile('offer-v2.docx'), name: 'offer.docx' },
});
const docx = await client.templates.versions.file('offer', 'latest'); // the document's bytes
// any office document to PDF (Word, Excel, PowerPoint, OpenDocument, RTF)
const pdf = await client.pdf.convert(
{ file: { data: await readFile('report.xlsx'), name: 'report.xlsx' } },
{ single_page_sheets: true },
);
import { parseWebhookEvent } from '@formfeed/sdk';
// pass the raw request body, not re-serialised JSON; throws when the signature does not match
const event = await parseWebhookEvent(
secret,
request.headers.get('webhook-signature'),
rawBody,
);
if (event.type === 'render.completed') console.log(event.data); // the render object
MIT
FAQs
Formfeed API client: renders, templates, webhooks. No dependencies, Web APIs only.
The npm package @formfeed/sdk receives a total of 240 weekly downloads. As such, @formfeed/sdk popularity was classified as not popular.
We found that @formfeed/sdk 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.

Product
Socket now scans VS Code extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.

Research
/Security News
Socket uncovered two malicious VS Code themes in a GlassWorm-linked cluster with thousands of installs across VS Code Marketplace and Open VSX.

Security News
/Company News
Capital One is partnering with Socket to proactively secure its open source supply chain.