<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ZeroGPU</title>
    <description>The latest articles on DEV Community by ZeroGPU (@team_zerogpu).</description>
    <link>https://dev.to/team_zerogpu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956750%2Fa3147ec8-812d-438f-bbf6-7ee3b90505d7.png</url>
      <title>DEV Community: ZeroGPU</title>
      <link>https://dev.to/team_zerogpu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/team_zerogpu"/>
    <language>en</language>
    <item>
      <title>🔐 Sanitize a CSV of Customer Feedback with the ZeroGPU Router Plugin</title>
      <dc:creator>ZeroGPU</dc:creator>
      <pubDate>Mon, 01 Jun 2026 14:14:30 +0000</pubDate>
      <link>https://dev.to/team_zerogpu/sanitize-a-csv-of-customer-feedback-with-the-zerogpu-router-plugin-3o8a</link>
      <guid>https://dev.to/team_zerogpu/sanitize-a-csv-of-customer-feedback-with-the-zerogpu-router-plugin-3o8a</guid>
      <description>&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Documentation Index
&lt;/h2&gt;

&lt;p&gt;Fetch the complete documentation index at: &lt;a href="https://docs.zerogpu.ai/llms.txt" rel="noopener noreferrer"&gt;https://docs.zerogpu.ai/llms.txt&lt;/a&gt;&lt;br&gt;
Use this file to discover all available pages before exploring further.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  🔐 Sanitize a CSV of Customer Feedback with the ZeroGPU Router Plugin
&lt;/h1&gt;

&lt;p&gt;This notebook demonstrates how to use the &lt;code&gt;zerogpu-router&lt;/code&gt; plugin so that Claude Code can scrub personal data out of a raw CSV export, all from a single natural-language prompt. You hand Claude a &lt;code&gt;feedback_export.csv&lt;/code&gt; whose free-text column is full of customer names, emails, and phone numbers, and you get back two files: a clean copy that is safe to share, and a PII audit log of exactly what was removed and where. By combining Claude Code's plugin system and ZeroGPU's PII-aware nano models, this notebook walks you through a practical pattern where Claude orchestrates the file work while ZeroGPU does the high-volume, well-defined redaction, so raw PII never has to live in your transcript.&lt;/p&gt;

&lt;p&gt;For the full reference, see the &lt;a href="https://dev.to/integrations/claude-code-plugin"&gt;Claude Code plugin integration guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this notebook, you'll explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt;: Anthropic's agentic coding tool that runs Claude directly in your terminal, with file editing, command execution, and a plugin system that extends sessions with custom slash commands and skills. Here it reads the CSV, loops over every row, and assembles the output files while routing the redaction work to ZeroGPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ZeroGPU&lt;/strong&gt;: An ultra-fast, compute-efficient inference provider for apps and agents. We run purpose-built small and nano language models across an edge-powered network for the high-volume, purpose-specific tasks your app or agent runs constantly. Plug in our OpenAI-compatible API and you're live - zero GPU infrastructure, serverless, auto-scaling by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This setup not only demonstrates a practical application of PII redaction at scale, but also provides a flexible framework that can be adapted to other real-world scenarios requiring consistent, auditable handling of sensitive free-text data.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎥 Watch the Video Guide
&lt;/h2&gt;



&lt;h2&gt;
  
  
  📦 Installation
&lt;/h2&gt;

&lt;p&gt;First, install the ZeroGPU CLI, which is the binary every router skill wraps. You'll also need &lt;a href="https://docs.claude.com/en/docs/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; itself (&lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;) and Node.js 20 or newer.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```bash theme={null}&lt;br&gt;
npm install -g zerogpu-cli&lt;br&gt;
zerogpu --version&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Next, start a Claude Code session by running `claude` in your terminal, then add the marketplace and install the `zerogpu-router` plugin. This is what exposes every ZeroGPU command as a Claude Code skill:



