Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Batch Request File Builder for AI APIs (JSONL)

A sheet in, batch request files out; the results back in as columns, with a retry file.

Free preview, no sign-upIncluded in your pass Premium tool Premium pass: ₹799 / $19.99 for 30 days On this device; its files download once
+2 +1 more details No upload Developer

Free preview: the validation report of every row with the token and cost estimate, and the first lines of the batch file (up to 5, at most half). Locked until you unlock it: download and copy.

Premium pass ₹799 for 30 days or ₹249 for 1 week, one‑time. Premium pass $19.99 for 30 days or $7.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: the validation report of every row with the token and cost estimate, and the first lines of the batch file (up to 5, at most half).
  • Locked until you unlock it: download and copy.
  • Unlock: Premium pass, ₹799 for 30 days or ₹249 for 1 week, a one-time payment that never renews. Unlock: Premium pass, $19.99 for 30 days or $7.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

1. Your sheet

Or paste cells from a spreadsheet

2. The requests

Request format

Write {{column name}} where a cell of the row goes. Insert a column:

More settings

Tokens and cost

Next steps Done. What next?

Start over

A Premium pass unlocks the full result. See passes

All developer tools

About the Batch Request File Builder for AI APIs (JSONL)

Batch processing runs thousands of AI requests at half the usual price, but each request has to be one line of a JSONL file in the exact shape the API expects — and the answers come back in another file, in any order, matched only by an id. This builder does both ends from a spreadsheet.

Open a CSV, TSV, Excel or OpenDocument sheet (or paste cells), write a prompt template with {{column}} placeholders and an optional system prompt, choose the model id, the output limit, the temperature and — for structured output — a JSON Schema, and pick the request format: the chat-completions format (custom_id, method, url and body), the messages format (custom_id and params) or the generate-content format (key and request). Every row is checked, each request gets a stable id, the tokens are counted with the LLM Token Counter’s tokenizers, and the cost is estimated at the batch prices you enter or pick; a batch over the format’s limits is split into several files.

When the batch has run, open its results here: the answers, finish reasons, token use and errors become new columns of your sheet, structured answers are checked against the schema and spread into their own columns, and the rows that failed go into a retry file. Nothing is sent anywhere and no API key is asked for. Without a pass the result is a free preview: the validation report of every row with the token and cost estimate and the first lines of the batch file (up to 5, and at most half of a small batch); the files, splitting, result merging and retry files unlock with a Premium pass.

How to use it

  1. Open your sheet (the first row holds the column names), or try the sample reviews.
  2. Choose the request format your provider’s batch API takes, enter the model id and the maximum output tokens, and write the prompt template; the column buttons insert {{column}} placeholders.
  3. For answers as data, tick Answer as JSON matching a schema and paste a JSON Schema of one answer.
  4. Read the check: every row with a problem is listed by its row number. Count the tokens and enter batch prices (or pick a model’s published batch price) for the cost estimate.
  5. With a Premium pass, download the batch file (a ZIP when it is split) and submit it with your provider’s API or console; the free preview shows its first lines (up to 5, at most half of them).
  6. When the batch is done, open the results file here and, with a pass, download the sheet with the results as CSV or Excel, the run summary and a retry file for the rows that failed.

Examples

One review in the chat-completions format
Input
Columns id, product, review · template “Product: {{product}} Review: {{review}} …” · schema {label, score}
Result
{"custom_id":"r-001","method":"POST","url":"/v1/chat/completions","body":{"model":"…","messages":[{"role":"system","content":"…"},{"role":"user","content":"Product: Electric kettle …"}],"max_completion_tokens":512,"response_format":{"type":"json_schema","json_schema":{"name":"review_sentiment","schema":{…},"strict":true}}}}
The same row in the messages format
Input
Messages format
Result
{"custom_id":"r-001","params":{"model":"…","max_tokens":512,"system":"…","messages":[{"role":"user","content":"Product: Electric kettle …"}],"output_config":{"format":{"type":"json_schema","schema":{…}}}}}

Ids in this format may use only letters, digits, - and _ (at most 64 characters); without an id column the rows get row-000002, row-000003 …

Results back into the sheet
Input
The output file of a finished batch
Result
New columns: batch_status, answer, finish_reason, input_tokens, output_tokens, batch_error, answer.label, answer.score, schema_errors

