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

# Get run results

> Leaderboard (pass rate or WER with 95% intervals, ties within noise, fixed and regressed cases vs the baseline), the groups × candidates grid, and chart points (score, speed, cost, Pareto frontier).



## OpenAPI

````yaml /docs-openapi.json get /v1/benchmarks/{id}/results/{runId}
openapi: 3.1.0
info:
  title: Zelto REST API
  version: v1
  description: >-
    Programmatic access to your Zelto organization. Every endpoint is scoped to
    the organization the API key belongs to. Mint a key at Settings →
    Integrations → API integration.
servers:
  - url: https://api.zelto.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Monitors
    description: Filtered, asynchronous exports of stored monitor results.
  - name: Agents
    description: Voice and text agents normalised through Zelto's ingestion pipeline.
  - name: Conversations
    description: >-
      Phone calls, chats, and voicemails — plus their transcripts and
      recordings.
  - name: Customer Metrics
    description: >-
      Customer-provided evaluations attached to a conversation (requires metrics
      enabled).
  - name: Reviews
    description: Human review state for conversations.
  - name: Buckets
    description: Reviewer routing — group conversations for batched review.
  - name: Companies
    description: Clients or brands your agents work for, and their logos.
  - name: Findings
    description: >-
      Structured issues discovered during analysis, with optional conversation
      attachments and comments.
  - name: Experiments
    description: >-
      Prospective measurement of two externally routed prompt versions across
      independent monitor outcomes.
  - name: Organizations
    description: >-
      Headless org provisioning. Requires an admin/service API key (not a
      read-only org-scoped customer key).
  - name: AI providers
    description: >-
      Your organization's own (bring-your-own) AI provider keys. Monitors can
      run on them instead of Zelto's built-in models. Owner or admin keys only;
      the secret is write-only.
  - name: Benchmarks
    description: >-
      Repeatable evaluations of agent prompts, models and speech-to-text engines
      over a fixed set of cases, scored by Judges.
