---
title: "Upload dataset from JSON, JSONL, CSV, or PyArrow"
method: POST
path: "/v1/datasets/upload"
tags: ["datasets"]
---

# Upload dataset from JSON, JSONL, CSV, or PyArrow

`POST /v1/datasets/upload`

## Query parameters

- `sync` boolean — If true, fulfill request synchronously and return JSON containing dataset_id.

## Request body

- object
  - `action` 'create' | 'append' | 'update'
  - `name` string, required
  - `description` string
  - `inputs` object[], required
  - `outputs` object[]
  - `metadata` object[]
  - `splits` union[] — Split per example: string, string array, or null
    - union
      - string
      - string[]
  - `span_ids` string[] — Span IDs to link examples back to spans
  - `example_ids` string[] — Optional example ID per example. If provided, it is used as the example's stable public ID.

## Response `200`

Successful Response

- UploadDatasetResponseBody
  - `data` UploadDatasetData, required
    - `dataset_id` string, required
    - `version_id` string, required
    - `num_created_examples` integer, required
    - `num_updated_examples` integer, required
    - `num_deleted_examples` integer, required

## Other responses

- `403` — Forbidden
- `409` — Dataset with the given name already exists (action=create).
- `422` — Invalid request body

---

[API](https://skmtc.net/arize-ai/apis/arize-phoenix-rest-api.md) · [All operations](https://skmtc.net/arize-ai/apis/arize-phoenix-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/arize-ai/arize-phoenix-rest-api/versions/a14d8ad6f708/schema)
