---
title: "Record experiment items in bulk"
method: PUT
path: "/v1/private/experiments/items/bulk"
tags: ["Experiments"]
---

# Record experiment items in bulk

`PUT /v1/private/experiments/items/bulk`

Record experiment items in bulk with traces, spans, and feedback scores. Maximum request size is 4MB.

## Request body

- ExperimentItemBulkUploadExperimentItemBulkWriteView
  - `experiment_name` string, required
  - `dataset_name` string, required
  - `experiment_id` string, uuid — Optional experiment ID. If provided, items will be added to the existing experiment and experimentName will be ignored. If not provided or experiment with that ID doesn't exist, a new experiment will be created with the given experimentName
  - `project_name` string — Project for traces auto-created from items that provide evaluate_task_result (i.e. without an explicit trace). If null, the default project is used; relying on this fallback is deprecated, please provide project_name explicitly.
  - `items` ExperimentItemBulkRecordExperimentItemBulkWriteView[], required
    - `dataset_item_id` string, uuid, required
    - `evaluate_task_result` JsonListStringExperimentItemBulkWriteView
    - `trace` TraceExperimentItemBulkWriteView — Please provide either none, only one of evaluate_task_result or trace, but never both
      - `id` string, uuid
      - `project_name` string — If null, the default project is used
      - `name` string
      - `start_time` string, date-time, required
      - `end_time` string, date-time
      - `input` JsonListStringExperimentItemBulkWriteView
      - `output` JsonListStringExperimentItemBulkWriteView
      - `metadata` JsonListStringExperimentItemBulkWriteView
      - `tags` string[]
      - `error_info` ErrorInfoExperimentItemBulkWriteView
        - `exception_type` string, required
        - `message` string
        - `traceback` string, required
      - `last_updated_at` string, date-time
      - `ttft` number, double — Time to first token in milliseconds
      - `thread_id` string
      - `source` 'sdk' | 'experiment' | 'playground' | 'optimization' | 'evaluator'
      - `environment` string
    - `spans` SpanExperimentItemBulkWriteView[]
      - `id` string, uuid
      - `parent_span_id` string, uuid
      - `name` string
      - `type` 'general' | 'tool' | 'llm' | 'guardrail'
      - `start_time` string, date-time, required
      - `end_time` string, date-time
      - `input` JsonListStringExperimentItemBulkWriteView
      - `output` JsonListStringExperimentItemBulkWriteView
      - `metadata` JsonListStringExperimentItemBulkWriteView
      - `model` string
      - `provider` string
      - `tags` string[]
      - `usage` object
      - `error_info` ErrorInfoExperimentItemBulkWriteView
        - `exception_type` string, required
        - `message` string
        - `traceback` string, required
      - `last_updated_at` string, date-time
      - `total_estimated_cost` number
      - `total_estimated_cost_version` string
      - `ttft` number, double — Time to first token in milliseconds
      - `source` 'sdk' | 'experiment' | 'playground' | 'optimization' | 'evaluator'
      - `environment` string
    - `feedback_scores` FeedbackScoreExperimentItemBulkWriteView[]
      - `name` string, required
      - `category_name` string
      - `value` number, required
      - `reason` string
      - `source` 'ui' | 'sdk' | 'online_scoring', required
      - `source_queue_id` string, uuid
      - `created_at` string, date-time
      - `last_updated_at` string, date-time
      - `created_by` string
      - `last_updated_by` string
      - `value_by_author` object

## Response `204`

No content

## Other responses

- `400` — Bad Request
- `409` — Conflict
- `422` — Unprocessable Content

---

[API](https://skmtc.net/comet-ml/apis/opik-rest-api.md) · [All operations](https://skmtc.net/comet-ml/apis/opik-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/comet-ml/opik-rest-api/versions/4ed2fbc97cc3/schema)