```text theme={null}
/plugin marketplace add zerogpu/zerogpu-router
/plugin install zerogpu-router@zerogpu
/reload-plugins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Confirm it's loaded with &lt;code&gt;/plugin&lt;/code&gt;. You should see &lt;code&gt;zerogpu-router - enabled&lt;/code&gt;. For the full setup, including CI-friendly flags, see the &lt;a href="https://dev.to/integrations/claude-code-plugin"&gt;Claude Code plugin integration guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔑 Setting Up API Keys
&lt;/h2&gt;

&lt;p&gt;You'll need to set up your ZeroGPU credentials so that every skill call works without re-prompting. This ensures Claude Code can reach ZeroGPU's inference API securely.&lt;/p&gt;

&lt;p&gt;You can go to &lt;a href="https://platform.zerogpu.ai/dashboard" rel="noopener noreferrer"&gt;here&lt;/a&gt; to get an API key and Project ID from ZeroGPU. The key starts with &lt;code&gt;zgpu-api-&lt;/code&gt; and the Project ID (UUID) is on the project settings page.&lt;/p&gt;

&lt;p&gt;Sign in once from inside your Claude Code session. You'll be prompted for your API key and Project ID, and both are persisted to your config file:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text theme={null}&lt;br&gt;
/zerogpu-router:signin&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Before you run anything, confirm the CLI is installed and you're signed in. `status` exits `0` and prints your masked API key when everything is wired up:



```bash theme={null}
zerogpu --version     # CLI is on your PATH
zerogpu status        # exits 0 and shows your masked API key when signed in
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ZeroGPU CLI 1.x.x
Signed in as project 4ed3e5bb...fd1a
API key: zgpu-api-************XXXX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If &lt;code&gt;status&lt;/code&gt; reports you're not signed in, run &lt;code&gt;/zerogpu-router:signin&lt;/code&gt; again before continuing.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔐 Redact PII with ZeroGPU
&lt;/h2&gt;

&lt;p&gt;ZeroGPU is an ultra-fast, compute-efficient inference provider for apps and agents. We run purpose-built small and nano language models across an edge-powered network for the high-volume, purpose-specific tasks your app or agent runs constantly. Plug in our OpenAI-compatible API and you're live - zero GPU infrastructure, serverless, auto-scaling by default. In this section, we will redact PII from a single support comment as an example, so you can see exactly what the model gives back before pointing it at a whole file.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;redact-pii&lt;/code&gt; skill detects PII spans and replaces each one in-line with an uppercase &lt;code&gt;[LABEL]&lt;/code&gt; placeholder. It routes to &lt;code&gt;gliner-multi-pii-v1&lt;/code&gt; with &lt;code&gt;mask: "label"&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text theme={null}&lt;br&gt;
/zerogpu-router:redact-pii "Spoke to Sarah Chen but my refund never came. Call me at +1 415-555-0182 or email &lt;a href="mailto:dana.morris@gmail.com"&gt;dana.morris@gmail.com&lt;/a&gt;."&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;




```plaintext
Spoke to [PERSON] but my refund never came. Call me at [PHONE_NUMBER] or email [EMAIL].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Note that only spans the model recognizes as PII are replaced. Names, phone numbers, and emails come back masked; an order number or internal ticket ID would pass through untouched.&lt;/p&gt;

&lt;p&gt;🎉 &lt;strong&gt;ZeroGPU effortlessly strips the personal data out of free text in one call, providing a cheap, consistent redaction layer for AI integration!&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🧾 Sanitize a CSV of Customer Feedback
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This section takes a raw CSV export whose free-text column is full of personal data and produces a clean copy plus a PII audit log, with Claude orchestrating the loop and ZeroGPU doing the redaction on every row.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your support tool exports &lt;code&gt;feedback_export.csv&lt;/code&gt;. The &lt;code&gt;comment&lt;/code&gt; column is open-ended text where customers typed whatever they wanted, including their names, emails, phone numbers, and sometimes billing addresses. Before this file can go to a dashboard, a Slack channel, or a Git fixture, the PII has to come out. Compliance also wants a record of what was scrubbed, not just a clean file.&lt;/p&gt;

&lt;p&gt;Doing this by hand is error-prone, and one missed phone-number format leaks a customer. Regex is brittle. This recipe does it with a PII-aware model, consistently, across every row.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Prepare the input CSV
&lt;/h3&gt;

&lt;p&gt;Place your export in the working directory. The recipe assumes a CSV with at least one free-text column to sanitize; all other columns pass through untouched.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```csv theme={null}&lt;br&gt;
id,date,rating,comment&lt;br&gt;
1001,2026-05-21,2,"Spoke to Sarah Chen but my refund never came. Call me at +1 415-555-0182 or email &lt;a href="mailto:dana.morris@gmail.com"&gt;dana.morris@gmail.com&lt;/a&gt;."&lt;br&gt;
1002,2026-05-22,5,"Marcus Rivera was super helpful, thanks!"&lt;br&gt;
1003,2026-05-22,1,"Double charged again. Billing email is &lt;a href="mailto:priya.patel@northwind-labs.com"&gt;priya.patel@northwind-labs.com&lt;/a&gt;, acct under James Okafor."&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Keep a stable, unique `id` column. It's what links a redacted row back to its audit entries. The `date` and `rating` columns are copied verbatim, and `comment` is the only column the models touch. If you don't have an `id` column, ask Claude to add a row index first.