Common uses

  • Classifying, tagging or summarising thousands of rows — reviews, tickets, product descriptions — at batch prices.
  • Extracting fields from text into columns with structured output and a schema.
  • Running an evaluation set through a model and getting every answer next to its row.
  • Re-sending only the rows that failed or expired, with the same ids.

The three formats and their limits

  • Chat-completions format: one line per request with custom_id, method (POST), url (/v1/chat/completions) and body; structured output goes in response_format as a json_schema with strict: true. Up to 50,000 requests and 200 MB per input file, with a 24-hour completion window. Results come back as lines with custom_id, response (status_code and body) and error; failed and expired requests are written to a separate error file, so open both.
  • Messages format: each request is custom_id and params; ids match ^[a-zA-Z0-9_-]{1,64}$. Up to 100,000 requests or 256 MB per batch; a batch that does not finish within 24 hours expires. Results are lines with custom_id and a result of type succeeded, errored, canceled or expired. The API takes the requests as one JSON body ({"requests": […]}), which the builder can also write; structured output is output_config.format with a json_schema.
  • Generate-content format: one line per request with key and request (a generateContent request: contents, systemInstruction, generationConfig; structured output as responseMimeType application/json with responseJsonSchema). Input files may be up to 2 GB; the target is 24 hours and jobs expire after 48. The model is chosen when the job is created, not in each line.

All three are billed at half the standard price, and all three may return results in any order, so the builder matches every result to its row by its id.

How the results are merged

Each result is matched to its row by custom_id or key. The answer text, the finish reason, the input and output tokens and any error go into new columns; a row with no result yet is marked missing. With a schema, the answer is read as JSON (also inside a ``json fence), checked against the schema, and each top-level field gets its own column, with any schema errors in schema_errors`. Errored, expired, canceled and missing rows and answers that break the schema go into the retry file with their original ids. Cells that a spreadsheet would read as a formula (starting with =, +, -, @, a tab or a carriage return) are written with a leading apostrophe, so an answer can never run as a formula when the file is opened.

Sources

Limitations

  • The builder writes and reads files; it does not submit batches or fetch their results (that needs your API key, which this page never asks for).
  • Token counts for model families that publish no tokenizer are estimates, and the cost uses the prices you enter or pick, at the batch rate; long-context surcharges and cache prices are not included.
  • Each request is one user turn with an optional system prompt; tools, images and multi-turn conversations are not built here.
  • Sheets of up to 200,000 rows are read; counting the tokens of very large sheets takes a while.

Privacy

On this device; its files download once

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot. Counting tokens downloads the tokenizer you pick once from MySmartCoPilot; your sheet, prompts and results never leave the browser, and no API key is ever asked for.

Frequently asked questions

What do I get without a pass?

Without a pass, Batch Request File Builder for AI APIs (JSONL) shows the validation report of every row with the token and cost estimate, and the first lines of the batch file (up to 5, at most half). Until you unlock it, the result can’t be downloaded or copied. A Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

Which format do I need?

The one your provider’s batch API documents: lines with custom_id, method, url and body are the chat-completions format; requests with custom_id and params are the messages format; lines with key and request are the generate-content format. Each is described above with its limits.

Is my data or API key sent anywhere?

No. The sheet, the prompts and the results stay in your browser, and the builder never asks for an API key: you submit the file yourself. Only the tokenizer you pick is downloaded once from MySmartCoPilot.

How are the ids made, and why do they matter?

Results may come back in any order, so every request carries an id that its result repeats. Pick a column with unique ids, or leave it to the builder: row-000002 for spreadsheet row 2, and so on, which stays the same when you add rows below. Ids must be unique; the messages format also allows only letters, digits, - and _.

What happens when my batch is bigger than the limit?

The builder splits it into several files under the format’s request count and file size (or a smaller count you choose), named batch-001.jsonl, batch-002.jsonl …, downloaded together as a ZIP. Submit each file as its own batch.

What does the free preview show?

The check of every row (errors and warnings with their row numbers), the token and cost estimate, and the first lines of the batch file: up to 5, and never more than half of a small batch. Downloading or copying the files, splitting, reading results back into the sheet and the retry file need a Premium pass.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.