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

# List ingest runs

> Lists ingest runs across the tenant's sources and datasets with their status and progress. Use this to confirm a load finished before querying it.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/ingest/runs
openapi: 3.1.0
info:
  description: >-
    Splendor is a search and retrieval API for your operational data. Ingest

    datasets — logs, documents, and structured records — and query them through
    one

    consistent interface that spans full-text, SQL, and semantic (vector)
    search.


    Every request authenticates with a bearer token and selects a workspace with
    the

    `X-Splendor-Tenant-Id` header. Read and query operations are available to
    any

    member; operations that create, change, or delete data require an admin
    role.


    All search modes return one shared envelope, and every result carries
    provenance

    back to the exact source object it came from.
  title: Splendor API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.withsplendor.com
security:
  - bearerAuth: []
tags:
  - description: Resolve the authenticated user and the tenants they can access.
    name: Identity
  - description: >-
      Build on Splendor as a platform: authenticate with a platform API key to
      provision an isolated tenant per end-customer and manage your platform
      keys.
    name: Platform
  - description: >-
      List datasets, inspect inferred schemas and readiness, and manage dataset
      lifecycle including deletion and schema rebuilds.
    name: Datasets & schema
  - description: >-
      Run full-text, SQL, and semantic search over your datasets, stream
      results, and resolve object media.
    name: Search & query
  - description: Save queries and materialize result sets for repeatable analysis.
    name: Views
  - description: >-
      Define named, versioned, parameterized SQL queries and manage their
      versions.
    name: Query Endpoints
  - description: Create and manage asynchronous exports of search results.
    name: Exports
  - description: >-
      Configure data sources, upload data through hosted multipart uploads,
      stream logs, and track ingest runs.
    name: Sources & ingest
  - description: >-
      Connect third-party systems by managing connector instances in the
      selected tenant.
    name: Connectors
  - description: Define and test detection rules that run against incoming data.
    name: Detections
  - description: Inspect discovered fields and promote them to fast, aggregatable fields.
    name: Fields
  - description: >-
      Operational visibility and recovery: audit logs, usage, dead-letter queue,
      reindex jobs, and data-deletion jobs.
    name: Operations