### Step 2: Kick off the workflow with one prompt

In your Claude Code session, in the directory containing the CSV, paste this. That's the whole interaction; everything after it is what Claude does on your behalf.



```text theme={null}
Sanitize feedback_export.csv:
1. Redact PII in the `comment` column and write the result to feedback_clean.csv,
   keeping id, date, and rating unchanged.
2. Produce pii_audit.csv listing every PII entity found, one row per entity, with
   columns: id, category, label, value.
Leave all non-comment columns exactly as they are.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Claude reads and parses the CSV
&lt;/h3&gt;

&lt;p&gt;First, Claude opens &lt;code&gt;feedback_export.csv&lt;/code&gt;, identifies the header row, and isolates the &lt;code&gt;comment&lt;/code&gt; column as the field to process. It holds the other columns aside to re-attach unchanged. No model calls happen yet; this is just file parsing.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Per row, redact the comment with &lt;code&gt;redact-pii&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;For each row, Claude sends the &lt;code&gt;comment&lt;/code&gt; value to &lt;code&gt;redact-pii&lt;/code&gt;, which returns the masked text that goes into the clean sheet.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text theme={null}&lt;br&gt;
/zerogpu-router:redact-pii "Spoke to Sarah Chen but my refund never came. Call me at +1 415-555-0182 or email &lt;a href="mailto:dana.morris@gmail.com"&gt;dana.morris@gmail.com&lt;/a&gt;."&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;




```plaintext
Spoke to [PERSON] but my refund never came. Call me at [PHONE_NUMBER] or email [EMAIL].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 5: Per row, inventory the PII with &lt;code&gt;extract-pii&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;For the same comment, Claude also calls &lt;code&gt;extract-pii&lt;/code&gt;, which returns the PII entities as structured JSON without modifying the text. This is what populates the audit log. Claude tags each returned entity with the row's &lt;code&gt;id&lt;/code&gt; so it can be traced back.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text theme={null}&lt;br&gt;
/zerogpu-router:extract-pii "Spoke to Sarah Chen but my refund never came. Call me at +1 415-555-0182 or email &lt;a href="mailto:dana.morris@gmail.com"&gt;dana.morris@gmail.com&lt;/a&gt;." -c identity,contact&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;




```json theme={null}
[
  { "category": "identity", "label": "person", "text": "Sarah Chen", "score": 0.96 },
  { "category": "contact",  "label": "phone",  "text": "+1 415-555-0182", "score": 0.95 },
  { "category": "contact",  "label": "email",  "text": "dana.morris@gmail.com", "score": 0.99 }
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Why two calls per row? &lt;code&gt;redact-pii&lt;/code&gt; gives you the masked text; &lt;code&gt;extract-pii&lt;/code&gt; gives you the itemized list of what was masked. They run on the same PII model but serve different outputs: the shareable file versus the compliance trail. &lt;code&gt;extract-pii&lt;/code&gt; defaults to &lt;code&gt;-t 0.5&lt;/code&gt; and &lt;code&gt;-c identity,contact&lt;/code&gt;; add &lt;code&gt;financial&lt;/code&gt;, &lt;code&gt;medical&lt;/code&gt;, or &lt;code&gt;credentials&lt;/code&gt; if your text contains them, and raise &lt;code&gt;-t&lt;/code&gt; to reduce false positives.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 6: Claude assembles the two output files
&lt;/h3&gt;

&lt;p&gt;Claude loops Steps 4 and 5 across every row, then writes both files.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;feedback_clean.csv&lt;/code&gt; keeps the same schema as the input, with &lt;code&gt;comment&lt;/code&gt; now masked:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```csv theme={null}&lt;br&gt;
id,date,rating,comment&lt;br&gt;
1001,2026-05-21,2,"Spoke to [PERSON] but my refund never came. Call me at [PHONE_NUMBER] or email [EMAIL]."&lt;br&gt;
1002,2026-05-22,5,"[PERSON] was super helpful, thanks!"&lt;br&gt;
1003,2026-05-22,1,"Double charged again. Billing email is [EMAIL], acct under [PERSON]."&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


`pii_audit.csv` has one row per detected entity, joined to the source row by `id`:



