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

# Export Cluster Run Data (CSV / Parquet)

> One-click export of a clustering run's data — the exact rows behind the
    visualization (one row per member plus one per centroid: document id,
    cluster id and current label, x/y[/z] layout coordinates, per-cluster
    stats, and any custom LLM fields).

    Formats:
    - **`format=parquet`** (default): returns JSON with a short-lived
      presigned download URL for the run's `cluster_documents.parquet`
      artifact — the full-fidelity file (includes centroid vectors), any
      size. Download it promptly; the URL expires.
    - **`format=csv`**: streams a spreadsheet-friendly CSV conversion —
      stable column order, current (renamed) cluster labels, no raw vectors.
      Capped at 100,000 rows; bigger runs get a clear 413 pointing to
      parquet. Scope to one cluster with `cluster_label` (accepts the run's
      cluster id like `cl_3` OR its current label).

    Exports are strictly per-run: the run you pass is the run you get.
    Runs that completed before artifacts existed, failed before the export
    step, or whose artifacts have aged out of object storage return 404
    with a message saying exactly what's missing.



## OpenAPI

````yaml get /v1/clusters/{cluster_id}/executions/{run_id}/export
openapi: 3.1.0
info:
  title: Mixpeek API
  description: >-
    This is the Mixpeek API, providing access to various endpoints for data
    processing and retrieval.
  termsOfService: https://mixpeek.com/terms
  contact:
    name: Mixpeek Support
    url: https://mixpeek.com/contact
    email: info@mixpeek.com
  version: '0.82'
servers:
  - url: https://api.mixpeek.com
    description: Production
security:
  - BearerAuth: []
paths:
  /v1/clusters/{cluster_id}/executions/{run_id}/export:
    get:
      tags:
        - Cluster Executions
      summary: Export Cluster Run Data (CSV / Parquet)
      description: |-
        One-click export of a clustering run's data — the exact rows behind the
            visualization (one row per member plus one per centroid: document id,
            cluster id and current label, x/y[/z] layout coordinates, per-cluster
            stats, and any custom LLM fields).

            Formats:
            - **`format=parquet`** (default): returns JSON with a short-lived
              presigned download URL for the run's `cluster_documents.parquet`
              artifact — the full-fidelity file (includes centroid vectors), any
              size. Download it promptly; the URL expires.
            - **`format=csv`**: streams a spreadsheet-friendly CSV conversion —
              stable column order, current (renamed) cluster labels, no raw vectors.
              Capped at 100,000 rows; bigger runs get a clear 413 pointing to
              parquet. Scope to one cluster with `cluster_label` (accepts the run's
              cluster id like `cl_3` OR its current label).

            Exports are strictly per-run: the run you pass is the run you get.
            Runs that completed before artifacts existed, failed before the export
            step, or whose artifacts have aged out of object storage return 404
            with a message saying exactly what's missing.
      operationId: >-
        export_cluster_execution_v1_clusters__cluster_id__executions__run_id__export_get
      parameters:
        - name: cluster_id
          in: path
          required: true
          schema:
            type: string
            description: Cluster ID
            title: Cluster Id
          description: Cluster ID
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            description: Run ID whose data to export
            title: Run Id
          description: Run ID whose data to export
        - name: format
          in: query
          required: false
          schema:
            type: string
            pattern: ^(parquet|csv)$
            description: >-
              Export format: 'parquet' returns a presigned download URL (JSON),
              'csv' streams the converted file
            default: parquet
            title: Format
          description: >-
            Export format: 'parquet' returns a presigned download URL (JSON),
            'csv' streams the converted file
        - name: cluster_label
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              CSV only: restrict rows to one cluster — accepts the run's cluster
              id (e.g. 'cl_3') or its current label
            title: Cluster Label
          description: >-
            CSV only: restrict rows to one cluster — accepts the run's cluster
            id (e.g. 'cl_3') or its current label
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuth: []
          NamespaceHeader: []
components:
  schemas:
    ErrorResponse:
      properties:
        success:
          type: boolean
          title: Success
          description: Always false for error responses
          default: false
        status:
          type: integer
          title: Status
          description: HTTP status code for this error
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: Error details payload
      type: object
      required:
        - status
        - error
      title: ErrorResponse
      description: Error response model.
      examples:
        - error:
            details:
              id: ns_123
              resource: namespace
            message: Namespace not found
            type: NotFoundError
          status: 404
          success: false
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ErrorDetail:
      properties:
        message:
          type: string
          title: Message
          description: Human-readable error message
        type:
          type: string
          title: Type
          description: Stable error type identifier (machine-readable)
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Fine-grained error code for programmatic handling (e.g.,
            namespace_name_taken, feature_extractor_not_found). Present only
            when consumers may need to branch on a specific error condition.
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
          description: >-
            Optional structured details to help debugging (validation errors,
            IDs, etc.)
      type: object
      required:
        - message
        - type
      title: ErrorDetail
      description: Error detail model.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one
        in Studio under Settings → API Keys, or with an admin key via `POST
        /v1/organizations/users/{user_email}/api-keys`. A missing header returns
        403; an invalid or revoked key returns 401.
    NamespaceHeader:
      type: apiKey
      in: header
      name: X-Namespace
      description: >-
        Namespace id (`ns_...`), not the namespace name. This scopes the request
        rather than authenticating it, and it is required on every operation
        marked `x-mixpeek-namespace-scoped`.

````