
Security News
arXiv Is Rate Limiting Authors Following a Flood of AI Slop Submissions
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.
@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 493 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.

Security News
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.

Research
/Security News
A new GhostAction wave hits hundreds of GitHub repos, expanding CI/CD secret theft to cloud and AI credentials in source code and git history.

Research
/Security News
Tensorlake npm SDK version 0.5.144 was compromised in a ChainDrop / Shai-Hulud attack, delivering credential-stealing malware.