paths:
  /v1/benchmarks/{id}/results/{runId}:
    get:
      tags:
        - Benchmarks
      summary: Get run results
      description: >-
        Leaderboard (pass rate or WER with 95% intervals, ties within noise,
        fixed and regressed cases vs the baseline), the groups × candidates
        grid, and chart points (score, speed, cost, Pareto frontier).
      operationId: getBenchmarkRunResults
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: runId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: layerId
          in: query
          required: false
          description: 'Score layer (a rescore). Default: the original layer.'
          schema:
            type: string
            format: uuid
        - name: baselineCandidateId
          in: query
          required: false
          description: >-
            Compare against this candidate. Default: the reference, else the
            first.
          schema:
            type: string
            format: uuid
        - name: compareRunId
          in: query
          required: false
          description: Compare with another run of this benchmark; fills `comparison`.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BenchmarkRunResults'
        '400':
          $ref: '#/components/responses/ValidationFailed'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    BenchmarkRunResults:
      type: object
      properties:
        run:
          type: object
          properties:
            id:
              type: string
            number:
              type: number
            status:
              type: string
            versionNumber:
              type:
                - number
                - 'null'
            isDraftRun:
              type: boolean
            candidates:
              type: array
              items:
                $ref: '#/components/schemas/BenchmarkCandidate'
            repeats:
              type: number
            totalCells:
              type: number
            completedCells:
              type: number
            createdAt:
              type: string
            finishedAt:
              type:
                - string
                - 'null'
          required:
            - id
            - number
            - status
            - versionNumber
            - isDraftRun
            - candidates
            - repeats
            - totalCells
            - completedCells
            - createdAt
            - finishedAt
          additionalProperties: {}
        baselineCandidateId:
          type: string
        leaderboard:
          type: array
          items:
            $ref: '#/components/schemas/BenchmarkLeaderboardRow'
        checkCells:
          type: array
          items:
            type: object
            properties:
              checkGroupId:
                type: string
              candidateId:
                type: string
              passed:
                type: number
              total:
                type: number
            required:
              - checkGroupId
              - candidateId
              - passed
              - total
            additionalProperties: {}
        comparison:
          anyOf:
            - type: object
              properties:
                otherRunId:
                  type: string
                otherRunNumber:
                  type: number
                otherVersionNumber:
                  type:
                    - number
                    - 'null'
                sharedCases:
                  type: number
                onlyInThisRun:
                  type: number
                onlyInOtherRun:
                  type: number
                editedCases:
                  type: number
                candidates:
                  type: array
                  items:
                    type: object
                    properties:
                      candidateId:
                        type: string
                      otherCandidateId:
                        type: string
                      thisValue:
                        type: number
                      otherValue:
                        type: number
                      delta:
                        type: number
                      ci:
                        anyOf:
                          - type: array
                            prefixItems:
                              - type: number
                              - type: number
                            items: false
                            minItems: 2
                            maxItems: 2
                          - type: 'null'
                        description: 95% interval on the same scale, or null.
                      significant:
                        type: boolean
                      fixedCases:
                        type: number
                      regressedCases:
                        type: number
                      'n':
                        type: number
                    required:
                      - candidateId
                      - otherCandidateId
                      - thisValue
                      - otherValue
                      - delta
                      - ci
                      - significant
                      - fixedCases
                      - regressedCases
                      - 'n'
                    additionalProperties: {}
                unmatchedCandidateIds:
                  type: array
                  items:
                    type: string
                cases:
                  type: array
                  items:
                    type: object
                    properties:
                      caseId:
                        type: string
                      candidateId:
                        type: string
                      otherCandidateId:
                        type: string
                      change:
                        type: string
                        enum:
                          - fixed
                          - regressed
                          - unchanged
                          - new
                      revisionChanged:
                        type: boolean
                    required:
                      - caseId
                      - candidateId
                      - otherCandidateId
                      - change
                      - revisionChanged
                    additionalProperties: {}
                mismatch:
                  anyOf:
                    - type: object
                      properties:
                        thisVersionNumber:
                          type:
                            - number
                            - 'null'
                        otherVersionNumber:
                          type:
                            - number
                            - 'null'
                        cases:
                          type: boolean
                        judges:
                          anyOf:
                            - type: object
                              properties:
                                added:
                                  type: number
                                removed:
                                  type: number
                                edited:
                                  type: number
                              required:
                                - added
                                - removed
                                - edited
                              additionalProperties: {}
                            - type: 'null'
                        judgeModel:
                          type: boolean
                      required:
                        - thisVersionNumber
                        - otherVersionNumber
                        - cases
                        - judges
                        - judgeModel
                      additionalProperties: {}
                    - type: 'null'
              required:
                - otherRunId
                - otherRunNumber
                - otherVersionNumber
                - sharedCases
                - onlyInThisRun
                - onlyInOtherRun
                - editedCases
                - candidates
                - unmatchedCandidateIds
                - cases
                - mismatch
              additionalProperties: {}
            - type: 'null'
          description: >-
            Set when `compareRunId` is passed: candidates matched by model and
            prompt version, compared on the shared case revisions (delta = this
            run − the other, with a paired 95% interval), fixed and broke cases,
            and what differs between the runs (case set, Judges, Judge model).
        layerId:
          type:
            - string
            - 'null'
        source:
          type: string
          enum:
            - summary
            - live
        charts:
          type: array
          items:
            type: object
            properties:
              candidateId:
                type: string
              label:
                type: string
              score:
                description: 'Null until a case (STT: a clip) is scored.'
                type:
                  - number
                  - 'null'
              ci:
                anyOf:
                  - type: array
                    prefixItems:
                      - type: number
                      - type: number
                    items: false
                    minItems: 2
                    maxItems: 2
                  - type: 'null'
                description: 95% interval on the same scale, or null.
              p50LatencyMs:
                type:
                  - number
                  - 'null'
              costUsd:
                type:
                  - number
                  - 'null'
              paretoOptimal:
                type: boolean
                description: On the quality-vs-cost frontier.
            required:
              - candidateId
              - label
              - score
              - ci
              - p50LatencyMs
              - costUsd
              - paretoOptimal
            additionalProperties: {}
        counts:
          type: object
          properties:
            errored:
              type: number
            skipped:
              type: number
            pending:
              type: number
          required:
            - errored
            - skipped
            - pending
          additionalProperties: {}
      required:
        - run
        - baselineCandidateId
        - leaderboard
        - checkCells
        - comparison
        - layerId
        - source
        - charts
        - counts
      additionalProperties: {}
      description: A run's leaderboard, groups × candidates grid, and chart points.
    BenchmarkCandidate:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
        model:
          type: string
          description: 'LLM: "openrouter/anthropic/claude-…"; STT: "deepgram/nova-3".'
        agentVersionId:
          description: LLM only. Null = the prompt as recorded on each case.
          type:
            - string
            - 'null'
        agentVersionLabel:
          type:
            - string
            - 'null'
        isReference:
          type: boolean
      required:
        - id
        - label
        - model
        - agentVersionId
        - agentVersionLabel
      description: 'What a run compares: a model plus a prompt source, or an STT engine.'
    BenchmarkLeaderboardRow:
      type: object
      properties:
        candidate:
          $ref: '#/components/schemas/BenchmarkCandidate'
        isReference:
          type: boolean
        rank:
          type: number
          description: 1-based; ties within noise share a rank.
        tiedWithinNoise:
          type: boolean
        headline:
          type: object
          properties:
            value:
              type: number
            ci:
              anyOf:
                - type: array
                  prefixItems:
                    - type: number
                    - type: number
                  items: false
                  minItems: 2
                  maxItems: 2
                - type: 'null'
              description: 95% interval on the same scale, or null.
            'n':
              type: number
          required:
            - value
            - ci
            - 'n'
          additionalProperties: {}
          description: LLM pass rate or STT WER, 0..1.
        passedCases:
          type: number
        totalCases:
          type: number
        criticalGatePassed:
          type:
            - boolean
            - 'null'
        delta:
          anyOf:
            - type: object
              properties:
                value:
                  type: number
                ci:
                  anyOf:
                    - type: array
                      prefixItems:
                        - type: number
                        - type: number
                      items: false
                      minItems: 2
                      maxItems: 2
                    - type: 'null'
                  description: 95% interval on the same scale, or null.
                significant:
                  type: boolean
                improvedCases:
                  type: number
                regressedCases:
                  type: number
              required:
                - value
                - ci
                - significant
                - improvedCases
                - regressedCases
              additionalProperties: {}
            - type: 'null'
        p50LatencyMs:
          type:
            - number
            - 'null'
        costUsd:
          type:
            - number
            - 'null'
        perJudge:
          type: array
          items:
            type: object
            properties:
              judgeId:
                type: string
              passRate:
                type: number
            required:
              - judgeId
              - passRate
            additionalProperties: {}
      required:
        - candidate
        - isReference
        - rank
        - tiedWithinNoise
        - headline
        - passedCases
        - totalCases
        - criticalGatePassed
        - delta
        - p50LatencyMs
        - costUsd
        - perJudge
      additionalProperties: {}
      description: >-
        One candidate's scores. Every number uses the effective verdict
        (override, else the Judge's).
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: >-
            Short error name: `Unauthorized`, `Validation failed`, `Not found`,
            or a stable snake_case code you can match on, such as
            `unknown_query_parameter`, `invalid_parameter`, `payload_too_large`
            or `not_found`.
        message:
          type: string
          description: A plain-English sentence saying what is wrong and how to fix it.
        code:
          type: string
          description: >-
            Stable, machine-readable cause; match on this rather than on `error`
            or `message`. On a 401: `missing_credentials`,
            `malformed_credentials`, `ingest_key_not_allowed` (a write-only
            observability ingest key was used on an endpoint that needs an API
            key), `key_expired` or `invalid_credentials`. Elsewhere, for
            example: `not_found`, `invalid_parameter`,
            `unknown_query_parameter`, `missing_parameter`, `validation_failed`,
            `invalid_json`, `payload_too_large`, `conversation_not_found`,
            `plan_required`.
        hint:
          type: string
          description: >-
            The next step to try: where to find the right id, which parameters
            the endpoint takes, how to upgrade the plan, how to authenticate.
        parameter:
          type: string
          description: 'With `invalid_parameter`: the query parameter that was rejected.'
        unknown:
          type: array
          items:
            type: string
          description: >-
            With `unknown_query_parameter`: the parameters that were sent but
            are not accepted here.
        valid:
          type: array
          items:
            type: string
          description: >-
            With `unknown_query_parameter`: the parameters this endpoint
            accepts.
        details:
          type: object
          additionalProperties: true
  responses:
    ValidationFailed:
      description: >-
        The request body or query string failed validation. `code` says which
        kind (`validation_failed`, `invalid_json`, `invalid_parameter`,
        `unknown_query_parameter`, `missing_parameter`), and an enum filter
        names the allowed values in `valid` (every repeated value is checked,
        e.g. `?status=open&status=zz` is a 400). A `validation_failed` body also
        carries `message` (the first failing fields), `hint` (how to fix it, for
        example that a finding `description` is a TipTap JSON document and not a
        string) and `details` (field name to messages).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: >-
        Missing or invalid API key. The body names the cause in `code` (for
        example `ingest_key_not_allowed` when a write-only ingest key is used
        here) with a `message` and `hint`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: >-
        Resource not found in your organization. Also returned when a path id is
        not a UUID, and `{ "error": "not_found" }` for a path this API does not
        have. The body keeps `error: "Not found"` and adds `code: "not_found"`
        and a `hint`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send `Authorization: Bearer YOUR_API_KEY`. The key resolves to a single
        organization.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.