paths:
  /v1/ingest/runs:
    get:
      tags:
        - Sources & ingest
      summary: List ingest runs
      description: >-
        Lists ingest runs across the tenant's sources and datasets with their
        status and progress. Use this to confirm a load finished before querying
        it.
      operationId: listIngestRuns
      parameters:
        - in: query
          name: source_id
          required: false
          schema:
            anyOf:
              - type: integer
              - type: 'null'
            title: Source Id
        - in: query
          name: dataset_id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Dataset Id
        - in: query
          name: status
          required: false
          schema:
            anyOf:
              - enum:
                  - uploading
                  - queued
                  - processing
                  - text_indexed
                  - semantic_pending
                  - ready
                  - failed
                  - aborted
                  - deleted
                  - superseded
                type: string
              - type: 'null'
            title: Status
        - in: query
          name: include_non_current
          required: false
          schema:
            default: false
            title: Include Non Current
            type: boolean
        - in: query
          name: limit
          required: false
          schema:
            default: 100
            maximum: 1000
            minimum: 1
            title: Limit
            type: integer
        - $ref: '#/components/parameters/SplendorTenantId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestRunListResponse'
          description: Successful Response
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  parameters:
    SplendorTenantId:
      description: Selects the tenant (workspace) the request acts within.
      in: header
      name: x-splendor-tenant-id
      required: true
      schema:
        type: string
  schemas:
    IngestRunListResponse:
      example:
        runs:
          - bucket: acme-logs
            completed_at: '2026-01-15T09:30:00Z'
            connector_run_id: null
            created_at: '2026-01-15T09:30:00Z'
            dataset_id: app-logs
            documents:
              expected: 1240000
              index_committed: 1240000
              parsed: 1240000
              schema_observed: 1240000
              semantic_embedded: 1240000
              semantic_failed: 0
              semantic_total: 1240000
            error_code: null
            error_message: null
            etag: '"9b2cf5e1"'
            failed_at: null
            ingest_failure_id: null
            ingest_run_id: ing_01H8Z3
            input_kind: hosted_upload
            key: 2026/01/15/app-0001.jsonl.gz
            lifecycle:
              reasons: []
              repairable: false
              state: ready
            queued_at: '2026-01-15T09:30:00Z'
            ready_for:
              semantic_search: true
              sql_search: true
              text_search: true
            reindex_job_id: null
            semantic_ready_at: '2026-01-15T09:30:00Z'
            source_id: 12
            started_at: '2026-01-15T09:30:00Z'
            status: ready
            tenant_id: acme
            text_indexed_at: '2026-01-15T09:30:00Z'
            updated_at: '2026-01-15T09:30:00Z'
            upload_session_id: ups_01H8Z3
      properties:
        runs:
          items:
            $ref: '#/components/schemas/IngestRunReadinessResponse'
          title: Runs
          type: array
      required:
        - runs
      title: IngestRunListResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    IngestRunReadinessResponse:
      example:
        bucket: acme-logs
        completed_at: '2026-01-15T09:30:00Z'
        connector_run_id: null
        created_at: '2026-01-15T09:30:00Z'
        dataset_id: app-logs
        documents:
          expected: 1240000
          index_committed: 1240000
          parsed: 1240000
          schema_observed: 1240000
          semantic_embedded: 1240000
          semantic_failed: 0
          semantic_total: 1240000
        error_code: null
        error_message: null
        etag: '"9b2cf5e1"'
        failed_at: null
        ingest_failure_id: null
        ingest_run_id: ing_01H8Z3
        input_kind: hosted_upload
        key: 2026/01/15/app-0001.jsonl.gz
        lifecycle:
          reasons: []
          repairable: false
          state: ready
        queued_at: '2026-01-15T09:30:00Z'
        ready_for:
          semantic_search: true
          sql_search: true
          text_search: true
        reindex_job_id: null
        semantic_ready_at: '2026-01-15T09:30:00Z'
        source_id: 12
        started_at: '2026-01-15T09:30:00Z'
        status: ready
        tenant_id: acme
        text_indexed_at: '2026-01-15T09:30:00Z'
        updated_at: '2026-01-15T09:30:00Z'
        upload_session_id: ups_01H8Z3
      properties:
        bucket:
          title: Bucket
          type: string
        completed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Completed At
        connector_run_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Connector Run Id
        created_at:
          format: date-time
          title: Created At
          type: string
        dataset_id:
          title: Dataset Id
          type: string
        documents:
          $ref: '#/components/schemas/IngestReadinessDocumentCounts'
        error_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Code
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        etag:
          anyOf:
            - type: string
            - type: 'null'
          title: Etag
        failed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Failed At
        ingest_failure_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ingest Failure Id
        ingest_run_id:
          title: Ingest Run Id
          type: string
        input_kind:
          title: Input Kind
          type: string
        key:
          title: Key
          type: string
        lifecycle:
          $ref: '#/components/schemas/IngestLifecycleDiagnostic'
        queued_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Queued At
        ready_for:
          $ref: '#/components/schemas/IngestReadinessReadyFor'
        reindex_job_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Reindex Job Id
        semantic_ready_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Semantic Ready At
        source_id:
          title: Source Id
          type: integer
        started_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Started At
        status:
          title: Status
          type: string
        tenant_id:
          title: Tenant Id
          type: string
        text_indexed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Text Indexed At
        updated_at:
          format: date-time
          title: Updated At
          type: string
        upload_session_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Upload Session Id
      required:
        - ingest_run_id
        - tenant_id
        - dataset_id
        - source_id
        - input_kind
        - bucket
        - key
        - etag
        - upload_session_id
        - connector_run_id
        - reindex_job_id
        - ingest_failure_id
        - status
        - ready_for
        - documents
        - lifecycle
        - error_code
        - error_message
        - created_at
        - updated_at
        - queued_at
        - started_at
        - text_indexed_at
        - semantic_ready_at
        - completed_at
        - failed_at
      title: IngestRunReadinessResponse
      type: object
    ApiError:
      description: >-
        Error envelope returned by every Splendor API endpoint.


        ``detail`` is either a plain message string (most errors) or a
        structured

        ``{code, message}`` object (validation and capacity errors that carry a
        stable

        machine-readable code).
      examples:
        - detail: Dataset not found
        - detail:
            code: semantic_search_capacity_exhausted
            message: Semantic search capacity is temporarily exhausted; retry shortly.
      properties:
        detail:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/ErrorBody'
          title: Detail
      required:
        - detail
      title: ApiError
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    IngestReadinessDocumentCounts:
      properties:
        expected:
          anyOf:
            - type: integer
            - type: 'null'
          title: Expected
        index_committed:
          title: Index Committed
          type: integer
        parsed:
          title: Parsed
          type: integer
        schema_observed:
          title: Schema Observed
          type: integer
        semantic_embedded:
          title: Semantic Embedded
          type: integer
        semantic_failed:
          default: 0
          title: Semantic Failed
          type: integer
        semantic_total:
          title: Semantic Total
          type: integer
      required:
        - expected
        - parsed
        - index_committed
        - schema_observed
        - semantic_total
        - semantic_embedded
      title: IngestReadinessDocumentCounts
      type: object
    IngestLifecycleDiagnostic:
      properties:
        reasons:
          items:
            type: string
          title: Reasons
          type: array
        repairable:
          title: Repairable
          type: boolean
        state:
          enum:
            - waiting
            - ready
            - partial
            - repairable
            - failed
            - aborted
            - deleted
            - superseded
          title: State
          type: string
      required:
        - state
        - repairable
      title: IngestLifecycleDiagnostic
      type: object
    IngestReadinessReadyFor:
      properties:
        semantic_search:
          title: Semantic Search
          type: boolean
        sql_search:
          title: Sql Search
          type: boolean
        text_search:
          title: Text Search
          type: boolean
      required:
        - text_search
        - sql_search
        - semantic_search
      title: IngestReadinessReadyFor
      type: object
    ErrorBody:
      description: Structured error detail returned by validation and capacity errors.
      examples:
        - code: semantic_query_text_required
          message: Semantic vector search requires non-empty text.
      properties:
        code:
          title: Code
          type: string
        message:
          title: Message
          type: string
      required:
        - code
        - message
      title: ErrorBody
      type: object
  responses:
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      description: The bearer token is missing, malformed, or expired.
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      description: The token lacks access to the tenant or the role required.
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: API token issued from the Splendor console.
      scheme: bearer
      type: http

````