Skip to main content
Upload JSONL files containing inference request/response pairs directly through the dashboard. Uploaded data flows into the same analytics pipeline as live inferences, making it available for training dataset curation, evaluation, and analysis.

File Format

Only JSONL (JSON Lines) files with a .jsonl extension are supported. Each line must be a valid JSON object with the following fields:
FieldTypeRequiredDescription
requestobjectYesThe raw provider request body (e.g., OpenAI or Anthropic format)
responseobjectNoThe raw provider response body (nullable)
The system auto-detects the provider format (OpenAI or Anthropic) from the structure of the response body.

Example JSONL Content

{"request": {"model": "gpt-4o", "messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the capital of France?"}]}, "response": {"id": "chatcmpl-abc123", "object": "chat.completion", "choices": [{"index": 0, "message": {"role": "assistant", "content": "The capital of France is Paris."}, "finish_reason": "stop"}], "usage": {"prompt_tokens": 24, "completion_tokens": 8, "total_tokens": 32}}}
{"request": {"model": "gpt-4o", "messages": [{"role": "user", "content": "Translate 'hello' to Spanish."}]}, "response": {"id": "chatcmpl-def456", "object": "chat.completion", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hola"}, "finish_reason": "stop"}], "usage": {"prompt_tokens": 12, "completion_tokens": 2, "total_tokens": 14}}}
The response field is optional. You can upload request-only data if you don’t have the corresponding responses — this is useful for curating prompt datasets.

Upload Limits

LimitValue
Maximum file size100 MB
Maximum line count1,000,000 lines
These limits are enforced both client-side (in the upload dialog) and server-side. Files exceeding either limit will be rejected before processing begins.

How to Upload

  1. Navigate to the Datasets page in your project’s Observability dashboard.
  2. Click the “Upload Data” button.
  3. Enter a name for the upload (e.g., “GPT-4o production samples”).
  4. Select or drag-and-drop a .jsonl file.
  5. The UI validates file type, size, and line count before uploading.
  6. Click Upload to start the upload.
The file picker only accepts .jsonl files. If your data is in another format (CSV, JSON array, etc.), convert it to JSONL first — one JSON object per line, no trailing commas.

How Upload Processing Works

After the file is uploaded, a background job picks it up for processing. Here’s what happens:
StageStatusDescription
Upload receivedpendingFile is stored and queued for processing
Parsing & validationprocessingEach line is validated, parsed, and provider format is auto-detected
CompletecompletedAll lines have been processed and inserted into the analytics database
ErrorfailedProcessing encountered a fatal error
During processing:
  • Lines are validated individually — a single malformed line won’t fail the entire upload.
  • Rows are inserted into the analytics database in batches of 1,000 for efficiency.
  • Lines that fail validation are recorded, with up to 100 error details stored per upload.
  • The dashboard auto-polls every 5 seconds while any upload is in progress, so you can watch status updates in real time.

Viewing Uploaded Data

Once processing completes, uploads appear in the Uploads section of the Datasets page. Each upload displays:
  • Name — the label you provided during upload
  • Status badge — pending, processing, completed, or failed
  • Line counts — processed lines vs. total lines
  • Failed lines — number of lines that failed validation
  • Creation date — when the upload was initiated

Inspecting Results

  • Expand a completed upload to see error details for any lines that failed validation.
  • Click the external link icon to jump to the Inferences page, pre-filtered to show only inferences from that upload.
  • Click Download to retrieve the original uploaded JSONL file.
Use the Inferences page filter to compare uploaded historical data against live production inferences — helpful for spotting distribution drift or quality regressions.

Use Cases

ScenarioDescription
Historical data importUpload inference logs from other providers (OpenAI, Anthropic) to analyze them alongside your Inference.net data.
Training dataset curationImport production data, then use the dashboard to filter, review, and curate datasets for fine-tuning.
Multi-source consolidationCombine inference logs from multiple environments or providers into a single analytics view.