---
title: "Upload Tasks"
method: POST
path: "/api/v1/custom-benchmarks/{benchmark_id}/upload"
tags: ["custom-benchmarks"]
---

# Upload Tasks

`POST /api/v1/custom-benchmarks/{benchmark_id}/upload`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/custom-benchmarks/{benchmark_id}/upload`
- Auth: none declared

Bulk-add tasks to an existing benchmark. Idempotent in the sense
that you can call it repeatedly to grow the suite — each call appends.

Schema validation already enforces per-field caps and the 500-task
limit per request. We additionally enforce a global suite cap so a
user can't loop and balloon a single suite past the safe ceiling.

## Path parameters

- `benchmark_id` string, uuid, required

## Request body

- CustomBenchmarkUpload: Bulk-add tasks to an existing benchmark. Capped at 500 tasks per request to keep memory + insert-batch bounded.
  - `tasks` CustomBenchmarkTaskCreate[], required
    - `title` string, required
    - `description` string, nullable
    - `domain` 'code_generation' | 'data_extraction' | 'tool_use' | 'customer_support' | 'rag' | 'research' | 'writing' | 'reasoning' | 'custom'
    - `difficulty` 'easy' | 'medium' | 'hard'
    - `prompt` string, required
    - `expected_output` string, nullable
    - `max_tokens_hint` integer

## Response `200`

Successful Response

- UploadResult: Returned by the bulk-upload endpoint.
  - `benchmark_id` string, uuid, required
  - `tasks_added` integer, required
  - `new_task_count` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