```csv theme={null}
id,category,label,value
1001,identity,person,Sarah Chen
1001,contact,phone,+1 415-555-0182
1001,contact,email,dana.morris@gmail.com
1002,identity,person,Marcus Rivera
1003,contact,email,priya.patel@northwind-labs.com
1003,identity,person,James Okafor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 7: Verify before you share
&lt;/h3&gt;

&lt;p&gt;Run a few quick sanity checks before the clean file leaves your machine:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```bash theme={null}&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Row counts match (header + same number of data rows)
&lt;/h1&gt;

&lt;p&gt;wc -l feedback_export.csv feedback_clean.csv&lt;/p&gt;

&lt;h1&gt;
  
  
  2. No obvious leftovers; should print nothing
&lt;/h1&gt;

&lt;p&gt;grep -E '@|+?[0-9][0-9 ()-]{7,}' feedback_clean.csv&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Eyeball the before/after diff
&lt;/h1&gt;

&lt;p&gt;diff &amp;lt;(cut -d, -f4- feedback_export.csv) &amp;lt;(cut -d, -f4- feedback_clean.csv)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


If check 2 surfaces anything, it's almost always a domain-specific identifier the standard PII model doesn't cover (internal hostnames, contract numbers, order IDs, card last-fours), not a missed name or email. For those, add an `extract-entities` pass with your own labels and mask those spans too:



```text theme={null}
/zerogpu-router:extract-entities "Order #88231 for acct A-4471 failed." --labels order_id,account_id -t 0.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You end up with three files. &lt;code&gt;feedback_export.csv&lt;/code&gt; is the original raw PII and is not safe to share. &lt;code&gt;feedback_clean.csv&lt;/code&gt; has the same rows with &lt;code&gt;comment&lt;/code&gt; masked and is safe to share. &lt;code&gt;pii_audit.csv&lt;/code&gt; deliberately contains the original PII values, so treat it as a sensitive artifact: store it like any other secret, and never commit it to a public repo or drop it next to the clean file.&lt;/p&gt;

&lt;p&gt;🎉 From a single prompt, Claude parsed the CSV, ran &lt;code&gt;redact-pii&lt;/code&gt; and &lt;code&gt;extract-pii&lt;/code&gt; on every row, and wrote both a shareable clean copy and an auditable PII log, all while the raw personal data stayed out of its reasoning context.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 Highlights
&lt;/h2&gt;

&lt;p&gt;This notebook has guided you through setting up and running a Claude Code workflow with ZeroGPU for sanitizing a CSV of customer feedback. You can adapt and expand this example for various other scenarios requiring consistent, auditable handling of sensitive free-text data.&lt;/p&gt;

&lt;p&gt;Key tools utilized in this notebook include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt;: Anthropic's agentic coding tool that runs Claude directly in your terminal, with file editing, command execution, and a plugin system that extends sessions with custom slash commands and skills. Here it reads the CSV, loops over every row, and assembles the output files while routing the redaction work to ZeroGPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ZeroGPU&lt;/strong&gt;: An ultra-fast, compute-efficient inference provider for apps and agents. We run purpose-built small and nano language models across an edge-powered network for the high-volume, purpose-specific tasks your app or agent runs constantly. Plug in our OpenAI-compatible API and you're live - zero GPU infrastructure, serverless, auto-scaling by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This comprehensive setup allows you to adapt and expand the example for various scenarios requiring consistent, auditable handling of sensitive free-text data.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>csv</category>
      <category>claude</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introducing Batch Processing for ZeroGPU</title>
      <dc:creator>ZeroGPU</dc:creator>
      <pubDate>Thu, 28 May 2026 14:03:32 +0000</pubDate>
      <link>https://dev.to/team_zerogpu/introducing-batch-processing-for-zerogpu-1lb1</link>
      <guid>https://dev.to/team_zerogpu/introducing-batch-processing-for-zerogpu-1lb1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5y6uzjeo13l5rrv6jat.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5y6uzjeo13l5rrv6jat.webp" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Running AI inference one request at a time works well for real-time product experiences. But many workloads do not need an immediate response. Data enrichment, classification, extraction, content moderation, summarization, and offline analytics often involve hundreds or thousands of requests that can be processed asynchronously.&lt;/p&gt;

&lt;p&gt;That is where the ZeroGPU Batch API comes in.&lt;/p&gt;

&lt;p&gt;With Batch Processing, you can upload a JSONL file, submit it as a batch job, and retrieve the results when processing is complete. It is designed for large asynchronous workloads where throughput, reliability, and simplicity matter more than instant response time.&lt;br&gt;
Why Batch Processing?&lt;/p&gt;

&lt;p&gt;Many AI workflows are naturally asynchronous.&lt;br&gt;
For example, you might want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classify thousands of documents.&lt;/li&gt;
&lt;li&gt;Extract structured data from customer records.&lt;/li&gt;
&lt;li&gt;Run content moderation over historical user-generated content.&lt;/li&gt;
&lt;li&gt;Summarize support tickets, reviews, or research notes.&lt;/li&gt;
&lt;li&gt;Process backfills or recurring data pipelines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sending each request individually can add unnecessary orchestration complexity. You need retry logic, request tracking, output matching, rate management, and failure handling.&lt;/p&gt;

&lt;p&gt;The Batch API gives you a cleaner workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;br&gt;
Batch Processing in ZeroGPU follows a simple file-based flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a JSONL input file.&lt;/li&gt;
&lt;li&gt;Upload it using the Files API.&lt;/li&gt;
&lt;li&gt;Create a batch using the returned file ID.&lt;/li&gt;
&lt;li&gt;Poll the batch until it completes.&lt;/li&gt;
&lt;li&gt;Download the output and error files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each line in the JSONL file represents one request. ZeroGPU processes those requests asynchronously and writes the results back to output files.&lt;/p&gt;

&lt;p&gt;A minimal input line looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;“custom_id”:”request&lt;/span&gt;&lt;span class="mi"&gt;-1&lt;/span&gt;&lt;span class="s2"&gt;",”method”:”POST”,”url”:”/v1/chat/completions”,”body”:{“model”:”your-model-id”,”messages”:[{“role”:”user”,”content”:”Classify this text.”}]}}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The custom_id is returned in the output, so you can match every result back to your original input.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built For AI Workloads At Scale&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Batch API is especially useful when you need to process a large amount of data without holding open client connections or building your own job orchestration layer.&lt;/p&gt;

&lt;p&gt;ZeroGPU currently supports batch jobs for /v1/chat/completions, with JSONL files uploaded through /v1/files.&lt;/p&gt;

&lt;p&gt;The core endpoints are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /v1/files to upload input JSONL.
POST /v1/batches to create a batch job.
GET /v1/batches/{batch_id} to check status.
GET /v1/files/{file_id}/content to download results.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes batch processing easy to integrate into existing backend systems, cron jobs, data pipelines, and internal tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenAI-Compatible Shape&lt;/strong&gt;&lt;br&gt;
ZeroGPU’s Batch and Files APIs are wire-compatible with the OpenAI-style batch workflow, while using ZeroGPU authentication headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;x-api-key: your-api-key
x-project-id: your-project-id

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means developers familiar with OpenAI batch jobs should feel at home, while still getting ZeroGPU’s routing, project isolation, logging, and model infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When Should You Use Batch?&lt;/strong&gt;&lt;br&gt;
Use the real-time API when your user is waiting for a response.&lt;br&gt;
Use the Batch API when the work can happen in the background.&lt;br&gt;
Good fits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nightly data processing.&lt;/li&gt;
&lt;li&gt;Bulk document classification.&lt;/li&gt;
&lt;li&gt;Large-scale extraction jobs.&lt;/li&gt;
&lt;li&gt;Offline analytics.&lt;/li&gt;
&lt;li&gt;Backfills.&lt;/li&gt;
&lt;li&gt;Evaluation datasets.&lt;/li&gt;
&lt;li&gt;Reprocessing historical data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Batch jobs are also easier to audit because each request has a stable custom_id, and outputs are written to downloadable files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The fastest way to try it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Prepare a JSONL file.&lt;/li&gt;
&lt;li&gt;Upload it with POST /v1/files.&lt;/li&gt;
&lt;li&gt;Create a batch with POST /v1/batches.&lt;/li&gt;
&lt;li&gt;Poll for completion.&lt;/li&gt;
&lt;li&gt;Download the output file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can try the new interactive playgrounds in the ZeroGPU docs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Upload file: /api-reference/batch/upload-file
Create batch: /api-reference/batch/create-batch
Retrieve batch: /api-reference/batch/retrieve-batch
Download file: /api-reference/batch/download-file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Batch Processing makes it easier to run AI workloads at scale without managing queues, workers, retries, or GPU infrastructure.&lt;/p&gt;

&lt;p&gt;ZeroGPU handles the execution. You focus on the data.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>slm</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
