> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Start a JSONL upload into a dataset

> Opens an upload of one JSONL file, up to 1 GiB and 100,000 rows, into an existing Postgres-plane dataset. Each line uses the row shape of `POST .../entries`. PUT the whole file to `upload.url` with its exact declared size (for example `curl -T rows.jsonl "$url"`), then call complete. The URL must be used within 15 minutes; GET the upload for a fresh one. Repeating the request with the same idempotency_key returns the same upload.



## OpenAPI

````yaml openapi/model-distillation/management.openapi.yaml POST /projects/{alias}/datasets/{datasetId}/uploads
openapi: 3.1.0
info:
  title: CoreWeave Model Distillation Management API
  version: 1.0.0
  description: |
    Manage providers, projects, routing versions, datasets, relabeling,
    fine-tunes, evaluations, and analytics. This is the same API used by
    Model Distillation.
servers:
  - url: https://forge.coreweave.com/api/distillation/v1
    description: Production
security:
  - WandbCredential: []
tags:
  - name: Providers
    description: OpenAI-compatible endpoints, credentials, model catalogs, and pricing.
  - name: Projects
    description: Stable project identity and project-level information.
  - name: Routing
    description: Versioned model targets, weights, and request parameters.
  - name: Datasets
    description: >-
      Reproducible data snapshots, entries, relabeling, and reusable model
      outputs.
  - name: Fine-tunes
    description: Supervised fine-tuning jobs and hosted model artifacts.
  - name: Evaluations
    description: Head-to-head, exact-match, and categorization evaluations.
  - name: Analytics
    description: Project traffic, token, error, and estimated-cost read models.
  - name: UI preferences
    description: Per-project display preferences used by the UI.
paths:
  /projects/{alias}/datasets/{datasetId}/uploads:
    parameters:
      - $ref: '#/components/parameters/WandbEntity'
      - $ref: '#/components/parameters/ProjectAlias'
      - $ref: '#/components/parameters/DatasetId'
    post:
      tags:
        - Datasets
      summary: Start a JSONL upload into a dataset
      description: >-
        Opens an upload of one JSONL file, up to 1 GiB and 100,000 rows, into an
        existing Postgres-plane dataset. Each line uses the row shape of `POST
        .../entries`. PUT the whole file to `upload.url` with its exact declared
        size (for example `curl -T rows.jsonl "$url"`), then call complete. The
        URL must be used within 15 minutes; GET the upload for a fresh one.
        Repeating the request with the same idempotency_key returns the same
        upload.
      operationId: createDatasetUpload
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                idempotency_key:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: >-
                    Repeating a request with the same key returns the same
                    upload.
                file:
                  type: object
                  properties:
                    name:
                      type: string
                      minLength: 1
                      maxLength: 512
                    size_bytes:
                      type: integer
                      exclusiveMinimum: 0
                      maximum: 1073741824
                  required:
                    - name
                    - size_bytes
                  additionalProperties: false
                mode:
                  default: append
                  description: >-
                    append rejects rows whose row_id already exists; upsert
                    replaces them.
                  type: string
                  enum:
                    - append
                    - upsert
              required:
                - idempotency_key
                - file
              additionalProperties: false
      responses:
        '201':
          description: The upload session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetUpload'
        default:
          $ref: '#/components/responses/Error'
components:
  parameters:
    WandbEntity:
      name: Wandb-Entity
      in: header
      required: false
      description: >-
        Accessible personal or team entity. Omit to use the authenticated user's
        default entity.
      schema:
        type: string
    ProjectAlias:
      name: alias
      in: path
      required: true
      schema:
        type: string
        pattern: ^[a-z0-9-]{1,64}$
    DatasetId:
      name: datasetId
      in: path
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    DatasetUpload:
      type: object
      required:
        - id
        - dataset_id
        - mode
        - state
        - file
        - upload
        - validation
        - counters
        - error
        - expires_at
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
        dataset_id:
          type: string
          format: uuid
        mode:
          type: string
          enum:
            - append
            - upsert
        state:
          type: string
          enum:
            - uploading
            - queued
            - validating
            - committed
            - failed
            - cancelled
            - expired
          description: >-
            uploading until complete is called; queued and validating while the
            worker checks every line; committed once the rows are in the
            dataset.
        error:
          type:
            - string
            - 'null'
        counters:
          oneOf:
            - $ref: '#/components/schemas/JsonObject'
            - type: 'null'
          description: 'After commit: rows, created, updated, revision, and entry_counts.'
        expires_at:
          type: string
          format: date-time
        file:
          type: object
          required:
            - name
            - size_bytes
          properties:
            name:
              type: string
            size_bytes:
              type: integer
        upload:
          oneOf:
            - type: object
              required:
                - method
                - url
                - expires_at
              properties:
                method:
                  type: string
                  const: PUT
                url:
                  type: string
                  format: uri
                  description: Presigned URL bound to the declared file size.
                expires_at:
                  type: string
                  format: date-time
                  description: The PUT must start before this time.
            - type: 'null'
          description: >-
            Where to send the file while the upload is open; null once complete
            is called.
        validation:
          type: object
          required:
            - validated_bytes
            - validated_lines
            - error_count
            - errors_truncated
            - errors
          properties:
            validated_bytes:
              type: integer
            validated_lines:
              type: integer
            error_count:
              type: integer
            errors_truncated:
              type: boolean
            errors:
              type: array
              items:
                type: object
                required:
                  - line
                  - code
                  - message
                properties:
                  line:
                    type:
                      - integer
                      - 'null'
                    description: Null for errors about the whole upload.
                  code:
                    type: string
                  message:
                    type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    JsonObject:
      type: object
      additionalProperties: true
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - type
          properties:
            message:
              type: string
            type:
              type: string
      example:
        error:
          message: Project 'missing' not found in entity 'your-team'
          type: not_found
  responses:
    Error:
      description: Request failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    WandbCredential:
      type: http
      scheme: bearer
      bearerFormat: wandb API key or JWT
      description: >-
        A wandb API key or wandb JWT. Browser sessions are exchanged by the
        Model Distillation web app backend; job capabilities are internal only.

````