# Generated by `pnpm generate-openapi` from the Zod contract (app/api/v2/openapi/contract/). Do not edit by hand.
openapi: 3.1.0
info:
  title: Artificial Analysis API
  version: "2.0"
  description: |
    Use the Artificial Analysis dataset inside your own products, research, analysis, and monitoring systems. The API provides structured model metadata, benchmark results, pricing, and performance data across language, image, video, music, and speech.

    ## License and usage

    Use of the API requires attribution across all tiers. When you display or share API data, credit [Artificial Analysis](https://artificialanalysis.ai/) as the source. A visible byline or footer link is sufficient.

    Use of the API is also subject to our [Terms of Use](https://artificialanalysis.ai/docs/legal/Terms-of-Use.pdf) and [Data Platform Terms](https://artificialanalysiscdn.com/legal/ProDataPlatformTerms.pdf). For redistribution rights or bespoke contract terms, [contact the team](https://artificialanalysis.ai/data-api#contact).

    ## Authentication

    All endpoints require an API key in the `x-api-key` header.

    ```
    curl -H "x-api-key: YOUR_API_KEY" https://artificialanalysis.ai/api/v2/language/models
    ```

    Create or copy a key from [API key management](https://artificialanalysis.ai/api-key-management-redirect). For Commercial access, [contact the team](https://artificialanalysis.ai/data-api#contact).

    ## Tiers

    | Tier | Access | Notes |
    | --- | --- | --- |
    | **Free** | The `/free` model-list endpoints — `/api/v2/language/models/free` and the 11 `/api/v2/media/.../models/free` siblings — return a Free-shape response with the public subset of fields | Standard non-`/free` routes are Pro+ and return `403` for Free API keys. Use the `/free` sibling instead |
    | **Pro** | Model-level access to the standard V2 endpoint set documented here, including LLM detail, pricing, richer performance data, and the Pro-shape model-list responses | This is the main paid tier for the new V2 API. Provider-level endpoints and performance over time are Commercial-only and return `403` for Pro API keys |
    | **Commercial** | Everything in Pro, plus provider-level language model data, performance over time (7, 30, and 90 day windows), and expanded data access negotiated on a per-organization basis. Examples include raw provider measurements, hardware data, or other ad-hoc additions | Commercial access is provisioned separately. [Contact the team](https://artificialanalysis.ai/data-api#contact) to discuss scope |

    ## Rate limits

    Rate limits use a fixed 24-hour window. The window does not use a rolling 24-hour period. The first request after the previous window ends starts a new window. The new window ends 24 hours after that request.

    The full quota resets when the window ends. The quota does not reset by hour or by request. For example, if you use 200 requests in one hour, they do not return separately 24 hours later.

    Each API key has a user and an organization. The rate limit applies to a shared scope, not to one API key. The scope covers one user in an organization or the full organization. All API keys in that scope share the quota.

    | Tier | Requests per 24-hour window |
    | --- | --- |
    | Free | 100 |
    | Pro | 500 |
    | Commercial | Custom. [Contact the team](https://artificialanalysis.ai/data-api#contact) |

    Use `X-RateLimit-Reset` as the exact reset time.

    ## Response headers

    Every authenticated response carries:

    - `X-AA-Tier` — the subscription tier that served the request (`free`, `pro`, or `commercial`). Mirrors the `tier` field in the response body.
    - `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` — current rate-limit state.
    - `Retry-After` — included on `429` responses; seconds until the quota resets.

    ## Data conventions

    - Dates use **ISO 8601** format (for example, `2025-06-15` or `2025-06-15T14:30:00.000Z`)
    - Country codes use lowercased **ISO 3166-1 alpha-2** values (for example, `us`, `cn`, `gb`)
    - End-to-end response times assume **500 answer tokens** unless a field name states otherwise
    - Nulls mean "not measured" or "not applicable"; they never mean zero

    ## Intelligence Index versioning

    `artificial_analysis_intelligence_index` is a composite score, and what goes into it evolves. We version the index so you can interpret a score in context.

    Responses report the major.minor version that produced their scores in the `intelligence_index_version` field — treat that field, not this document, as the source of truth for the version a score belongs to. Full composition and version history on the [Intelligence Index methodology page](https://artificialanalysis.ai/methodology/intelligence-benchmarking).

    **How versions change:**

    - **Major version bumps** indicate a substantial change to the index definition or interpretation. Scores are best interpreted within the same major version.
    - **Minor version bumps** indicate methodology changes within the same major version. These may include changes to contributing evaluations, task subsets, graders, scoring/normalization, weightings, anchors, or evaluation refreshes. Scores may or may not change.
    - **Patch version bumps** indicate lower-significance methodology changes of the same kinds — for example upgrading an evaluation's grader or dataset version. Scores may change. They are not reflected in `intelligence_index_version`, which reports major.minor only.

    `artificial_analysis_coding_index` and `artificial_analysis_agentic_index` are always null: Artificial Analysis no longer publishes a Coding Index or an Agentic Index.

    The six Capability Indexes (`artificial_analysis_finance_and_accounting_index`, `artificial_analysis_strategy_and_ops_index`, `artificial_analysis_legal_index`, `artificial_analysis_healthcare_and_medical_index`, `artificial_analysis_engineering_index`, `artificial_analysis_economics_index`) are versioned separately from the Intelligence Index. Each is null for models missing any evaluation it depends on. Composition on the [Capability Indexes methodology page](https://artificialanalysis.ai/methodology/capability-indexes).
servers:
  - url: https://artificialanalysis.ai
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Language Models
    description: Evaluations, pricing, performance, and metadata for language models
  - name: Language Model Providers
    description: |-
      Capabilities, pricing, and performance for language model API providers.

      **Commercial only** — these endpoints require a Commercial API key.
      [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
  - name: Media - Image Arena
    description: AA-Image-T2I v2.1 and AA-Image-Editing v2.1 arena rankings for image generation models
  - name: Media - Video Arena
    description: AA-Video-T2V v2.1, AA-Video-T2V-Silent v2.1, AA-Video-I2V v2.1 and AA-Video-I2V-Silent v2.1 arena rankings for video generation models
  - name: Media - Speech
    description: Speech arena rankings, speech-to-speech data, and speech-to-text model data
  - name: Media - Music
    description: AA-Music-Instrumental v1.1 and AA-Music-Vocal v1.1 arena rankings for music generation models
  - name: Language Model Measurements
    description: |
      Raw measurement-level data for LLM performance benchmarking.

      **Commercial only** — this endpoint requires a Commercial API key with explicit provider-level grants.
      [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
  - name: CritPt Evaluation
    description: |
      Submit code solutions for grading against the CritPt v2 benchmark.

      Unlike the other endpoints in this API, this is **not** a data retrieval endpoint. It is a
      code evaluation service. You submit generated code for specific CritPt problems and receive
      grading results from the CritPt v2 evaluation server.

      The switch to the v2 grader does not change the endpoint or request and response schemas.

      **Access requires approval.** Grading is limited to approved labs and researchers — accounts
      without access receive a `403`. Access remains free. To request access, email
      [critpt@artificialanalysis.ai](mailto:critpt@artificialanalysis.ai) from your institutional
      address, including the email of the account that holds your API key and details of your
      research or development use.

      Use of this endpoint is subject to our [Terms of Use](https://artificialanalysis.ai/docs/legal/Terms-of-Use.pdf) and
      [Data Platform Terms](https://artificialanalysiscdn.com/legal/ProDataPlatformTerms.pdf).

      Rate limited to **10 requests per day** per user. Rate limit headers (`X-RateLimit-Limit`,
      `X-RateLimit-Remaining`, `X-RateLimit-Reset`, `Retry-After`) are included in every response.
paths:
  /api/v2/language/models/free:
    get:
      operationId: getLanguageModelsFree
      summary: Get language models (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/language/models`. Returns the Free-shape language model
        response: the public subset of fields. Includes headline indices (Intelligence, Coding,
        Agentic), the six Capability Indexes, median performance, Performance v3 headline means, and input/output pricing. Excludes Pro-only fields such as the full evaluation set,
        token counts, blended pricing, performance percentiles, time per task and per-workload
        Performance v3 metrics, context window, parameters, modalities, licensing, and provider detail.

        Accepts any valid API key (Free, Pro, or Commercial). Pro and Commercial keys also
        receive the Free-shape body when calling this URL; the `tier` field reflects the
        caller's actual tier.
      tags:
        - Language Models
      parameters:
        - $ref: "#/components/parameters/page"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LLMModelsFreeResponse"
              examples:
                free_tier:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    intelligence_index_version: 5
                    pagination:
                      page: 1
                      page_size: 200
                      total_pages: 2
                      has_more: true
                    data:
                      - id: cd684ea4-b475-4269-b001-d469d06d8a7a
                        name: GLM-5.3 (Max)
                        slug: glm-5-3
                        release_date: 2026-08-18
                        model_creator:
                          id: 67437eb6-7dc1-4e93-befd-22c8b8ec2065
                          name: Z AI
                        evaluations:
                          artificial_analysis_intelligence_index: 31.7
                          artificial_analysis_coding_index: null
                          artificial_analysis_agentic_index: null
                          artificial_analysis_finance_and_accounting_index: 42.1
                          artificial_analysis_strategy_and_ops_index: 47.4
                          artificial_analysis_legal_index: 35.8
                          artificial_analysis_healthcare_and_medical_index: 39.3
                          artificial_analysis_engineering_index: 37.6
                          artificial_analysis_economics_index: 39.3
                        artificial_analysis_intelligence_index_cost:
                          total_cost: 3495.62
                          cost_per_task:
                            total_cost: 5.0093
                        pricing:
                          price_1m_input_tokens: 1.4
                          price_1m_output_tokens: 4.4
                          price_1m_cache_hit_tokens: 0.26
                          price_1m_cache_write_tokens: null
                        performance:
                          median_output_tokens_per_second: 80.07
                          median_time_to_first_token_seconds: 2.22
                          median_time_to_first_answer_token_seconds: 27.19
                          median_end_to_end_response_time_seconds: 33.44
                        performance_v3:
                          mean_output_tokens_per_second: 62.36
                          mean_time_to_first_token_seconds: 3.45
                          mean_time_to_first_answer_token_seconds: 79.11
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/models:
    get:
      operationId: getLanguageModels
      summary: Get all language models
      description: |-
        Returns language model data including evaluations (headline indices, the six Capability
        Indexes, and per-benchmark scores), pricing, and performance metrics.
        Cyber Index scores come with `trusted_access`: `true` marks a security model that is not publicly available and has intentionally fewer safeguards.
        Detail-only fields (evaluation token counts, omniscience/openness breakdowns, providers)
        are available on `/api/v2/language/models/{slug}`.

        **Pro+ only.** Free integrations should use [`/api/v2/language/models/free`](#getLanguageModelsFree) instead.
      tags:
        - Language Models
      parameters:
        - $ref: "#/components/parameters/prompt_type"
        - $ref: "#/components/parameters/page"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/models" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/models",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/models",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LLMModelsResponse"
              examples:
                pro_tier:
                  summary: Pro tier example response
                  value:
                    tier: pro
                    intelligence_index_version: 5
                    pagination:
                      page: 1
                      page_size: 200
                      total_pages: 2
                      has_more: true
                    data:
                      - id: cd684ea4-b475-4269-b001-d469d06d8a7a
                        name: GLM-5.3 (Max)
                        slug: glm-5-3
                        release_date: 2026-08-18
                        model_creator:
                          id: 67437eb6-7dc1-4e93-befd-22c8b8ec2065
                          name: Z AI
                          country: cn
                        reasoning_model: true
                        trusted_access: false
                        evaluations:
                          artificial_analysis_intelligence_index: 31.7
                          artificial_analysis_coding_index: null
                          artificial_analysis_agentic_index: null
                          artificial_analysis_finance_and_accounting_index: 42.1
                          artificial_analysis_strategy_and_ops_index: 47.4
                          artificial_analysis_legal_index: 35.8
                          artificial_analysis_healthcare_and_medical_index: 39.3
                          artificial_analysis_engineering_index: 37.6
                          artificial_analysis_economics_index: 39.3
                          tau2_telecom: null
                          tau_banking: 0.503
                          terminalbench_hard: null
                          terminalbench_v2_1: 0.839
                          terminalbench_v4_0: 0.419
                          terminalbench_science: 0.095
                          aa_briefcase_elo: 1504
                          automationbench_aa: 0.622
                          gdp_pdf: 0.112
                          scicode: 0.59
                          aa_lcr: 0.797
                          aa_omniscience_index: 6.03
                          aa_omniscience_accuracy: 0.323
                          aa_omniscience_non_hallucination_rate: 0.611
                          ifbench: null
                          hle: 0.423
                          gpqa_diamond: 0.917
                          critpt: 0.191
                          hle_diamond: 0.179
                          frontiercode_v1_1: 0.401
                          frontiercode_v2_0: 0.216
                          critpt_v2_hard: 0.335
                          gdpval_aa_elo: 1658
                          gdpval_aa_normalized: 0.579
                          mmmu_pro: null
                          artificial_analysis_openness_index: 33.3
                          artificial_analysis_multilingual_index: null
                          mlcr_overall: 0.172
                          apex_agents_aa: null
                          aa_analyst_agent: 0.388
                          itbench_aa: 0.461
                          harvey_lab_aa_v1_1: 0.003
                          enterprise_ops_gym_aa: 0.364
                          healthbench: 0.545
                          healthbench_professional: 0.528
                          vials_aa: null
                          critpt_v2: 0.574
                          artificial_analysis_cyber_index: 36.4
                          artificial_analysis_cyber_index_refusal_rate: 0
                          cwe_bench_aa: 0.558
                          cwe_bench_aa_refusal_rate: 0
                          deepsecbench_aa: 0.243
                          deepsecbench_aa_refusal_rate: 0
                          cybergym_e2e_aa: 0.29
                          cybergym_e2e_aa_refusal_rate: 0
                        artificial_analysis_intelligence_index_cost:
                          total_cost: 3495.62
                          cost_per_task:
                            total_cost: 5.0093
                            input_cost: 4.4857
                            reasoning_cost: 0.373
                            answer_cost: 0.1505
                          input_cost: 2901.32
                          reasoning_cost: 473.65
                          answer_cost: 120.65
                        artificial_analysis_intelligence_index_token_counts:
                          input_tokens: 10296409355
                          answer_tokens: 27420388
                          output_tokens: 135067089
                          reasoning_tokens: 107646701
                        pricing:
                          price_1m_blended_3_to_1: 2.15
                          price_1m_blended_7_to_2_to_1: 0.902
                          price_1m_input_tokens: 1.4
                          price_1m_output_tokens: 4.4
                          price_1m_cache_hit_tokens: 0.26
                          price_1m_cache_write_tokens: null
                        performance:
                          percentile_05_output_tokens_per_second: 35.32
                          quartile_25_output_tokens_per_second: 62.53
                          median_output_tokens_per_second: 80.07
                          quartile_75_output_tokens_per_second: 100.58
                          percentile_95_output_tokens_per_second: 117.05
                          percentile_05_time_to_first_token_seconds: 1.34
                          quartile_25_time_to_first_token_seconds: 1.83
                          median_time_to_first_token_seconds: 2.22
                          quartile_75_time_to_first_token_seconds: 2.94
                          percentile_95_time_to_first_token_seconds: 5.18
                          median_time_to_first_answer_token_seconds: 27.19
                          median_end_to_end_response_time_seconds: 33.44
                        performance_v3:
                          mean_output_tokens_per_second: 62.36
                          time_per_task_seconds: 1907.94
                          mean_time_to_first_token_seconds: 3.45
                          mean_time_to_first_answer_token_seconds: 79.11
                          workloads:
                            1k:
                              mean_time_to_first_token_seconds: 1.96
                            10k:
                              mean_time_to_first_token_seconds: 2.03
                            100k:
                              mean_time_to_first_token_seconds: 4.9
                            multi_turn:
                              mean_time_to_first_token_seconds: 3.93
                          bucket_date: 2026-10-30
                        context_window_tokens: 1000000
                        parameters:
                          total: 753
                          active: 40
                        modalities:
                          input:
                            text: true
                            image: false
                            video: false
                            speech: false
                          output:
                            text: true
                            image: false
                            video: false
                            speech: false
                        licensing:
                          is_open_weights: true
                        huggingface_url: https://huggingface.co/zai-org/GLM-5.3
                        openrouter_api_id: z-ai/glm-5.3
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/models/{slug}:
    get:
      operationId: getLanguageModelBySlug
      summary: Get a single language model by slug
      description: |-
        Returns data for a single language model identified by its slug.
        Includes all pro tier list fields plus detail-only fields:
        evaluation token counts and omniscience/openness breakdowns.

        Pro and Commercial only. Free tier requests return a `403` subscription error.

        The per-provider breakdown (`providers` array) is **Commercial only** and omitted from
        Pro responses. [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
      tags:
        - Language Models
      parameters:
        - name: slug
          in: path
          required: true
          description: The model slug (e.g. "gemini-3-pro", "claude-opus-4-6", "deepseek-v3").
          schema:
            type: string
        - $ref: "#/components/parameters/prompt_type"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/models/claude-sonnet-4?prompt_type=medium" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/models/claude-sonnet-4",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"prompt_type": "medium"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/models/claude-sonnet-4?prompt_type=medium",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LLMModelItemResponse"
              examples:
                commercial_tier:
                  summary: Commercial tier detail example response (Pro responses omit the `providers` array)
                  value:
                    tier: commercial
                    intelligence_index_version: 5
                    data:
                      id: cd684ea4-b475-4269-b001-d469d06d8a7a
                      name: GLM-5.3 (Max)
                      slug: glm-5-3
                      release_date: 2026-08-18
                      model_creator:
                        id: 67437eb6-7dc1-4e93-befd-22c8b8ec2065
                        name: Z AI
                        country: cn
                      reasoning_model: true
                      trusted_access: false
                      evaluations:
                        artificial_analysis_intelligence_index: 31.7
                        artificial_analysis_coding_index: null
                        artificial_analysis_agentic_index: null
                        artificial_analysis_finance_and_accounting_index: 42.1
                        artificial_analysis_strategy_and_ops_index: 47.4
                        artificial_analysis_legal_index: 35.8
                        artificial_analysis_healthcare_and_medical_index: 39.3
                        artificial_analysis_engineering_index: 37.6
                        artificial_analysis_economics_index: 39.3
                        tau2_telecom: null
                        tau_banking: 0.503
                        terminalbench_hard: null
                        terminalbench_v2_1: 0.839
                        terminalbench_v4_0: 0.419
                        terminalbench_science: 0.095
                        aa_briefcase_elo: 1504
                        automationbench_aa: 0.622
                        gdp_pdf: 0.112
                        scicode: 0.59
                        aa_lcr: 0.797
                        aa_omniscience_index: 6.03
                        aa_omniscience_accuracy: 0.323
                        aa_omniscience_non_hallucination_rate: 0.611
                        ifbench: null
                        hle: 0.423
                        gpqa_diamond: 0.917
                        critpt: 0.191
                        hle_diamond: 0.179
                        frontiercode_v1_1: 0.401
                        frontiercode_v2_0: 0.216
                        critpt_v2_hard: 0.335
                        gdpval_aa_elo: 1658
                        gdpval_aa_normalized: 0.579
                        mmmu_pro: null
                        artificial_analysis_openness_index: 33.3
                        artificial_analysis_multilingual_index: null
                        mlcr_overall: 0.172
                        apex_agents_aa: null
                        aa_analyst_agent: 0.388
                        itbench_aa: 0.461
                        harvey_lab_aa_v1_1: 0.003
                        enterprise_ops_gym_aa: 0.364
                        healthbench: 0.545
                        healthbench_professional: 0.528
                        vials_aa: null
                        critpt_v2: 0.574
                        artificial_analysis_cyber_index: 36.4
                        artificial_analysis_cyber_index_refusal_rate: 0
                        cwe_bench_aa: 0.558
                        cwe_bench_aa_refusal_rate: 0
                        deepsecbench_aa: 0.243
                        deepsecbench_aa_refusal_rate: 0
                        cybergym_e2e_aa: 0.29
                        cybergym_e2e_aa_refusal_rate: 0
                      artificial_analysis_intelligence_index_cost:
                        total_cost: 3495.62
                        cost_per_task:
                          total_cost: 5.0093
                          input_cost: 4.4857
                          reasoning_cost: 0.373
                          answer_cost: 0.1505
                        input_cost: 2901.32
                        reasoning_cost: 473.65
                        answer_cost: 120.65
                      artificial_analysis_intelligence_index_token_counts:
                        input_tokens: 10296409355
                        answer_tokens: 27420388
                        output_tokens: 135067089
                        reasoning_tokens: 107646701
                      pricing:
                        price_1m_blended_3_to_1: 2.15
                        price_1m_blended_7_to_2_to_1: 0.902
                        price_1m_input_tokens: 1.4
                        price_1m_output_tokens: 4.4
                        price_1m_cache_hit_tokens: 0.26
                        price_1m_cache_write_tokens: null
                      performance:
                        percentile_05_output_tokens_per_second: 35.32
                        quartile_25_output_tokens_per_second: 62.53
                        median_output_tokens_per_second: 80.07
                        quartile_75_output_tokens_per_second: 100.58
                        percentile_95_output_tokens_per_second: 117.05
                        percentile_05_time_to_first_token_seconds: 1.34
                        quartile_25_time_to_first_token_seconds: 1.83
                        median_time_to_first_token_seconds: 2.22
                        quartile_75_time_to_first_token_seconds: 2.94
                        percentile_95_time_to_first_token_seconds: 5.18
                        median_time_to_first_answer_token_seconds: 27.19
                        median_end_to_end_response_time_seconds: 33.44
                      performance_v3:
                        mean_output_tokens_per_second: 62.36
                        time_per_task_seconds: 1907.94
                        mean_time_to_first_token_seconds: 3.45
                        mean_time_to_first_answer_token_seconds: 79.11
                        workloads:
                          1k:
                            mean_time_to_first_token_seconds: 1.96
                          10k:
                            mean_time_to_first_token_seconds: 2.03
                          100k:
                            mean_time_to_first_token_seconds: 4.9
                          multi_turn:
                            mean_time_to_first_token_seconds: 3.93
                        bucket_date: 2026-10-30
                      context_window_tokens: 1000000
                      parameters:
                        total: 753
                        active: 40
                      modalities:
                        input:
                          text: true
                          image: false
                          video: false
                          speech: false
                        output:
                          text: true
                          image: false
                          video: false
                          speech: false
                      licensing:
                        is_open_weights: true
                      huggingface_url: https://huggingface.co/zai-org/GLM-5.3
                      openrouter_api_id: z-ai/glm-5.3
                      evaluation_token_counts:
                        hle:
                          input_tokens: 694111
                          answer_tokens: 739298
                          output_tokens: 113978285
                          reasoning_tokens: 113238987
                        aa_lcr:
                          input_tokens: 9731811
                          answer_tokens: 10191
                          output_tokens: 280574
                          reasoning_tokens: 270383
                        gpqa_diamond:
                          input_tokens: 51246
                          answer_tokens: 29939
                          output_tokens: 1406523
                          reasoning_tokens: 1376584
                        tau_banking:
                          input_tokens: 97164948
                          answer_tokens: 246937
                          output_tokens: 832923
                          reasoning_tokens: 585986
                        critpt:
                          input_tokens: 620064
                          answer_tokens: 117126
                          output_tokens: 6996495
                          reasoning_tokens: 6879369
                        gdpval_aa:
                          input_tokens: 1388705752
                          answer_tokens: 10535856
                          output_tokens: 20772998
                          reasoning_tokens: 10237142
                        scicode:
                          input_tokens: 1020664
                          answer_tokens: 201454
                          output_tokens: 5044211
                          reasoning_tokens: 4842757
                        aa_omniscience:
                          input_tokens: 377753
                          answer_tokens: 253325
                          output_tokens: 13870355
                          reasoning_tokens: 13617030
                        terminalbench_v2_1:
                          input_tokens: 136692446
                          answer_tokens: 853063
                          output_tokens: 3551188
                          reasoning_tokens: 2698125
                        terminalbench_v4_0:
                          input_tokens: 1717065779
                          answer_tokens: 3081614
                          output_tokens: 12841347
                          reasoning_tokens: 9759733
                        terminalbench_science:
                          input_tokens: 3508627450
                          answer_tokens: 4943227
                          output_tokens: 18744947
                          reasoning_tokens: 13801720
                        aa_briefcase:
                          input_tokens: 1627614045
                          answer_tokens: 7274345
                          output_tokens: 12406503
                          reasoning_tokens: 5132158
                        automationbench_aa:
                          input_tokens: 656301228
                          answer_tokens: 6546304
                          output_tokens: 18224087
                          reasoning_tokens: 11677783
                        gdp_pdf:
                          input_tokens: 3452755
                          answer_tokens: 162643
                          output_tokens: 2841710
                          reasoning_tokens: 2679067
                        hle_diamond:
                          input_tokens: 266504
                          answer_tokens: 242177
                          output_tokens: 35780559
                          reasoning_tokens: 35538382
                        frontiercode_v1_1:
                          input_tokens: 1419067666
                          answer_tokens: 2492536
                          output_tokens: 8344831
                          reasoning_tokens: 5852295
                        frontiercode_v2_0:
                          input_tokens: 2683783478
                          answer_tokens: 4363236
                          output_tokens: 13978362
                          reasoning_tokens: 9615126
                        critpt_v2_hard:
                          input_tokens: 98920363
                          answer_tokens: 553517
                          output_tokens: 6379219
                          reasoning_tokens: 5825702
                        aa_analyst_agent:
                          input_tokens: 109474452
                          answer_tokens: 575076
                          output_tokens: 3058277
                          reasoning_tokens: 2483201
                        itbench_aa:
                          input_tokens: 259691777
                          answer_tokens: 817281
                          output_tokens: 2792944
                          reasoning_tokens: 1975663
                        harvey_lab_aa_v1_1:
                          input_tokens: 1691988614
                          answer_tokens: 12265548
                          output_tokens: 16553951
                          reasoning_tokens: 4288403
                        enterprise_ops_gym_aa:
                          input_tokens: 1293941888
                          answer_tokens: 3219466
                          output_tokens: 52924711
                          reasoning_tokens: 49705245
                        healthbench:
                          input_tokens: 825238
                          answer_tokens: 2508082
                          output_tokens: 13903947
                          reasoning_tokens: 11395865
                        healthbench_professional:
                          input_tokens: 305622
                          answer_tokens: 584230
                          output_tokens: 3758230
                          reasoning_tokens: 3174000
                        critpt_v2:
                          input_tokens: 139272171
                          answer_tokens: 916572
                          output_tokens: 9868665
                          reasoning_tokens: 8952093
                      aa_omniscience_breakdown:
                        total:
                          accuracy: 0.323
                          omniscience: 6.03
                          hallucination_rate: 0.389
                        law:
                          accuracy: 0.153
                          omniscience: -6.89
                          hallucination_rate: 0.262
                        health:
                          accuracy: 0.247
                          omniscience: -9.78
                          hallucination_rate: 0.457
                        business:
                          accuracy: 0.236
                          omniscience: 5.11
                          hallucination_rate: 0.241
                        humanities_and_social_sciences:
                          accuracy: 0.344
                          omniscience: 7.33
                          hallucination_rate: 0.414
                        science_engineering_and_mathematics:
                          accuracy: 0.377
                          omniscience: 15
                          hallucination_rate: 0.364
                        software_engineering:
                          accuracy: 0.505
                          omniscience: 18.33
                          hallucination_rate: 0.65
                      artificial_analysis_openness_index_breakdown:
                        weights_access: 3
                        weights_license: 2
                        data_pretrain_access: 0
                        data_pretrain_license: 0
                        data_posttrain_access: 0
                        data_posttrain_license: 0
                        methodology_license: 0
                        methodology_disclosure: 1
                        artificial_analysis_openness_index: 33.3
                      providers:
                        - id: b08f179e-4a69-4f35-b350-8f7144a8b7c8
                          name: Novita
                          slug: novita
                          endpoint_label: null
                          pricing:
                            price_1m_blended_3_to_1: 2.15
                            price_1m_blended_7_to_2_to_1: 0.902
                            price_1m_input_tokens: 1.4
                            price_1m_output_tokens: 4.4
                            price_1m_cache_hit_tokens: 0.26
                            price_1m_cache_write_tokens: null
                          performance:
                            percentile_05_output_tokens_per_second: 79.92
                            quartile_25_output_tokens_per_second: 107.88
                            median_output_tokens_per_second: 118.3
                            quartile_75_output_tokens_per_second: 136.1
                            percentile_95_output_tokens_per_second: 197.2
                            percentile_05_time_to_first_token_seconds: 1.59
                            quartile_25_time_to_first_token_seconds: 1.91
                            median_time_to_first_token_seconds: 2.3
                            quartile_75_time_to_first_token_seconds: 3.49
                            percentile_95_time_to_first_token_seconds: 4.51
                            median_time_to_first_answer_token_seconds: 19.2
                            median_end_to_end_response_time_seconds: 23.43
                          performance_v3:
                            mean_output_tokens_per_second: 98.83
                            mean_time_to_first_token_seconds: 2.91
                            mean_time_to_first_answer_token_seconds: 57.53
                            endpoint_error_rate: 0
                            workloads:
                              1k:
                                mean_output_tokens_per_second: 120.09
                                mean_time_to_first_token_seconds: 1.48
                              10k:
                                mean_output_tokens_per_second: 128.5
                                mean_time_to_first_token_seconds: 2.38
                              100k:
                                mean_output_tokens_per_second: 85.74
                                mean_time_to_first_token_seconds: 7.07
                              multi_turn:
                                mean_output_tokens_per_second: 86.21
                                mean_time_to_first_token_seconds: 2.17
                            bucket_date: 2026-10-30
                          context_window_tokens: 1000000
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/models/{slug}/performance:
    get:
      operationId: getLanguageModelPerformanceOverTime
      summary: Get performance over time for a single model
      description: |-
        Returns a time series of performance metrics for the specified model, broken down by API provider.
        Each provider endpoint that serves this model has its own data points within the requested window.

        - `series_v3`: Performance v3 for each period: end-to-end output speed, time to first token,
          time to first answer token and endpoint error rate, as means over the workloads measured
          ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Data starts on September 15, 2026.
        - `series`: the older median metrics. Every metric returns `null` from December 10, 2026.
          See [Deprecations](https://artificialanalysis.ai/data-api/docs#deprecations).

        Use `window` to control how far back the data goes and `interval` to control the granularity
        (e.g. `window=90d&interval=weekly` returns ~13 weekly data points per provider).

        **Commercial only.** Free and Pro tier requests return a `403` subscription error.
        [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
      tags:
        - Language Models
      parameters:
        - name: slug
          in: path
          required: true
          description: The unique identifier for the model (e.g. `claude-sonnet-4`). Use the `/models` endpoint to discover available slugs.
          schema:
            type: string
        - name: window
          in: query
          description: Lookback period from today. Maximum 90 days for single-model endpoint.
          schema:
            type: string
            enum:
              - 7d
              - 30d
              - 90d
            default: 90d
        - $ref: "#/components/parameters/interval"
        - $ref: "#/components/parameters/prompt_type"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/models/claude-sonnet-4/performance?window=90d&interval=weekly" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/models/claude-sonnet-4/performance",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"window": "90d", "interval": "weekly"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/models/claude-sonnet-4/performance?window=90d&interval=weekly",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ModelPerformanceOverTimeResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/CommercialAccessRequired"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/providers:
    get:
      operationId: getLanguageProviders
      summary: Get all language model API providers
      description: |-
        Returns data for all API providers including the models they offer,
        pricing, and median performance metrics.

        **Commercial only.** Free and Pro tier requests return a `403` subscription error.
        [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
      tags:
        - Language Model Providers
      parameters:
        - $ref: "#/components/parameters/page"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/providers" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/providers",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/providers",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LLMProvidersResponse"
              examples:
                commercial_tier:
                  summary: Commercial tier example response
                  value:
                    tier: commercial
                    pagination:
                      page: 1
                      page_size: 200
                      total_pages: 1
                      has_more: false
                    data:
                      - id: b08f179e-4a69-4f35-b350-8f7144a8b7c8
                        name: Novita
                        slug: novita
                        country: sg
                        models:
                          - id: cd684ea4-b475-4269-b001-d469d06d8a7a
                            name: GLM-5.3 (Max)
                            slug: glm-5-3
                            endpoint_label: null
                            pricing:
                              price_1m_blended_3_to_1: 2.15
                              price_1m_blended_7_to_2_to_1: 0.902
                              price_1m_input_tokens: 1.4
                              price_1m_output_tokens: 4.4
                              price_1m_cache_hit_tokens: 0.26
                              price_1m_cache_write_tokens: null
                            performance:
                              median_output_tokens_per_second: 113.67
                              median_time_to_first_token_seconds: 1.97
                              median_time_to_first_answer_token_seconds: 19.56
                              median_end_to_end_response_time_seconds: 23.96
                            performance_v3:
                              mean_output_tokens_per_second: 98.83
                              mean_time_to_first_token_seconds: 2.91
                              mean_time_to_first_answer_token_seconds: 57.53
                              endpoint_error_rate: 0
                              bucket_date: 2026-10-30
                            context_window_tokens: 1000000
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/CommercialAccessRequired"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/providers/{slug}:
    get:
      operationId: getLanguageProviderBySlug
      summary: Get a single language model provider by slug
      description: |-
        Returns data for a single API provider identified by its slug.
        Includes all fields from the providers list plus full performance
        percentile and quartile data for each model.

        **Commercial only.** Free and Pro tier requests return a `403` subscription error.
        [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
      tags:
        - Language Model Providers
      parameters:
        - name: slug
          in: path
          required: true
          description: The provider slug (e.g. "openai", "fireworks").
          schema:
            type: string
        - $ref: "#/components/parameters/prompt_type"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/providers/fireworks?prompt_type=medium" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/providers/fireworks",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"prompt_type": "medium"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/providers/fireworks?prompt_type=medium",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LLMProviderItemResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/CommercialAccessRequired"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/providers/{slug}/performance:
    get:
      operationId: getLanguageProviderPerformanceOverTime
      summary: Get performance over time for a single provider
      description: |-
        Returns performance time series for each model offered by the specified provider,
        looking back from today by the specified window.

        - `series_v3`: Performance v3 for each period: end-to-end output speed, time to first token,
          time to first answer token and endpoint error rate, as means over the workloads measured
          ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Data starts on September 15, 2026.
        - `series`: the older median metrics. Every metric returns `null` from December 10, 2026.
          See [Deprecations](https://artificialanalysis.ai/data-api/docs#deprecations).

        This is the inverse of the model performance endpoint — here you pick a provider and see
        how each of their models has performed over time.

        **Commercial only.** Free and Pro tier requests return a `403` subscription error.
        [Contact us](https://artificialanalysis.ai/data-api#contact) to discuss Commercial access.
      tags:
        - Language Model Providers
      parameters:
        - name: slug
          in: path
          required: true
          description: The unique identifier for the provider (e.g. `anthropic`). Use the `/providers` endpoint to discover available slugs.
          schema:
            type: string
        - $ref: "#/components/parameters/window"
        - $ref: "#/components/parameters/interval"
        - $ref: "#/components/parameters/prompt_type"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/providers/anthropic/performance?window=90d&interval=weekly" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/providers/anthropic/performance",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"window": "90d", "interval": "weekly"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/providers/anthropic/performance?window=90d&interval=weekly",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProviderPerformanceOverTimeResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/CommercialAccessRequired"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/language/providers/{slug}/measurements:
    get:
      operationId: getLanguageProviderMeasurements
      summary: Get raw measurements for a provider
      description: |-
        Returns measurement records for the specified provider, grouped by model.

        - `measurements_v3`: one record per Performance v3 run and workload, with median output speed,
          time to first token, time to first answer token and end-to-end time, plus sample counts.
        - `measurements`: the older per-request records. Every metric returns `null` from December 10, 2026.
          See [Deprecations](https://artificialanalysis.ai/data-api/docs#deprecations).

        **Commercial tier only.** Your API key must have explicit grants for the requested provider.
        If you are interested in accessing this endpoint, please [contact us](https://artificialanalysis.ai/data-api#contact)
        to discuss Commercial access.
      tags:
        - Language Model Measurements
      parameters:
        - name: slug
          in: path
          required: true
          description: The unique identifier for the provider (e.g. `anthropic`). Your Commercial API key must have grants for this provider.
          schema:
            type: string
        - $ref: "#/components/parameters/prompt_type"
        - name: start_date
          in: query
          description: |-
            Only return measurements recorded on or after this date (YYYY-MM-DD).
            Defaults to one month ago if omitted; dates earlier than one month ago are clamped to one month ago.
          schema:
            type: string
            format: date
            example: 2025-01-01
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/language/providers/anthropic/measurements?prompt_type=medium" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/language/providers/anthropic/measurements",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"prompt_type": "medium"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/language/providers/anthropic/measurements?prompt_type=medium",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeasurementsResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/CommercialAccessRequired"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-image/models/free:
    get:
      operationId: getTextToImageArenaFree
      summary: Get AA-Image-T2I v2.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/text-to-image/models`. Returns the Free-shape
        arena response — model identity plus Elo and CI only. Accepts any valid API key
        (Free, Pro, or Commercial); Pro and Commercial keys also receive the Free-shape
        body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Image Arena
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-image/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-image/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-image/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: a1ee4d6f-d136-434b-bb1d-066fe5f9bf6f
                        name: GPT Image 1.5 (high)
                        slug: openai-gpt_image-1-5
                        model_creator:
                          id: e67e56e3-15cd-43db-b679-da4660a69f41
                          name: OpenAI
                        elo: 1266
                        ci_95: 11
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-image/models:
    get:
      operationId: getTextToImageArena
      summary: Get AA-Image-T2I v2.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Image-T2I v2.1, the text-to-image benchmark. Each model includes identity, Elo and CI, plus rank, samples, pricing, release date, open_weights_url, and optional category breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/text-to-image/models/free`](#getTextToImageArenaFree) instead.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Image Arena
      parameters:
        - $ref: "#/components/parameters/include_categories"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-image/models?include_categories=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-image/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_categories": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-image/models?include_categories=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageArenaResponse"
              examples:
                pro:
                  summary: Pro response with categories
                  value:
                    tier: pro
                    data:
                      - id: a1ee4d6f-d136-434b-bb1d-066fe5f9bf6f
                        name: GPT Image 1.5 (high)
                        slug: openai-gpt_image-1-5
                        model_creator:
                          id: e67e56e3-15cd-43db-b679-da4660a69f41
                          name: OpenAI
                        elo: 1266
                        ci_95: 11
                        rank: 1
                        samples: 4650
                        release_date: 2025-12-16
                        price_per_1k_images: 133
                        open_weights_url: null
                        categories:
                          - label: Architecture & Real Estate
                            group: use_case
                            elo: 1273
                            ci_95: 18
                            samples: 1719
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/image-editing/models/free:
    get:
      operationId: getImageEditingArenaFree
      summary: Get AA-Image-Editing v2.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/image-editing/models`. Returns the Free-shape
        arena response — model identity plus Elo and CI only. Accepts any valid API key
        (Free, Pro, or Commercial); Pro and Commercial keys also receive the Free-shape
        body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Image Arena
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/image-editing/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/image-editing/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/image-editing/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: ae424391-721f-4df7-bf24-a8bef3c4c46c
                        name: Riverflow 2.0
                        slug: sourceful_riverflow-2
                        model_creator:
                          id: 71724fa8-622e-455f-aaa2-ef3c5a067f8b
                          name: Sourceful
                        elo: 1283
                        ci_95: 9
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/image-editing/models:
    get:
      operationId: getImageEditingArena
      summary: Get AA-Image-Editing v2.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Image-Editing v2.1, the image editing benchmark. Each model includes identity, Elo and CI, plus rank, samples, pricing, release date, open_weights_url, and optional category breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/image-editing/models/free`](#getImageEditingArenaFree) instead.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Image Arena
      parameters:
        - $ref: "#/components/parameters/include_categories"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/image-editing/models?include_categories=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/image-editing/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_categories": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/image-editing/models?include_categories=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageArenaResponse"
              examples:
                pro:
                  summary: Pro response with categories
                  value:
                    tier: pro
                    data:
                      - id: ae424391-721f-4df7-bf24-a8bef3c4c46c
                        name: Riverflow 2.0
                        slug: sourceful_riverflow-2
                        model_creator:
                          id: 71724fa8-622e-455f-aaa2-ef3c5a067f8b
                          name: Sourceful
                        elo: 1283
                        ci_95: 9
                        rank: 1
                        samples: 4650
                        release_date: 2025-12-16
                        price_per_1k_images: 133
                        open_weights_url: null
                        categories:
                          - label: Identity Preserving Edit
                            group: editing_action
                            elo: 1273
                            ci_95: 18
                            samples: 1719
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-video/models/free:
    get:
      operationId: getTextToVideoArenaFree
      summary: Get AA-Video-T2V-Silent v2.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/text-to-video/models`. Returns the Free-shape
        arena response — model identity plus Elo and CI only. Accepts any valid API key
        (Free, Pro, or Commercial); Pro and Commercial keys also receive the Free-shape
        body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-video/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-video/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-video/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 36db1f4d-a9f6-49d1-a74d-06bddbf2fe4f
                        name: Dreamina Seedance 2.0 720p
                        slug: seedance-2-0
                        model_creator:
                          id: 2354746c-4775-4a06-b64d-0ba4137785b8
                          name: ByteDance Seed
                        elo: 1269
                        ci_95: 8
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-video/models:
    get:
      operationId: getTextToVideoArena
      summary: Get AA-Video-T2V-Silent v2.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Video-T2V-Silent v2.1, the text-to-video benchmark without audio. Each model includes identity, Elo and CI, plus rank, samples, pricing, release date, open_weights_url, and optional category breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/text-to-video/models/free`](#getTextToVideoArenaFree) instead.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      parameters:
        - $ref: "#/components/parameters/include_categories"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-video/models?include_categories=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-video/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_categories": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-video/models?include_categories=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaResponse"
              examples:
                pro_tier:
                  summary: Pro tier response with categories
                  value:
                    tier: pro
                    data:
                      - id: 36db1f4d-a9f6-49d1-a74d-06bddbf2fe4f
                        name: Dreamina Seedance 2.0 720p
                        slug: seedance-2-0
                        model_creator:
                          id: 2354746c-4775-4a06-b64d-0ba4137785b8
                          name: ByteDance Seed
                        elo: 1269
                        ci_95: 8
                        rank: 1
                        samples: 4271
                        release_date: 2025-06-01
                        price_per_minute: 0.45
                        open_weights_url: null
                        categories:
                          - label: Camera Control
                            group: capability
                            elo: 1284
                            ci_95: 19
                            samples: 812
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/image-to-video/models/free:
    get:
      operationId: getImageToVideoArenaFree
      summary: Get AA-Video-I2V-Silent v2.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/image-to-video/models`. Returns the Free-shape
        arena response — model identity plus Elo and CI only. Accepts any valid API key
        (Free, Pro, or Commercial); Pro and Commercial keys also receive the Free-shape
        body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/image-to-video/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/image-to-video/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/image-to-video/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 61270a9b-9d2e-4875-810f-e81508bc5504
                        name: Kling 2.1 Master
                        slug: kling-2-1-master
                        model_creator:
                          id: 62cc833b-f55a-4489-bcae-54806d4b04ff
                          name: Kuaishou KlingAI
                        elo: 1184
                        ci_95: 10
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/image-to-video/models:
    get:
      operationId: getImageToVideoArena
      summary: Get AA-Video-I2V-Silent v2.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Video-I2V-Silent v2.1, the image-to-video benchmark without audio. Each model includes identity, Elo and CI, plus rank, samples, pricing, release date, open_weights_url, and optional category breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/image-to-video/models/free`](#getImageToVideoArenaFree) instead.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      parameters:
        - $ref: "#/components/parameters/include_categories"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/image-to-video/models?include_categories=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/image-to-video/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_categories": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/image-to-video/models?include_categories=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaResponse"
              examples:
                pro_tier:
                  summary: Pro tier response with categories
                  value:
                    tier: pro
                    data:
                      - id: 61270a9b-9d2e-4875-810f-e81508bc5504
                        name: Kling 2.1 Master
                        slug: kling-2-1-master
                        model_creator:
                          id: 62cc833b-f55a-4489-bcae-54806d4b04ff
                          name: Kuaishou KlingAI
                        elo: 1184
                        ci_95: 10
                        rank: 1
                        samples: 1890
                        release_date: 2025-03-27
                        price_per_minute: 0.5
                        open_weights_url: null
                        categories:
                          - label: Photorealistic
                            group: style
                            elo: 1196
                            ci_95: 21
                            samples: 354
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-video-audio/models/free:
    get:
      operationId: getTextToVideoAudioArenaFree
      summary: Get AA-Video-T2V v2.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/text-to-video-audio/models`. Returns the
        Free-shape arena response — model identity plus Elo and CI only. Accepts any
        valid API key (Free, Pro, or Commercial); Pro and Commercial keys also receive
        the Free-shape body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-video-audio/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-video-audio/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-video-audio/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 5ad8e0d8-d9bf-4a55-904a-f98e7a7a4b2d
                        name: Veo 3 Fast
                        slug: veo-3-fast
                        model_creator:
                          id: ad0d7c6b-6b44-458a-a95f-9d0cb3d8f8e2
                          name: Google
                        elo: 1221
                        ci_95: 14
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-video-audio/models:
    get:
      operationId: getTextToVideoAudioArena
      summary: Get AA-Video-T2V v2.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Video-T2V v2.1, the text-to-video benchmark for models that generate video with audio output. Each model includes identity, Elo and CI, plus rank, samples, pricing, release date, open_weights_url, and optional category breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/text-to-video-audio/models/free`](#getTextToVideoAudioArenaFree) instead.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      parameters:
        - $ref: "#/components/parameters/include_categories"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-video-audio/models?include_categories=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-video-audio/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_categories": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-video-audio/models?include_categories=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaResponse"
              examples:
                pro_tier:
                  summary: Pro tier response with categories
                  value:
                    tier: pro
                    data:
                      - id: 5ad8e0d8-d9bf-4a55-904a-f98e7a7a4b2d
                        name: Veo 3 Fast
                        slug: veo-3-fast
                        model_creator:
                          id: ad0d7c6b-6b44-458a-a95f-9d0cb3d8f8e2
                          name: Google
                        elo: 1221
                        ci_95: 14
                        rank: 1
                        samples: 2334
                        release_date: 2025-05-20
                        price_per_minute: 0.75
                        open_weights_url: null
                        categories:
                          - label: Audio Synchronization
                            group: capability
                            elo: 1237
                            ci_95: 27
                            samples: 401
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/image-to-video-audio/models/free:
    get:
      operationId: getImageToVideoAudioArenaFree
      summary: Get AA-Video-I2V v2.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/image-to-video-audio/models`. Returns the
        Free-shape arena response — model identity plus Elo and CI only. Accepts any
        valid API key (Free, Pro, or Commercial); Pro and Commercial keys also receive
        the Free-shape body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/image-to-video-audio/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/image-to-video-audio/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/image-to-video-audio/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 8b7cdcab-6f22-4d95-8d0f-f09db1d2233d
                        name: PixVerse V4.5 Audio
                        slug: pixverse-v4-5-audio
                        model_creator:
                          id: 1cb39f34-a0b6-4ca8-82fd-fec0e068eb7a
                          name: PixVerse
                        elo: 1163
                        ci_95: 17
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/image-to-video-audio/models:
    get:
      operationId: getImageToVideoAudioArena
      summary: Get AA-Video-I2V v2.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Video-I2V v2.1, the image-to-video benchmark for models that generate video with audio output. Each model includes identity, Elo and CI, plus rank, samples, pricing, release date, open_weights_url, and optional category breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/image-to-video-audio/models/free`](#getImageToVideoAudioArenaFree) instead.

        Only models that hold a leaderboard rank are returned: current models with at least 500 arena appearances. Models below the threshold and superseded versions are omitted rather than returned with a null rank.
      tags:
        - Media - Video Arena
      parameters:
        - $ref: "#/components/parameters/include_categories"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/image-to-video-audio/models?include_categories=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/image-to-video-audio/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_categories": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/image-to-video-audio/models?include_categories=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoArenaResponse"
              examples:
                pro_tier:
                  summary: Pro tier response with categories
                  value:
                    tier: pro
                    data:
                      - id: 8b7cdcab-6f22-4d95-8d0f-f09db1d2233d
                        name: PixVerse V4.5 Audio
                        slug: pixverse-v4-5-audio
                        model_creator:
                          id: 1cb39f34-a0b6-4ca8-82fd-fec0e068eb7a
                          name: PixVerse
                        elo: 1163
                        ci_95: 17
                        rank: 1
                        samples: 1487
                        release_date: 2025-02-14
                        price_per_minute: 0.6
                        open_weights_url: null
                        categories:
                          - label: Photorealistic
                            group: style
                            elo: 1178
                            ci_95: 34
                            samples: 188
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-speech/models/free:
    get:
      operationId: getTextToSpeechArenaFree
      summary: Get text-to-speech arena rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/text-to-speech/models`. Returns the Free-shape
        arena response — model identity plus Elo and CI only. Accepts any valid API key
        (Free, Pro, or Commercial); Pro and Commercial keys also receive the Free-shape
        body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.
      tags:
        - Media - Speech
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-speech/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-speech/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-speech/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TextToSpeechFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 6e0eadf0-3bf9-4424-a563-90292f2a0afd
                        name: Inworld TTS 1.5 Max
                        slug: tts-1-5-max
                        model_creator:
                          id: 3aab6d2e-04b0-43ee-996f-d8ef76ac3232
                          name: Inworld
                        elo: 1240
                        ci_95: 22
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/text-to-speech/models:
    get:
      operationId: getTextToSpeechArena
      summary: Get text-to-speech arena rankings
      description: |-
        Returns arena Elo rankings for text-to-speech models. Each model includes identity, Elo and CI, plus samples, release date, and pricing.

        **Pro+ only.** Free integrations should use [`/api/v2/media/text-to-speech/models/free`](#getTextToSpeechArenaFree) instead.
      tags:
        - Media - Speech
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/text-to-speech/models" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/text-to-speech/models",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/text-to-speech/models",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TextToSpeechResponse"
              examples:
                pro:
                  summary: Pro response
                  value:
                    tier: pro
                    data:
                      - id: 6e0eadf0-3bf9-4424-a563-90292f2a0afd
                        name: Inworld TTS 1.5 Max
                        slug: tts-1-5-max
                        model_creator:
                          id: 3aab6d2e-04b0-43ee-996f-d8ef76ac3232
                          name: Inworld
                        elo: 1240
                        ci_95: 22
                        samples: 1330
                        release_date: 2026-01-21
                        price_per_1m_characters: 10
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/speech-to-speech/models/free:
    get:
      operationId: getSpeechToSpeechFree
      summary: Get speech-to-speech model data (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/speech-to-speech/models`. Returns the Free-shape
        response — model identity plus BBA and FDB scores, with Pro-only per-provider
        pricing and performance data omitted. Accepts any valid API key (Free, Pro, or
        Commercial); Pro and Commercial keys also receive the
        Free-shape body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.
      tags:
        - Media - Speech
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/speech-to-speech/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/speech-to-speech/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/speech-to-speech/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SpeechToSpeechFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: eead24bb-ad0b-45be-b0ab-7b16381c2daf
                        name: GPT 4o audio chatcompletions
                        slug: 4o-audio-chatcompletions
                        model_creator:
                          id: e67e56e3-15cd-43db-b679-da4660a69f41
                          name: OpenAI
                        bba_score: 0.54
                        fdb_score: null
                        tau_voice_score: 0.37
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/speech-to-speech/models:
    get:
      operationId: getSpeechToSpeech
      summary: Get speech-to-speech model data
      description: |-
        Returns data for speech-to-speech models including quality metrics (BBA and FDB scores).
        It also includes per-provider pricing and performance data.

        **Pro+ only.** Free integrations should use [`/api/v2/media/speech-to-speech/models/free`](#getSpeechToSpeechFree) instead.
      tags:
        - Media - Speech
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/speech-to-speech/models" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/speech-to-speech/models",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/speech-to-speech/models",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SpeechToSpeechResponse"
              examples:
                pro_tier:
                  summary: Pro tier response
                  value:
                    tier: pro
                    data:
                      - id: eead24bb-ad0b-45be-b0ab-7b16381c2daf
                        name: GPT 4o audio chatcompletions
                        slug: 4o-audio-chatcompletions
                        model_creator:
                          id: e67e56e3-15cd-43db-b679-da4660a69f41
                          name: OpenAI
                        bba_score: 0.54
                        fdb_score: null
                        tau_voice_score: 0.37
                        providers:
                          - id: 6047c38a-af71-4b47-9d66-d361753f71b4
                            name: OpenAI
                            slug: openai
                            price_per_hour_input: 3.6
                            price_per_hour_output: 14.4
                            time_to_first_audio_seconds: 3.38
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/speech-to-text/models/free:
    get:
      operationId: getSpeechToTextModelsFree
      summary: Get speech-to-text models (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/speech-to-text/models`. Returns the Free-shape
        response — model identity plus the overall WER index, with Pro-only benchmark
        breakdowns, open-weights status, and per-provider data omitted. Accepts any valid
        API key (Free, Pro, or Commercial); Pro and Commercial keys also receive the
        Free-shape body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.
      tags:
        - Media - Speech
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/speech-to-text/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/speech-to-text/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/speech-to-text/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SpeechToTextModelsFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 865b890e-c487-4e78-a404-d1af7d7ee910
                        name: GPT-4o Mini Transcribe, OpenAI
                        model_creator:
                          id: e67e56e3-15cd-43db-b679-da4660a69f41
                          name: OpenAI
                        aa_wer_index: 0.045
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/speech-to-text/models:
    get:
      operationId: getSpeechToTextModels
      summary: Get speech-to-text models
      description: |-
        Returns speech-to-text model data including quality metrics (word error rates).
        Each model includes identity, the overall WER index, benchmark-specific WER breakdowns, open weights status, and per-provider data.

        **Pro+ only.** Free integrations should use [`/api/v2/media/speech-to-text/models/free`](#getSpeechToTextModelsFree) instead.
      tags:
        - Media - Speech
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/speech-to-text/models" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/speech-to-text/models",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/speech-to-text/models",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SpeechToTextModelsResponse"
              examples:
                pro:
                  summary: Pro response
                  value:
                    tier: pro
                    data:
                      - id: 865b890e-c487-4e78-a404-d1af7d7ee910
                        name: GPT-4o Mini Transcribe, OpenAI
                        model_creator:
                          id: e67e56e3-15cd-43db-b679-da4660a69f41
                          name: OpenAI
                        aa_wer_index: 0.045
                        aa_agenttalk: 0.037
                        voxpopuli_cleaned_aa: 0.024
                        earnings_22_cleaned_aa: 0.081
                        open_weights: false
                        providers:
                          - id: 6047c38a-af71-4b47-9d66-d361753f71b4
                            name: OpenAI
                            slug: openai
                            price_per_1k_minutes: 3
                            median_speed_factor: 48.36
                            aa_wer_index: 0.045
                            aa_agenttalk: 0.037
                            voxpopuli_cleaned_aa: 0.024
                            earnings_22_cleaned_aa: 0.081
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/music/instrumental/models/free:
    get:
      operationId: getMusicInstrumentalArenaFree
      summary: Get AA-Music-Instrumental v1.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/music/instrumental/models`. Returns the
        Free-shape arena response — model identity plus Elo and CI only. Accepts any
        valid API key (Free, Pro, or Commercial); Pro and Commercial keys also receive
        the Free-shape body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.
      tags:
        - Media - Music
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/music/instrumental/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/music/instrumental/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/music/instrumental/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MusicArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 1d06bf78-0a16-4fdf-8029-663a694e3470
                        name: Suno V4.5
                        model_creator:
                          id: 30bf1911-2cd9-4bce-a179-009b174196fc
                          name: Suno
                        elo: 1120
                        ci_95: 15
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/music/instrumental/models:
    get:
      operationId: getMusicInstrumentalArena
      summary: Get AA-Music-Instrumental v1.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Music-Instrumental v1.1, the instrumental music generation benchmark. Each model includes identity, Elo and CI, plus samples and optional genre breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/music/instrumental/models/free`](#getMusicInstrumentalArenaFree) instead.
      tags:
        - Media - Music
      parameters:
        - $ref: "#/components/parameters/include_genres"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/music/instrumental/models?include_genres=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/music/instrumental/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_genres": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/music/instrumental/models?include_genres=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MusicArenaResponse"
              examples:
                pro_tier:
                  summary: Pro response with genre breakdowns
                  value:
                    tier: pro
                    data:
                      - id: b5b7f9d3-85d4-47dc-9213-fe09c1ea5da1
                        name: Eleven Music
                        model_creator:
                          id: 8d057760-0a8b-460a-9625-6dd261bb325c
                          name: ElevenLabs
                        elo: 1064
                        ci_95: 14
                        samples: 2396
                        genres:
                          - label: Latin
                            elo: 1063
                            ci_95: 48
                            samples: 214
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/music/with-vocals/models/free:
    get:
      operationId: getMusicWithVocalsArenaFree
      summary: Get AA-Music-Vocal v1.1 rankings (Free tier)
      description: |-
        Free-tier sibling of `/api/v2/media/music/with-vocals/models`. Returns the
        Free-shape arena response — model identity plus Elo and CI only. Accepts any
        valid API key (Free, Pro, or Commercial); Pro and Commercial keys also receive
        the Free-shape body (Pro-only fields omitted; the `tier` field reflects the caller's actual tier) when calling this URL.
      tags:
        - Media - Music
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/music/with-vocals/models/free" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/music/with-vocals/models/free",
                headers={"x-api-key": "YOUR_API_KEY"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/music/with-vocals/models/free",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MusicArenaFreeResponse"
              examples:
                free:
                  summary: Free-shape response with `tier` field
                  value:
                    tier: free
                    data:
                      - id: 1d06bf78-0a16-4fdf-8029-663a694e3470
                        name: Suno V4.5
                        model_creator:
                          id: 30bf1911-2cd9-4bce-a179-009b174196fc
                          name: Suno
                        elo: 1080
                        ci_95: 12
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/media/music/with-vocals/models:
    get:
      operationId: getMusicWithVocalsArena
      summary: Get AA-Music-Vocal v1.1 rankings
      description: |-
        Returns arena Elo rankings for AA-Music-Vocal v1.1, the music generation with vocals benchmark. Each model includes identity, Elo and CI, plus samples and optional genre breakdowns.

        **Pro+ only.** Free integrations should use [`/api/v2/media/music/with-vocals/models/free`](#getMusicWithVocalsArenaFree) instead.
      tags:
        - Media - Music
      parameters:
        - $ref: "#/components/parameters/include_genres"
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl "https://artificialanalysis.ai/api/v2/media/music/with-vocals/models?include_genres=true" \
              -H "x-api-key: YOUR_API_KEY"
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.get(
                "https://artificialanalysis.ai/api/v2/media/music/with-vocals/models",
                headers={"x-api-key": "YOUR_API_KEY"},
                params={"include_genres": "true"}
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/media/music/with-vocals/models?include_genres=true",
              { headers: { "x-api-key": "YOUR_API_KEY" } }
            );
            const data = await response.json();
      responses:
        "200":
          description: Successful response
          headers:
            X-RateLimit-Limit:
              $ref: "#/components/headers/RateLimitLimit"
            X-RateLimit-Remaining:
              $ref: "#/components/headers/RateLimitRemaining"
            X-RateLimit-Reset:
              $ref: "#/components/headers/RateLimitReset"
            X-AA-Tier:
              $ref: "#/components/headers/Tier"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MusicArenaResponse"
              examples:
                pro_tier:
                  summary: Pro response with genre breakdowns
                  value:
                    tier: pro
                    data:
                      - id: 1d06bf78-0a16-4fdf-8029-663a694e3470
                        name: Suno V4.5
                        model_creator:
                          id: 30bf1911-2cd9-4bce-a179-009b174196fc
                          name: Suno
                        elo: 1080
                        ci_95: 12
                        samples: 3428
                        genres:
                          - label: Alternative / Indie
                            elo: 1064
                            ci_95: 46
                            samples: 244
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/RateLimited"
        "500":
          $ref: "#/components/responses/InternalError"
  /api/v2/critpt/evaluate:
    post:
      operationId: evaluateCritPt
      summary: Submit code for CritPt v2 evaluation
      description: |
        Submit generated code solutions for grading against CritPt v2 benchmark problems.

        This endpoint differs from the rest of the API. It is a **code evaluation service**,
        not a data retrieval endpoint. It accepts one or more code submissions and returns
        grading results from the CritPt v2 evaluation server.

        The switch to the v2 grader does not change the endpoint or request and response schemas.

        **Access requires approval.** To protect benchmark integrity and ensure server
        capacity, grading is limited to approved labs and researchers — accounts without
        access receive a `403`. Access remains free. To request access, email
        [critpt@artificialanalysis.ai](mailto:critpt@artificialanalysis.ai) from your
        institutional address, including the email of the account that holds your API key
        and details of your research or development use.

        Use of this endpoint is subject to our [Terms of Use](https://artificialanalysis.ai/docs/legal/Terms-of-Use.pdf) and
        [Data Platform Terms](https://artificialanalysiscdn.com/legal/ProDataPlatformTerms.pdf).

        Rate limited to **10 requests per day** per user. Only successful gradings (`200`)
        count toward the limit — grader error responses (`400`/`422`/`503`/`5xx`) and grader
        timeouts are refunded. Rate limit information is returned via `X-RateLimit-*`
        response headers.
      tags:
        - CritPt Evaluation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - submissions
                - batch_metadata
              properties:
                submissions:
                  type: array
                  description: One or more code submissions to evaluate.
                  items:
                    type: object
                    required:
                      - problem_id
                      - generated_code
                      - model
                      - generation_config
                    properties:
                      problem_id:
                        type: string
                        description: The CritPt problem identifier.
                      generated_code:
                        type: string
                        description: The generated code solution to evaluate.
                      model:
                        type: string
                        description: The model that generated the code.
                      generation_config:
                        type: object
                        description: Configuration used for code generation (passed through to the grader).
                        additionalProperties: true
                      messages:
                        type: array
                        description: Optional conversation messages that produced the code.
                        items:
                          type: object
                          additionalProperties: true
                batch_metadata:
                  type: object
                  description: Metadata about the submission batch (passed through to the grader).
                  additionalProperties: true
            example:
              submissions:
                - problem_id: prob_001
                  generated_code: |-
                    import numpy as np

                    def solve():
                        return np.array([1, 2, 3])
                  model: claude-sonnet-4-20250514
                  generation_config:
                    temperature: 0
                    max_tokens: 4096
              batch_metadata:
                run_id: my-eval-run-001
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |
            curl -X POST "https://artificialanalysis.ai/api/v2/critpt/evaluate" \
              -H "x-api-key: YOUR_API_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                "submissions": [{
                  "problem_id": "prob_001",
                  "generated_code": "import numpy as np\n\ndef solve():\n    return np.array([1, 2, 3])",
                  "model": "claude-sonnet-4-20250514",
                  "generation_config": { "temperature": 0, "max_tokens": 4096 }
                }],
                "batch_metadata": { "run_id": "my-eval-run-001" }
              }'
        - lang: Python
          label: Python
          source: |
            import requests

            response = requests.post(
                "https://artificialanalysis.ai/api/v2/critpt/evaluate",
                headers={"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"},
                json={
                    "submissions": [{
                        "problem_id": "prob_001",
                        "generated_code": "import numpy as np\n\ndef solve():\n    return np.array([1, 2, 3])",
                        "model": "claude-sonnet-4-20250514",
                        "generation_config": {"temperature": 0, "max_tokens": 4096},
                    }],
                    "batch_metadata": {"run_id": "my-eval-run-001"},
                }
            )
            data = response.json()
        - lang: JavaScript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://artificialanalysis.ai/api/v2/critpt/evaluate",
              {
                method: "POST",
                headers: {
                  "x-api-key": "YOUR_API_KEY",
                  "Content-Type": "application/json",
                },
                body: JSON.stringify({
                  submissions: [{
                    problem_id: "prob_001",
                    generated_code: "import numpy as np\n\ndef solve():\n    return np.array([1, 2, 3])",
                    model: "claude-sonnet-4-20250514",
                    generation_config: { temperature: 0, max_tokens: 4096 },
                  }],
                  batch_metadata: { run_id: "my-eval-run-001" },
                }),
              }
            );
            const data = await response.json();
      responses:
        "200":
          description: Evaluation results from the CritPt v2 grading server.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed in the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp at which the current rate limit window resets.
          content:
            application/json:
              schema:
                description: Grading results returned by the CritPt v2 evaluation server. The response shape is determined by the upstream grader.
                type: object
                additionalProperties: true
        "400":
          description: Invalid request body, or the grading server rejected the batch (e.g. submission count mismatch). Not counted toward the rate limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: Invalid body
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          description: The account has not been granted CritPt grading access. Access is approved case by case for labs and researchers — request it via critpt@artificialanalysis.ai. Not counted toward the rate limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: CritPt grading requires approved access. To protect benchmark integrity and ensure server capacity, the grading endpoint is limited to approved labs and researchers; access remains free. To request access, email critpt@artificialanalysis.ai from your institutional address, including the email of the account that holds your API key and details of your research or development use.
        "422":
          description: The grading server rejected the submission payload (e.g. required keys missing). Not counted toward the rate limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: Required keys missing from payload
        "429":
          description: Rate limit exceeded (10 requests per day).
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
            X-RateLimit-Remaining:
              schema:
                type: integer
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp at which the current rate limit window resets.
            Retry-After:
              schema:
                type: integer
              description: Seconds until the rate limit resets.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: Rate limit exceeded
        "500":
          $ref: "#/components/responses/InternalError"
        "503":
          description: The grading server is busy — retry later. Not counted toward the rate limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: Server busy
        "504":
          description: The grading server timed out. Not counted toward the rate limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: CritPt grading server timed out
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Obtain from your Artificial Analysis account.
  parameters:
    prompt_type:
      name: prompt_type
      in: query
      deprecated: true
      description: |
        Ignored from December 10, 2026.

        The prompt type preset used for performance benchmarking.
        Controls how many input tokens and parallel queries are used in latency/throughput measurements.
        Applies to the `performance` fields only; `performance_v3` does not depend on it.

        | prompt_type | input_tokens | parallel_queries |
        | --- | --- | --- |
        | `medium` | 1,000 | 1 |
        | `long` (default) | 10,000 | 1 |
        | `100k` | 100,000 | 1 |
        | `vision_single_image` | 1,000 | 1 |
        | `medium_parallel` | 1,000 | 10 |
      schema:
        type: string
        enum:
          - medium
          - long
          - 100k
          - vision_single_image
          - medium_parallel
        default: long
    window:
      name: window
      in: query
      description: Lookback period from today.
      schema:
        type: string
        enum:
          - 7d
          - 30d
          - 90d
        default: 90d
    interval:
      name: interval
      in: query
      description: |
        Aggregation granularity. Auto-derived from window if omitted
        (7d/30d → daily, 90d → weekly).
      schema:
        type: string
        enum:
          - daily
          - weekly
          - monthly
    page:
      name: page
      in: query
      description: |
        Page number for paginated results (1-indexed). Defaults to 1.
      schema:
        type: integer
        minimum: 1
        maximum: 10000
        default: 1
    include_categories:
      name: include_categories
      in: query
      description: Include per-category Elo breakdowns (Pro tier only).
      schema:
        type: boolean
        default: false
    include_genres:
      name: include_genres
      in: query
      description: Include per-genre Elo breakdowns (Pro tier only).
      schema:
        type: boolean
        default: false
  headers:
    RateLimitLimit:
      schema:
        type: integer
      description: Maximum requests allowed in the current window.
    RateLimitRemaining:
      schema:
        type: integer
      description: Requests remaining in the current window.
    RateLimitReset:
      schema:
        type: integer
      description: Unix timestamp when the fixed 24-hour window ends and the full quota resets.
    Tier:
      schema:
        type: string
        enum:
          - free
          - pro
          - commercial
      description: |
        Subscription tier that served the request. Present on every authenticated response
        (success and error), and mirrors the `tier` field in successful response bodies.
    RetryAfter:
      schema:
        type: integer
      description: Seconds to wait before retrying. Present on `429` responses.
  responses:
    BadRequest:
      description: Invalid query parameters
      headers:
        X-AA-Tier:
          $ref: "#/components/headers/Tier"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: "Invalid prompt_type. Valid options: medium, long, 100k, vision_single_image, medium_parallel"
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: API key is required
    NotFound:
      description: Resource not found
      headers:
        X-AA-Tier:
          $ref: "#/components/headers/Tier"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: "Model not found: nonexistent-slug"
    Forbidden:
      description: Free tier requesting a pro-only feature
      headers:
        X-AA-Tier:
          $ref: "#/components/headers/Tier"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: Language models list requires a Pro subscription
    CommercialAccessRequired:
      description: Commercial access required — your API key does not have grants for this provider.
      headers:
        X-AA-Tier:
          $ref: "#/components/headers/Tier"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: Commercial access required
    RateLimited:
      description: Rate limited
      headers:
        X-RateLimit-Limit:
          $ref: "#/components/headers/RateLimitLimit"
        X-RateLimit-Remaining:
          $ref: "#/components/headers/RateLimitRemaining"
        X-RateLimit-Reset:
          $ref: "#/components/headers/RateLimitReset"
        Retry-After:
          $ref: "#/components/headers/RetryAfter"
        X-AA-Tier:
          $ref: "#/components/headers/Tier"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: Rate limit exceeded
    InternalError:
      description: Server error
      headers:
        X-AA-Tier:
          $ref: "#/components/headers/Tier"
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            error: Internal Server Error
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        details:
          type: object
          description: Additional error details (e.g. validation errors). Only present on some error responses.
      required:
        - error
    PaginationMeta:
      type: object
      properties:
        page:
          type: integer
          description: Current page number (1-indexed).
        page_size:
          type: integer
          description: Number of items per page.
        total_pages:
          type: integer
          description: Total number of pages.
        has_more:
          type: boolean
          description: Whether there are more pages after the current one.
      required:
        - page
        - page_size
        - total_pages
        - has_more
    LLMModelsResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        intelligence_index_version:
          $ref: "#/components/schemas/IntelligenceIndexVersion"
        pagination:
          $ref: "#/components/schemas/PaginationMeta"
        data:
          type: array
          items:
            $ref: "#/components/schemas/ModelDataExternal"
      required:
        - tier
        - intelligence_index_version
        - pagination
        - data
    LLMModelsFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        intelligence_index_version:
          $ref: "#/components/schemas/IntelligenceIndexVersion"
        pagination:
          $ref: "#/components/schemas/PaginationMeta"
        data:
          type: array
          items:
            $ref: "#/components/schemas/FreeModelData"
      required:
        - tier
        - intelligence_index_version
        - pagination
        - data
    LLMModelItemResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        intelligence_index_version:
          $ref: "#/components/schemas/IntelligenceIndexVersion"
        data:
          $ref: "#/components/schemas/ModelDataExternal"
      required:
        - tier
        - intelligence_index_version
        - data
    IntelligenceIndexVersion:
      type: number
      description: Version of the Artificial Analysis Intelligence Index the `artificial_analysis_intelligence_index` scores in this response belong to, as a number with the `v` dropped (e.g. `5` for v5.0). Being a number, it carries major.minor only — patch versions are not reflected here. See the Intelligence Index versioning section for what major, minor, and patch changes mean.
    FreeModelData:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        release_date:
          description: ISO date string (e.g. "2024-05-13").
          type:
            - string
            - "null"
        model_creator:
          oneOf:
            - $ref: "#/components/schemas/FreeModelCreator"
            - type: "null"
        evaluations:
          $ref: "#/components/schemas/FreeEvaluations"
        artificial_analysis_intelligence_index_cost:
          oneOf:
            - $ref: "#/components/schemas/FreeIntelligenceIndexCost"
            - type: "null"
          description: Pre-calculated cost to run the Intelligence Index evaluation. Free tier exposes total cost plus `cost_per_task.total_cost`.
        pricing:
          $ref: "#/components/schemas/FreePricing"
          description: Input and output token pricing. Pro tier adds blended pricing fields.
        performance:
          $ref: "#/components/schemas/FreeModelPerformance"
          description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Median performance metrics across all providers serving this model. Pro tier adds percentiles and quartiles.
        performance_v3:
          oneOf:
            - $ref: "#/components/schemas/FreeModelPerformanceV3"
            - type: "null"
          description: Performance v3 headline means. Pro tier adds time per task, per-workload metrics and the window date. Null when the model has no measurements in the latest window.
      required:
        - id
        - name
        - slug
        - release_date
        - model_creator
        - evaluations
        - artificial_analysis_intelligence_index_cost
        - pricing
        - performance
        - performance_v3
      description: Free-tier shape returned by `/api/v2/language/models/free`. Includes headline indices, median performance, Performance v3 headline means, and input/output pricing. Pro and Commercial keys also receive this shape when calling the `/free` endpoint.
    FreeModelCreator:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    FreeEvaluations:
      type: object
      properties:
        artificial_analysis_intelligence_index:
          description: AA Intelligence Index composite score.
          type:
            - number
            - "null"
        artificial_analysis_coding_index:
          description: "Always null: Artificial Analysis no longer publishes a Coding Index."
          deprecated: true
          type:
            - number
            - "null"
        artificial_analysis_agentic_index:
          description: "Always null: Artificial Analysis no longer publishes an Agentic Index."
          deprecated: true
          type:
            - number
            - "null"
        artificial_analysis_finance_and_accounting_index:
          description: AA Finance & Accounting Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_strategy_and_ops_index:
          description: AA Strategy & Ops Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_legal_index:
          description: AA Legal Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_healthcare_and_medical_index:
          description: AA Healthcare & Medical Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_engineering_index:
          description: AA Engineering Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_economics_index:
          description: AA Economics Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
      required:
        - artificial_analysis_intelligence_index
        - artificial_analysis_coding_index
        - artificial_analysis_agentic_index
        - artificial_analysis_finance_and_accounting_index
        - artificial_analysis_strategy_and_ops_index
        - artificial_analysis_legal_index
        - artificial_analysis_healthcare_and_medical_index
        - artificial_analysis_engineering_index
        - artificial_analysis_economics_index
      description: Composite and capability Artificial Analysis indices. Pro tier adds per-benchmark scores.
    FreeIntelligenceIndexCost:
      type: object
      properties:
        total_cost:
          type: number
          description: Total cost in USD to run the Intelligence Index evaluation.
        cost_per_task:
          oneOf:
            - $ref: "#/components/schemas/FreeIntelligenceIndexCostPerTask"
            - type: "null"
          description: Weighted average cost per Intelligence Index task, rounded to 4 decimal places. Null when token or pricing data is incomplete.
      required:
        - total_cost
        - cost_per_task
    FreeIntelligenceIndexCostPerTask:
      type: object
      properties:
        total_cost:
          type: number
          description: Weighted average cost in USD per Intelligence Index task, across all Intelligence Index evaluations. Rounded to 4 decimal places.
      required:
        - total_cost
    FreePricing:
      type: object
      properties:
        price_1m_input_tokens:
          description: Price per 1M input tokens. Null when pricing data is not available.
          type:
            - number
            - "null"
        price_1m_output_tokens:
          description: Price per 1M output tokens. Null when pricing data is not available.
          type:
            - number
            - "null"
        price_1m_cache_hit_tokens:
          description: Price per 1M cached input (cache hit / read) tokens. Null when the provider does not report cache pricing.
          type:
            - number
            - "null"
        price_1m_cache_write_tokens:
          description: Price per 1M cache write tokens. Null when the provider does not report cache pricing.
          type:
            - number
            - "null"
      required:
        - price_1m_input_tokens
        - price_1m_output_tokens
        - price_1m_cache_hit_tokens
        - price_1m_cache_write_tokens
    FreeModelPerformance:
      type: object
      properties:
        median_output_tokens_per_second:
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - median_output_tokens_per_second
        - median_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_response_time_seconds
      description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Median performance metrics across all providers serving this model. Individual fields are null when no measurements are available for that metric.
      deprecated: true
    FreeModelPerformanceV3:
      type: object
      properties:
        mean_output_tokens_per_second:
          description: Headline end-to-end output speed. The performance endpoint's mean over the workloads measured. For a model without a measured performance endpoint, the median of its endpoints' means.
          type:
            - number
            - "null"
        mean_time_to_first_token_seconds:
          description: The performance endpoint's mean over the workloads measured. For a model without a measured performance endpoint, the median of its endpoints' means.
          type:
            - number
            - "null"
        mean_time_to_first_answer_token_seconds:
          description: The performance endpoint's mean over the workloads measured. For a model without a measured performance endpoint, the median of its endpoints' means.
          type:
            - number
            - "null"
      required:
        - mean_output_tokens_per_second
        - mean_time_to_first_token_seconds
        - mean_time_to_first_answer_token_seconds
      description: "Performance v3 headline means: end-to-end speed averaged over the single-request and multi-turn agentic workloads measured, trailing 5-day window. The metrics of the model's performance endpoint, else the median across its endpoints. Null when there are no measurements in the latest window."
    ModelPerformanceV3:
      type: object
      properties:
        mean_output_tokens_per_second:
          description: Headline end-to-end output speed. The performance endpoint's mean over the workloads measured. For a model without a measured performance endpoint, the median of its endpoints' means.
          type:
            - number
            - "null"
        time_per_task_seconds:
          description: "Seconds per Intelligence Index task: the weighted output tokens per task over the headline speed. Null when token counts or speed are missing."
          type:
            - number
            - "null"
        mean_time_to_first_token_seconds:
          description: The performance endpoint's mean over the workloads measured. For a model without a measured performance endpoint, the median of its endpoints' means.
          type:
            - number
            - "null"
        mean_time_to_first_answer_token_seconds:
          description: The performance endpoint's mean over the workloads measured. For a model without a measured performance endpoint, the median of its endpoints' means.
          type:
            - number
            - "null"
        workloads:
          $ref: "#/components/schemas/PerformanceV3ModelWorkloads"
        bucket_date:
          type: string
          description: Last day of the trailing 5-day window these values cover. ISO date string (e.g. "2026-10-30").
      required:
        - mean_output_tokens_per_second
        - time_per_task_seconds
        - mean_time_to_first_token_seconds
        - mean_time_to_first_answer_token_seconds
        - workloads
        - bucket_date
      description: "Performance v3 block: end-to-end speed averaged over the single-request and multi-turn agentic workloads measured, trailing 5-day window. The metrics of the model's performance endpoint, else the median across its endpoints. Null when there are no measurements in the latest window."
    ProviderModelPerformanceV3:
      type: object
      properties:
        mean_output_tokens_per_second:
          description: Headline end-to-end output speed. Mean over the workloads measured.
          type:
            - number
            - "null"
        mean_time_to_first_token_seconds:
          description: Mean over the workloads measured.
          type:
            - number
            - "null"
        mean_time_to_first_answer_token_seconds:
          description: Mean over the workloads measured.
          type:
            - number
            - "null"
        endpoint_error_rate:
          description: Endpoint error samples over all samples across the workloads measured (0-1). Null when no workload measured an output speed.
          type:
            - number
            - "null"
        workloads:
          $ref: "#/components/schemas/PerformanceV3EndpointWorkloads"
        bucket_date:
          type: string
          description: Last day of the trailing 5-day window these values cover. ISO date string (e.g. "2026-10-30").
      required:
        - mean_output_tokens_per_second
        - mean_time_to_first_token_seconds
        - mean_time_to_first_answer_token_seconds
        - endpoint_error_rate
        - workloads
        - bucket_date
      description: "Performance v3 block for one endpoint: end-to-end speed averaged over the single-request and multi-turn agentic workloads measured, trailing 5-day window. Null when the endpoint has no measurements in the latest window."
    ProviderModelPerformanceV3List:
      type: object
      properties:
        mean_output_tokens_per_second:
          description: Headline end-to-end output speed. Mean over the workloads measured.
          type:
            - number
            - "null"
        mean_time_to_first_token_seconds:
          description: Mean over the workloads measured.
          type:
            - number
            - "null"
        mean_time_to_first_answer_token_seconds:
          description: Mean over the workloads measured.
          type:
            - number
            - "null"
        endpoint_error_rate:
          description: Endpoint error samples over all samples across the workloads measured (0-1). Null when no workload measured an output speed.
          type:
            - number
            - "null"
        bucket_date:
          type: string
          description: Last day of the trailing 5-day window these values cover. ISO date string (e.g. "2026-10-30").
      required:
        - mean_output_tokens_per_second
        - mean_time_to_first_token_seconds
        - mean_time_to_first_answer_token_seconds
        - endpoint_error_rate
        - bucket_date
      description: "Performance v3 headline returned on the providers list endpoint: end-to-end speed averaged over the single-request and multi-turn agentic workloads measured, trailing 5-day window. The provider detail endpoint adds per-workload figures. Null when the endpoint has no measurements in the latest window."
    PerformanceV3EndpointWorkloads:
      type: object
      properties:
        1k:
          $ref: "#/components/schemas/PerformanceV3EndpointWorkload"
        10k:
          $ref: "#/components/schemas/PerformanceV3EndpointWorkload"
        100k:
          $ref: "#/components/schemas/PerformanceV3EndpointWorkload"
        multi_turn:
          $ref: "#/components/schemas/PerformanceV3EndpointWorkload"
      description: "Per-workload figures, as on the website: single requests at three prompt lengths (`1k`, `10k` and `100k` input tokens) and `multi_turn`, the mean of the multi-turn agentic workloads. For an endpoint, each single-request value is the mean of per-run medians over the trailing 5-day window. For a model without a measured performance endpoint, each value is the median across its endpoints. A workload is omitted when it has no measurements in the window."
    PerformanceV3EndpointWorkload:
      type: object
      properties:
        mean_output_tokens_per_second:
          description: "End-to-end output speed: output tokens over the full request time, including time to first token. For `multi_turn`, output tokens over the time the endpoint took to answer its turns, excluding the time tools take to run."
          type:
            - number
            - "null"
        mean_time_to_first_token_seconds:
          description: Seconds to the first token, reasoning or answer. For `multi_turn`, the mean over each session's turns.
          type:
            - number
            - "null"
      required:
        - mean_output_tokens_per_second
        - mean_time_to_first_token_seconds
      description: Metrics for one workload on one endpoint.
    PerformanceV3ModelWorkloads:
      type: object
      properties:
        1k:
          $ref: "#/components/schemas/PerformanceV3ModelWorkload"
        10k:
          $ref: "#/components/schemas/PerformanceV3ModelWorkload"
        100k:
          $ref: "#/components/schemas/PerformanceV3ModelWorkload"
        multi_turn:
          $ref: "#/components/schemas/PerformanceV3ModelWorkload"
      description: "Per-workload figures, as on the website: single requests at three prompt lengths (`1k`, `10k` and `100k` input tokens) and `multi_turn`, the mean of the multi-turn agentic workloads. For an endpoint, each single-request value is the mean of per-run medians over the trailing 5-day window. For a model without a measured performance endpoint, each value is the median across its endpoints. A workload is omitted when it has no measurements in the window."
    PerformanceV3ModelWorkload:
      type: object
      properties:
        mean_time_to_first_token_seconds:
          description: Seconds to the first token, reasoning or answer. For `multi_turn`, the mean over each session's turns.
          type:
            - number
            - "null"
      required:
        - mean_time_to_first_token_seconds
      description: Metrics for one workload on the model's performance endpoint, or the median across its endpoints when it has none.
    ModelDataExternal:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        release_date:
          description: ISO date string (e.g. "2024-05-13").
          type:
            - string
            - "null"
        model_creator:
          oneOf:
            - $ref: "#/components/schemas/ModelCreator"
            - type: "null"
        reasoning_model:
          type: boolean
          description: Pro tier only. Omitted on Free tier.
        trusted_access:
          type: boolean
          description: "True for a model that is not publicly available: a security model with intentionally fewer safeguards, offered only through its creator's trusted-access program. Its Cyber Index scores are not directly comparable with publicly available models. Pro tier only. Omitted on Free tier."
        evaluations:
          $ref: "#/components/schemas/Evaluations"
        artificial_analysis_intelligence_index_cost:
          oneOf:
            - $ref: "#/components/schemas/IntelligenceIndexCost"
            - type: "null"
          description: Pre-calculated cost to run the Intelligence Index evaluation. Free tier includes total_cost and cost_per_task.total_cost; Pro tier adds input_cost, reasoning_cost, answer_cost at both levels.
        artificial_analysis_intelligence_index_token_counts:
          oneOf:
            - $ref: "#/components/schemas/IntelligenceIndexTokenCounts"
            - type: "null"
          description: Pro tier only. Omitted on Free tier.
        pricing:
          $ref: "#/components/schemas/Pricing"
          description: Full pricing object including blended fields. Free tier returns input and output token prices only. See `FreePricing`.
        performance:
          $ref: "#/components/schemas/ModelPerformance"
          description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Full performance object including quartiles and percentiles. Free tier returns medians only. See `FreeModelPerformance`.
        performance_v3:
          oneOf:
            - $ref: "#/components/schemas/ModelPerformanceV3"
            - type: "null"
          description: Full performance v3 block including time per task, per-workload metrics and the window date. Free tier returns the headline means only. See `FreeModelPerformanceV3`. Null when the model has no measurements in the latest window.
        context_window_tokens:
          description: Pro tier only. Omitted on Free tier. Null when not set for the model.
          type:
            - integer
            - "null"
        parameters:
          oneOf:
            - $ref: "#/components/schemas/Parameters"
            - type: "null"
          description: Pro tier only. Omitted on Free tier.
        modalities:
          $ref: "#/components/schemas/Modalities"
          description: Pro tier only. Omitted on Free tier.
        licensing:
          $ref: "#/components/schemas/Licensing"
          description: Pro tier only. Omitted on Free tier.
        huggingface_url:
          description: Pro tier only. Omitted on Free tier. Canonical Hugging Face or model weights URL when available.
          type:
            - string
            - "null"
        openrouter_api_id:
          description: Pro tier only. Omitted on Free tier. OpenRouter API model identifier when available.
          type:
            - string
            - "null"
        evaluation_token_counts:
          oneOf:
            - $ref: "#/components/schemas/EvaluationTokenCounts"
            - type: "null"
          description: Pro tier only. Detail endpoint only (`/api/v2/language/models/{slug}`). Omitted on Free tier and list endpoint.
        aa_omniscience_breakdown:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceBreakdown"
            - type: "null"
          description: Pro tier only. Detail endpoint only (`/api/v2/language/models/{slug}`). Omitted on Free tier and list endpoint.
        artificial_analysis_openness_index_breakdown:
          $ref: "#/components/schemas/OpennessBreakdown"
          description: Pro tier only. Detail endpoint only (`/api/v2/language/models/{slug}`). Omitted on Free tier and list endpoint.
        providers:
          type: array
          items:
            $ref: "#/components/schemas/ModelProviderDataExternal"
          description: Commercial tier only. Detail endpoint only (`/api/v2/language/models/{slug}`). Omitted on Free and Pro tiers and on the list endpoint.
      required:
        - id
        - name
        - slug
        - release_date
        - model_creator
        - evaluations
        - artificial_analysis_intelligence_index_cost
        - performance_v3
    ModelCreator:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        country:
          description: Pro tier only. Omitted on Free tier. ISO 3166-1 alpha-2 country code of the model creator.
          type:
            - string
            - "null"
      required:
        - id
        - name
    Evaluations:
      type: object
      properties:
        artificial_analysis_intelligence_index:
          description: AA Intelligence Index composite score.
          type:
            - number
            - "null"
        artificial_analysis_coding_index:
          description: "Always null: Artificial Analysis no longer publishes a Coding Index."
          deprecated: true
          type:
            - number
            - "null"
        artificial_analysis_agentic_index:
          description: "Always null: Artificial Analysis no longer publishes an Agentic Index."
          deprecated: true
          type:
            - number
            - "null"
        artificial_analysis_finance_and_accounting_index:
          description: AA Finance & Accounting Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_strategy_and_ops_index:
          description: AA Strategy & Ops Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_legal_index:
          description: AA Legal Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_healthcare_and_medical_index:
          description: AA Healthcare & Medical Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_engineering_index:
          description: AA Engineering Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        artificial_analysis_economics_index:
          description: AA Economics Index capability score. Null when the model lacks a required evaluation.
          type:
            - number
            - "null"
        tau2_telecom:
          deprecated: true
          description: τ²-Bench Telecom score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        tau_banking:
          deprecated: true
          description: τ³-Banking score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        terminalbench_hard:
          deprecated: true
          description: Terminal-Bench Hard score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        terminalbench_v2_1:
          deprecated: true
          description: Terminal-Bench 2.1 score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        terminalbench_v4_0:
          description: Terminal-Bench 4.0 score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        terminalbench_science:
          description: Terminal-Bench-Science 0.1 score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        aa_briefcase_elo:
          description: AA-Briefcase v1.1 Elo score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        automationbench_aa:
          description: AutomationBench-AA partial score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        gdp_pdf:
          description: GDP.pdf all-pass score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        scicode:
          description: SciCode score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        aa_lcr:
          description: AA-LCR score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        aa_omniscience_index:
          description: AA-Omniscience Net Score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        aa_omniscience_accuracy:
          description: Aggregate AA-Omniscience accuracy. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        aa_omniscience_non_hallucination_rate:
          description: Aggregate AA-Omniscience non-hallucination score (1 - hallucination_rate). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        ifbench:
          description: IFBench score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        hle:
          description: Humanity's Last Exam score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        gpqa_diamond:
          description: GPQA Diamond score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        critpt:
          description: CritPt score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        hle_diamond:
          description: HLE-Diamond score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        frontiercode_v1_1:
          description: FrontierCode 1.1 score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        frontiercode_v2_0:
          description: FrontierCode-AA 2.0 score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        critpt_v2_hard:
          description: CritPt v2 score on its 40-problem hard subset. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        gdpval_aa_elo:
          description: GDPval raw Elo score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        gdpval_aa_normalized:
          description: GDPval score normalized to a 0-1 scale. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        mmmu_pro:
          description: MMMU-Pro visual reasoning score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        artificial_analysis_openness_index:
          description: Openness Index score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        artificial_analysis_multilingual_index:
          description: Multilingual Index score. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        mlcr_overall:
          description: MLCR-AA (Medical Long Context Reasoning) overall pass rate. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        apex_agents_aa:
          description: "APEX-Agents-AA pass@1 success rate (0-1): share of tasks where the model fully satisfies the grading rubric. Pro tier only. Omitted on Free tier."
          type:
            - number
            - "null"
        aa_analyst_agent:
          description: "AA-AnalystAgent pass^5 score (0-1): share of tasks passed on all five attempts. Pro tier only. Omitted on Free tier."
          type:
            - number
            - "null"
        itbench_aa:
          description: ITBench-AA average precision at full recall on its SRE tasks, Kubernetes incident root-cause analysis (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        harvey_lab_aa_v1_1:
          description: Harvey LAB-AA v1.1 hallucination-gated all-pass rate (0-1). Null when the run has no hallucination check. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        enterprise_ops_gym_aa:
          description: EnterpriseOps-Gym-AA success rate (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        healthbench:
          description: HealthBench length-adjusted score (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        healthbench_professional:
          description: HealthBench Professional length-adjusted score (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        vials_aa:
          description: "VIALS-AA pass^3 score (0-1): share of tasks passed on all three attempts. Pro tier only. Omitted on Free tier."
          type:
            - number
            - "null"
        critpt_v2:
          description: CritPt v2 score on the full 70-problem set (0-1). See `critpt_v2_hard` for the hard subset. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        artificial_analysis_cyber_index:
          description: Artificial Analysis Cyber Index v1 (0-100), the mean of CWE-Bench-AA, DeepsecBench-AA and CyberGym-E2E-AA. Read with `trusted_access`. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        artificial_analysis_cyber_index_refusal_rate:
          description: Mean of the three Cyber Index evaluations' refusal rates (0-1). Null unless all three report one. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        cwe_bench_aa:
          description: CWE-Bench-AA vulnerability patching success, pass@1 (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        cwe_bench_aa_refusal_rate:
          description: Share of CWE-Bench-AA tasks the model or its provider declined on safety grounds, as flagged by the provider's safety systems (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        deepsecbench_aa:
          description: DeepsecBench-AA F2 score (0-1), weighting recall above precision. Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        deepsecbench_aa_refusal_rate:
          description: Share of DeepsecBench-AA tasks the model or its provider declined on safety grounds, as flagged by the provider's safety systems (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        cybergym_e2e_aa:
          description: CyberGym-E2E-AA vulnerability discovery and patching success, pass@1 (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
        cybergym_e2e_aa_refusal_rate:
          description: Share of CyberGym-E2E-AA tasks the model or its provider declined on safety grounds, as flagged by the provider's safety systems (0-1). Pro tier only. Omitted on Free tier.
          type:
            - number
            - "null"
      required:
        - artificial_analysis_intelligence_index
        - artificial_analysis_coding_index
        - artificial_analysis_agentic_index
        - artificial_analysis_finance_and_accounting_index
        - artificial_analysis_strategy_and_ops_index
        - artificial_analysis_legal_index
        - artificial_analysis_healthcare_and_medical_index
        - artificial_analysis_engineering_index
        - artificial_analysis_economics_index
    Pricing:
      type: object
      properties:
        price_1m_blended_3_to_1:
          description: Blended price per 1M tokens (3:1 Input-Output ratio). Null when pricing data is not available.
          type:
            - number
            - "null"
        price_1m_blended_7_to_2_to_1:
          description: Blended price per 1M tokens (7:2:1 Cache-Input-Output ratio). Null when pricing data is not available.
          type:
            - number
            - "null"
        price_1m_input_tokens:
          description: Price per 1M input tokens. Null when pricing data is not available.
          type:
            - number
            - "null"
        price_1m_output_tokens:
          description: Price per 1M output tokens. Null when pricing data is not available.
          type:
            - number
            - "null"
        price_1m_cache_hit_tokens:
          description: Price per 1M cached input (cache hit / read) tokens. Null when the provider does not report cache pricing.
          type:
            - number
            - "null"
        price_1m_cache_write_tokens:
          description: Price per 1M cache write tokens. Null when the provider does not report cache pricing.
          type:
            - number
            - "null"
      required:
        - price_1m_blended_3_to_1
        - price_1m_blended_7_to_2_to_1
        - price_1m_input_tokens
        - price_1m_output_tokens
        - price_1m_cache_hit_tokens
        - price_1m_cache_write_tokens
    ModelPerformance:
      type: object
      properties:
        percentile_05_output_tokens_per_second:
          type:
            - number
            - "null"
        quartile_25_output_tokens_per_second:
          type:
            - number
            - "null"
        median_output_tokens_per_second:
          type:
            - number
            - "null"
        quartile_75_output_tokens_per_second:
          type:
            - number
            - "null"
        percentile_95_output_tokens_per_second:
          type:
            - number
            - "null"
        percentile_05_time_to_first_token_seconds:
          type:
            - number
            - "null"
        quartile_25_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        quartile_75_time_to_first_token_seconds:
          type:
            - number
            - "null"
        percentile_95_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - percentile_05_output_tokens_per_second
        - quartile_25_output_tokens_per_second
        - median_output_tokens_per_second
        - quartile_75_output_tokens_per_second
        - percentile_95_output_tokens_per_second
        - percentile_05_time_to_first_token_seconds
        - quartile_25_time_to_first_token_seconds
        - median_time_to_first_token_seconds
        - quartile_75_time_to_first_token_seconds
        - percentile_95_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_response_time_seconds
      description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Aggregated performance metrics across all providers serving this model. Individual fields are null when no measurements are available for that metric.
      deprecated: true
    Parameters:
      type: object
      properties:
        total:
          type: number
          description: Total model parameters (in billions).
        active:
          description: Active parameters per forward pass (relevant for MoE models).
          type:
            - number
            - "null"
      required:
        - total
        - active
    Modalities:
      type: object
      properties:
        input:
          $ref: "#/components/schemas/ModalitySet"
        output:
          $ref: "#/components/schemas/ModalitySet"
      required:
        - input
        - output
    ModalitySet:
      type: object
      properties:
        text:
          type: boolean
        image:
          type: boolean
        video:
          type: boolean
        speech:
          type: boolean
      required:
        - text
        - image
        - video
        - speech
    Licensing:
      type: object
      properties:
        is_open_weights:
          type: boolean
      required:
        - is_open_weights
    EvalTokenCounts:
      type: object
      properties:
        input_tokens:
          type: number
        answer_tokens:
          type: number
        output_tokens:
          type: number
        reasoning_tokens:
          type: number
      required:
        - input_tokens
        - answer_tokens
        - output_tokens
        - reasoning_tokens
    EvaluationTokenCounts:
      type: object
      properties:
        hle:
          $ref: "#/components/schemas/EvalTokenCounts"
        aa_lcr:
          $ref: "#/components/schemas/EvalTokenCounts"
        gpqa_diamond:
          $ref: "#/components/schemas/EvalTokenCounts"
        tau2_telecom:
          deprecated: true
          $ref: "#/components/schemas/EvalTokenCounts"
        tau_banking:
          deprecated: true
          $ref: "#/components/schemas/EvalTokenCounts"
        critpt:
          $ref: "#/components/schemas/EvalTokenCounts"
        gdpval_aa:
          $ref: "#/components/schemas/EvalTokenCounts"
        ifbench:
          $ref: "#/components/schemas/EvalTokenCounts"
        scicode:
          $ref: "#/components/schemas/EvalTokenCounts"
        mmmu_pro:
          $ref: "#/components/schemas/EvalTokenCounts"
        aa_omniscience:
          $ref: "#/components/schemas/EvalTokenCounts"
        terminalbench_hard:
          deprecated: true
          $ref: "#/components/schemas/EvalTokenCounts"
        terminalbench_v2_1:
          deprecated: true
          $ref: "#/components/schemas/EvalTokenCounts"
        terminalbench_v4_0:
          $ref: "#/components/schemas/EvalTokenCounts"
        terminalbench_science:
          $ref: "#/components/schemas/EvalTokenCounts"
        aa_briefcase:
          $ref: "#/components/schemas/EvalTokenCounts"
        automationbench_aa:
          $ref: "#/components/schemas/EvalTokenCounts"
        gdp_pdf:
          $ref: "#/components/schemas/EvalTokenCounts"
        hle_diamond:
          $ref: "#/components/schemas/EvalTokenCounts"
        frontiercode_v1_1:
          $ref: "#/components/schemas/EvalTokenCounts"
        frontiercode_v2_0:
          $ref: "#/components/schemas/EvalTokenCounts"
        critpt_v2_hard:
          $ref: "#/components/schemas/EvalTokenCounts"
        apex_agents_aa:
          $ref: "#/components/schemas/EvalTokenCounts"
        aa_analyst_agent:
          $ref: "#/components/schemas/EvalTokenCounts"
        itbench_aa:
          $ref: "#/components/schemas/EvalTokenCounts"
        harvey_lab_aa_v1_1:
          $ref: "#/components/schemas/EvalTokenCounts"
        enterprise_ops_gym_aa:
          $ref: "#/components/schemas/EvalTokenCounts"
        healthbench:
          $ref: "#/components/schemas/EvalTokenCounts"
        healthbench_professional:
          $ref: "#/components/schemas/EvalTokenCounts"
        vials_aa:
          $ref: "#/components/schemas/EvalTokenCounts"
        critpt_v2:
          $ref: "#/components/schemas/EvalTokenCounts"
      description: Per-evaluation token counts for published benchmarks.
    IntelligenceIndexCost:
      type: object
      properties:
        total_cost:
          type: number
          description: Total cost in USD to run the Intelligence Index evaluation. Available on all tiers.
        cost_per_task:
          oneOf:
            - $ref: "#/components/schemas/IntelligenceIndexCostPerTask"
            - type: "null"
          description: Weighted average cost per Intelligence Index task, rounded to 4 decimal places. Null when token or pricing data is incomplete.
        input_cost:
          description: Pro tier only. Omitted on Free tier. Null when not measured.
          type:
            - number
            - "null"
        reasoning_cost:
          description: Pro tier only. Omitted on Free tier. Null when not measured.
          type:
            - number
            - "null"
        answer_cost:
          description: Pro tier only. Omitted on Free tier. Null when not measured.
          type:
            - number
            - "null"
      required:
        - total_cost
        - cost_per_task
    IntelligenceIndexCostPerTask:
      type: object
      properties:
        total_cost:
          type: number
          description: Weighted average cost in USD per Intelligence Index task, across all Intelligence Index evaluations. Rounded to 4 decimal places.
        input_cost:
          description: Weighted average input cost in USD per Intelligence Index task. Null when not measured.
          type:
            - number
            - "null"
        reasoning_cost:
          description: Weighted average reasoning-token cost in USD per Intelligence Index task. Null when not measured.
          type:
            - number
            - "null"
        answer_cost:
          description: Weighted average answer-token cost in USD per Intelligence Index task. Null when not measured.
          type:
            - number
            - "null"
      required:
        - total_cost
        - input_cost
        - reasoning_cost
        - answer_cost
    IntelligenceIndexTokenCounts:
      type: object
      properties:
        input_tokens:
          type: integer
        answer_tokens:
          type: integer
        output_tokens:
          type: integer
        reasoning_tokens:
          type: integer
      required:
        - input_tokens
        - answer_tokens
        - output_tokens
        - reasoning_tokens
    OmniscienceDomainBreakdown:
      type: object
      properties:
        accuracy:
          type: number
        omniscience:
          type: number
        hallucination_rate:
          type: number
      required:
        - accuracy
        - omniscience
        - hallucination_rate
    OmniscienceBreakdown:
      type: object
      properties:
        total:
          $ref: "#/components/schemas/OmniscienceDomainBreakdown"
        law:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceDomainBreakdown"
            - type: "null"
        health:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceDomainBreakdown"
            - type: "null"
        business:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceDomainBreakdown"
            - type: "null"
        humanities_and_social_sciences:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceDomainBreakdown"
            - type: "null"
        science_engineering_and_mathematics:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceDomainBreakdown"
            - type: "null"
        software_engineering:
          oneOf:
            - $ref: "#/components/schemas/OmniscienceDomainBreakdown"
            - type: "null"
      required:
        - total
    OpennessBreakdown:
      type: object
      properties:
        weights_access:
          type:
            - number
            - "null"
        weights_license:
          type:
            - number
            - "null"
        data_pretrain_access:
          type:
            - number
            - "null"
        data_pretrain_license:
          type:
            - number
            - "null"
        data_posttrain_access:
          type:
            - number
            - "null"
        data_posttrain_license:
          type:
            - number
            - "null"
        methodology_license:
          type:
            - number
            - "null"
        methodology_disclosure:
          type:
            - number
            - "null"
        artificial_analysis_openness_index:
          type:
            - number
            - "null"
    ModelProviderDataExternal:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        endpoint_label:
          description: Label that distinguishes this endpoint from other endpoints of the same provider and model, e.g. "(FAST)" or "(FP8)". A provider that serves a model through several endpoints has one entry per endpoint. Null when the endpoint has no label.
          type:
            - string
            - "null"
        pricing:
          $ref: "#/components/schemas/Pricing"
        performance:
          $ref: "#/components/schemas/ProviderModelPerformance"
        performance_v3:
          oneOf:
            - $ref: "#/components/schemas/ProviderModelPerformanceV3"
            - type: "null"
          description: Performance v3 block for this endpoint. Null when the endpoint has no measurements in the latest window.
        context_window_tokens:
          description: Null when not set for the (provider, model) pair.
          type:
            - integer
            - "null"
      required:
        - id
        - name
        - slug
        - endpoint_label
        - pricing
        - performance
        - performance_v3
        - context_window_tokens
    ProviderModelPerformance:
      type: object
      properties:
        percentile_05_output_tokens_per_second:
          type:
            - number
            - "null"
        quartile_25_output_tokens_per_second:
          type:
            - number
            - "null"
        median_output_tokens_per_second:
          type:
            - number
            - "null"
        quartile_75_output_tokens_per_second:
          type:
            - number
            - "null"
        percentile_95_output_tokens_per_second:
          type:
            - number
            - "null"
        percentile_05_time_to_first_token_seconds:
          type:
            - number
            - "null"
        quartile_25_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        quartile_75_time_to_first_token_seconds:
          type:
            - number
            - "null"
        percentile_95_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - percentile_05_output_tokens_per_second
        - quartile_25_output_tokens_per_second
        - median_output_tokens_per_second
        - quartile_75_output_tokens_per_second
        - percentile_95_output_tokens_per_second
        - percentile_05_time_to_first_token_seconds
        - quartile_25_time_to_first_token_seconds
        - median_time_to_first_token_seconds
        - quartile_75_time_to_first_token_seconds
        - percentile_95_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_response_time_seconds
      description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Performance metrics for a single (provider, model) pair. Individual fields are null when no measurements are available for that metric.
      deprecated: true
    LLMProvidersResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - commercial
        pagination:
          $ref: "#/components/schemas/PaginationMeta"
        data:
          type: array
          items:
            $ref: "#/components/schemas/ProviderDataExternalList"
      required:
        - tier
        - pagination
        - data
    LLMProviderItemResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - commercial
        data:
          $ref: "#/components/schemas/ProviderDataExternalDetail"
      required:
        - tier
        - data
    ProviderDataExternalList:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        country:
          description: ISO 3166-1 alpha-2 country code of the provider. Null when unknown.
          type:
            - string
            - "null"
        models:
          type: array
          items:
            $ref: "#/components/schemas/ProviderModelExternalList"
      required:
        - id
        - name
        - slug
        - models
    ProviderDataExternalDetail:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        country:
          description: ISO 3166-1 alpha-2 country code of the provider. Null when unknown.
          type:
            - string
            - "null"
        models:
          type: array
          items:
            $ref: "#/components/schemas/ProviderModelExternalDetail"
      required:
        - id
        - name
        - slug
        - models
    ProviderModelExternalList:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        endpoint_label:
          description: Label that distinguishes this endpoint from other endpoints of the same provider and model, e.g. "(FAST)" or "(FP8)". A provider that serves a model through several endpoints has one entry per endpoint. Null when the endpoint has no label.
          type:
            - string
            - "null"
        pricing:
          $ref: "#/components/schemas/Pricing"
        context_window_tokens:
          description: Null when not set for the (provider, model) pair.
          type:
            - integer
            - "null"
        performance:
          oneOf:
            - $ref: "#/components/schemas/ProviderModelPerformanceList"
            - type: "null"
        performance_v3:
          oneOf:
            - $ref: "#/components/schemas/ProviderModelPerformanceV3List"
            - type: "null"
          description: Performance v3 headline means, endpoint error rate and window date for this endpoint. The provider detail endpoint (`/api/v2/language/providers/{slug}`) adds per-workload metrics; see `ProviderModelPerformanceV3`. Null when the endpoint has no measurements in the latest window.
      required:
        - id
        - name
        - slug
        - endpoint_label
        - pricing
        - context_window_tokens
        - performance
        - performance_v3
    ProviderModelExternalDetail:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        endpoint_label:
          description: Label that distinguishes this endpoint from other endpoints of the same provider and model, e.g. "(FAST)" or "(FP8)". A provider that serves a model through several endpoints has one entry per endpoint. Null when the endpoint has no label.
          type:
            - string
            - "null"
        pricing:
          $ref: "#/components/schemas/Pricing"
        context_window_tokens:
          description: Null when not set for the (provider, model) pair.
          type:
            - integer
            - "null"
        performance:
          oneOf:
            - $ref: "#/components/schemas/ProviderModelPerformanceDetail"
            - type: "null"
        performance_v3:
          oneOf:
            - $ref: "#/components/schemas/ProviderModelPerformanceV3"
            - type: "null"
          description: Full Performance v3 block for this endpoint, including per-workload metrics. The providers list returns the headline only; see `ProviderModelPerformanceV3List`. Null when the endpoint has no measurements in the latest window.
      required:
        - id
        - name
        - slug
        - endpoint_label
        - pricing
        - context_window_tokens
        - performance
        - performance_v3
    ProviderModelPerformanceList:
      type: object
      properties:
        median_output_tokens_per_second:
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - median_output_tokens_per_second
        - median_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_response_time_seconds
      description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Median performance metrics returned on the providers list endpoint. Individual fields are null when no measurements are available for that metric.
      deprecated: true
    ProviderModelPerformanceDetail:
      type: object
      properties:
        median_output_tokens_per_second:
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        percentile_05_output_tokens_per_second:
          type:
            - number
            - "null"
        percentile_95_output_tokens_per_second:
          type:
            - number
            - "null"
        quartile_25_output_tokens_per_second:
          type:
            - number
            - "null"
        quartile_75_output_tokens_per_second:
          type:
            - number
            - "null"
        percentile_05_time_to_first_token_seconds:
          type:
            - number
            - "null"
        percentile_95_time_to_first_token_seconds:
          type:
            - number
            - "null"
        quartile_25_time_to_first_token_seconds:
          type:
            - number
            - "null"
        quartile_75_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - median_output_tokens_per_second
        - median_time_to_first_token_seconds
        - percentile_05_output_tokens_per_second
        - percentile_95_output_tokens_per_second
        - quartile_25_output_tokens_per_second
        - quartile_75_output_tokens_per_second
        - percentile_05_time_to_first_token_seconds
        - percentile_95_time_to_first_token_seconds
        - quartile_25_time_to_first_token_seconds
        - quartile_75_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_response_time_seconds
      description: Every field returns `null` from December 10, 2026. Use `performance_v3` ([methodology](https://artificialanalysis.ai/methodology/performance-benchmarking)). Full performance metrics returned on the provider detail endpoint. Includes everything from the list endpoint plus percentile/quartile breakdowns. Individual fields are null when no measurements are available for that metric.
      deprecated: true
    PerformanceSnapshot:
      type: object
      properties:
        date:
          type: string
          description: Start date of this data point's period (YYYY-MM-DD).
        median_output_tokens_per_second:
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - date
        - median_output_tokens_per_second
        - median_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_response_time_seconds
      description: Every metric returns `null` from December 10, 2026. Use `series_v3`. A single performance data point for a given date or interval period.
      deprecated: true
    PerformanceV3Snapshot:
      type: object
      properties:
        date:
          type: string
          description: First day of the period (YYYY-MM-DD). A daily point covers the trailing 5-day window ending that day, as the website does. A weekly or monthly point covers the 7 or 30 days from that day.
        mean_output_tokens_per_second:
          description: Headline end-to-end output speed. Mean over the workloads measured.
          type:
            - number
            - "null"
        mean_time_to_first_token_seconds:
          description: Mean over the workloads measured.
          type:
            - number
            - "null"
        mean_time_to_first_answer_token_seconds:
          description: Mean over the workloads measured.
          type:
            - number
            - "null"
        endpoint_error_rate:
          description: Endpoint error samples over all samples across the workloads measured (0-1). Null when no workload measured an output speed.
          type:
            - number
            - "null"
      required:
        - date
        - mean_output_tokens_per_second
        - mean_time_to_first_token_seconds
        - mean_time_to_first_answer_token_seconds
        - endpoint_error_rate
      description: "A Performance v3 data point for one endpoint: end-to-end speed averaged over the single-request and multi-turn agentic workloads measured in the period. Data starts on September 15, 2026."
    ModelPerformanceOverTimeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - commercial
        data:
          type: object
          properties:
            id:
              type: string
            slug:
              type: string
            name:
              type: string
            providers:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  slug:
                    type: string
                  name:
                    type: string
                  endpoint_label:
                    description: Label that distinguishes this endpoint from other endpoints of the same provider and model, e.g. "(FAST)" or "(FP8)". A provider that serves a model through several endpoints has one entry per endpoint. Null when the endpoint has no label.
                    type:
                      - string
                      - "null"
                  series:
                    type: array
                    items:
                      $ref: "#/components/schemas/PerformanceSnapshot"
                    deprecated: true
                  series_v3:
                    type: array
                    items:
                      $ref: "#/components/schemas/PerformanceV3Snapshot"
                required:
                  - id
                  - slug
                  - name
                  - endpoint_label
                  - series
                  - series_v3
          required:
            - id
            - slug
            - name
            - providers
      required:
        - tier
        - data
    ProviderPerformanceOverTimeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - commercial
        data:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            slug:
              type: string
            models:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  slug:
                    type: string
                  name:
                    type: string
                  endpoint_label:
                    description: Label that distinguishes this endpoint from other endpoints of the same provider and model, e.g. "(FAST)" or "(FP8)". A provider that serves a model through several endpoints has one entry per endpoint. Null when the endpoint has no label.
                    type:
                      - string
                      - "null"
                  series:
                    type: array
                    items:
                      $ref: "#/components/schemas/PerformanceSnapshot"
                    deprecated: true
                  series_v3:
                    type: array
                    items:
                      $ref: "#/components/schemas/PerformanceV3Snapshot"
                required:
                  - id
                  - slug
                  - name
                  - endpoint_label
                  - series
                  - series_v3
          required:
            - id
            - name
            - slug
            - models
      required:
        - tier
        - data
    MeasurementsResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - commercial
        data:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            slug:
              type: string
            models:
              type: array
              items:
                $ref: "#/components/schemas/MeasurementModel"
          required:
            - id
            - name
            - slug
            - models
      required:
        - tier
        - data
    MeasurementModel:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        measurements:
          type: array
          items:
            $ref: "#/components/schemas/Measurement"
          deprecated: true
        measurements_v3:
          type: array
          items:
            $ref: "#/components/schemas/MeasurementV3"
      required:
        - id
        - name
        - slug
        - measurements
        - measurements_v3
    Measurement:
      type: object
      properties:
        id:
          type: string
        date:
          type: string
          description: Timestamp when the measurement was recorded.
        success:
          type: boolean
        output_tokens_per_second:
          type:
            - number
            - "null"
        time_to_first_token_seconds:
          type:
            - number
            - "null"
        time_to_first_answer_token:
          type:
            - number
            - "null"
        end_to_end_response_time_seconds:
          type:
            - number
            - "null"
      required:
        - id
        - date
        - success
        - output_tokens_per_second
        - time_to_first_token_seconds
        - time_to_first_answer_token
        - end_to_end_response_time_seconds
      description: Every metric returns `null` from December 10, 2026. Use `measurements_v3`.
      deprecated: true
    MeasurementV3:
      type: object
      properties:
        run_id:
          type: string
        date:
          type: string
          description: Timestamp when the run was measured.
        workload:
          type: string
          enum:
            - 1k
            - 10k
            - 100k
            - multi_turn
          description: "Workload measured: `1k`, `10k` or `100k` input tokens, or `multi_turn`, one of the multi-turn agentic workloads."
        endpoint_label:
          description: Label that distinguishes this endpoint from other endpoints of the same provider and model, e.g. "(FAST)" or "(FP8)". A provider that serves a model through several endpoints has one entry per endpoint. Null when the endpoint has no label.
          type:
            - string
            - "null"
        median_output_tokens_per_second:
          description: End-to-end output speed, median over the run's samples.
          type:
            - number
            - "null"
        median_time_to_first_token_seconds:
          type:
            - number
            - "null"
        median_time_to_first_answer_token_seconds:
          type:
            - number
            - "null"
        median_end_to_end_time_seconds:
          type:
            - number
            - "null"
        samples:
          type: number
          description: Samples in the run.
        endpoint_error_samples:
          type: number
          description: Samples that failed with an endpoint error.
      required:
        - run_id
        - date
        - workload
        - endpoint_label
        - median_output_tokens_per_second
        - median_time_to_first_token_seconds
        - median_time_to_first_answer_token_seconds
        - median_end_to_end_time_seconds
        - samples
        - endpoint_error_samples
      description: One Performance v3 run of one workload on one endpoint, as medians over its samples.
    ArenaModelCreator:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    ImageArenaResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/ImageArenaResult"
      required:
        - tier
        - data
    ImageArenaFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/ImageArenaResultFree"
      required:
        - tier
        - data
    ImageArenaResult:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
        rank:
          description: Rank among current models by Elo.
          type:
            - integer
            - "null"
        samples:
          type: integer
          description: Total number of arena samples.
        release_date:
          description: Release date.
          type:
            - string
            - "null"
        price_per_1k_images:
          description: Price per 1,000 images.
          type:
            - number
            - "null"
        open_weights_url:
          description: URL to open weights; can be used to infer if open weights.
          type:
            - string
            - "null"
        categories:
          type: array
          items:
            $ref: "#/components/schemas/ArenaCategory"
          description: Per-category Elo breakdowns. Only present when include_categories=true.
      required:
        - id
        - name
        - slug
        - model_creator
        - elo
        - ci_95
        - rank
        - samples
        - release_date
        - price_per_1k_images
        - open_weights_url
    ImageArenaResultFree:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - model_creator
        - elo
        - ci_95
    VideoArenaResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/VideoArenaResultPaid"
      required:
        - tier
        - data
    VideoArenaFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/VideoArenaResultFree"
      required:
        - tier
        - data
    VideoArenaResultFree:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - model_creator
        - elo
        - ci_95
    VideoArenaResultPaid:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
        rank:
          description: Rank among current models by Elo.
          type:
            - integer
            - "null"
        samples:
          type: integer
          description: Total number of arena samples.
        release_date:
          description: Release date.
          type:
            - string
            - "null"
        price_per_minute:
          description: Price per minute of video.
          type:
            - number
            - "null"
        open_weights_url:
          description: URL to open weights; can be used to infer if open weights.
          type:
            - string
            - "null"
        categories:
          type: array
          items:
            $ref: "#/components/schemas/ArenaCategory"
          description: Per-category Elo breakdowns. Only present when include_categories=true.
      required:
        - id
        - name
        - slug
        - model_creator
        - elo
        - ci_95
        - rank
        - samples
        - release_date
        - price_per_minute
        - open_weights_url
    ArenaCategory:
      type: object
      properties:
        label:
          type: string
          description: Category label.
        group:
          type: string
          description: Taxonomy the category belongs to, e.g. "use_case", "capability", "style" or "editing_action". Use it to read one breakdown; labels from different groups can sit side by side.
        elo:
          type: number
        ci_95:
          type:
            - number
            - "null"
        samples:
          type: integer
      required:
        - label
        - group
        - elo
        - ci_95
        - samples
    TextToSpeechResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/TextToSpeechResult"
      required:
        - tier
        - data
    TextToSpeechFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/TextToSpeechResultFree"
      required:
        - tier
        - data
    TextToSpeechResult:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
        samples:
          type: integer
          description: Total number of arena samples.
        release_date:
          description: Release date.
          type:
            - string
            - "null"
        price_per_1m_characters:
          description: Price per 1 million characters.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - model_creator
        - elo
        - ci_95
        - samples
        - release_date
        - price_per_1m_characters
    TextToSpeechResultFree:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - model_creator
        - elo
        - ci_95
    SpeechToSpeechResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/SpeechToSpeechResult"
      required:
        - tier
        - data
    SpeechToSpeechFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/SpeechToSpeechResultFree"
      required:
        - tier
        - data
    SpeechToSpeechResult:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        bba_score:
          description: Big Bench Audio score.
          type:
            - number
            - "null"
        fdb_score:
          description: Full Duplex Bench score.
          type:
            - number
            - "null"
        tau_voice_score:
          description: 𝜏-Voice score (the model's best result across providers). Null when the model has no 𝜏-Voice measurements.
          type:
            - number
            - "null"
        providers:
          type: array
          items:
            $ref: "#/components/schemas/SpeechToSpeechProvider"
      required:
        - id
        - name
        - slug
        - model_creator
        - bba_score
        - fdb_score
        - tau_voice_score
        - providers
    SpeechToSpeechResultFree:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        bba_score:
          description: Big Bench Audio score.
          type:
            - number
            - "null"
        fdb_score:
          description: Full Duplex Bench score.
          type:
            - number
            - "null"
        tau_voice_score:
          description: 𝜏-Voice score (the model's best result across providers). Null when the model has no 𝜏-Voice measurements.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - model_creator
        - bba_score
        - fdb_score
        - tau_voice_score
    SpeechToSpeechProvider:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        price_per_hour_input:
          description: Price per hour of input audio.
          type:
            - number
            - "null"
        price_per_hour_output:
          description: Price per hour of output audio.
          type:
            - number
            - "null"
        time_to_first_audio_seconds:
          description: Time to first audio output in seconds.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - price_per_hour_input
        - price_per_hour_output
        - time_to_first_audio_seconds
    SpeechToTextModelsResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/SpeechToTextModelResult"
      required:
        - tier
        - data
    SpeechToTextModelsFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/SpeechToTextModelResultFree"
      required:
        - tier
        - data
    SpeechToTextModelResult:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        aa_wer_index:
          description: AA Word Error Rate index.
          type:
            - number
            - "null"
        aa_agenttalk:
          description: AA AgentTalk WER.
          type:
            - number
            - "null"
        voxpopuli_cleaned_aa:
          description: VoxPopuli cleaned WER.
          type:
            - number
            - "null"
        earnings_22_cleaned_aa:
          description: Earnings22 cleaned WER.
          type:
            - number
            - "null"
        open_weights:
          description: Whether the model has open weights. Null when unknown.
          type:
            - boolean
            - "null"
        providers:
          type: array
          items:
            $ref: "#/components/schemas/SpeechToTextProvider"
          description: Per-provider data.
      required:
        - id
        - name
        - model_creator
        - aa_wer_index
        - aa_agenttalk
        - voxpopuli_cleaned_aa
        - earnings_22_cleaned_aa
        - open_weights
        - providers
    SpeechToTextModelResultFree:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        aa_wer_index:
          description: AA Word Error Rate index.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - model_creator
        - aa_wer_index
    SpeechToTextProvider:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        price_per_1k_minutes:
          type:
            - number
            - "null"
        median_speed_factor:
          type:
            - number
            - "null"
        aa_wer_index:
          type:
            - number
            - "null"
        aa_agenttalk:
          type:
            - number
            - "null"
        voxpopuli_cleaned_aa:
          type:
            - number
            - "null"
        earnings_22_cleaned_aa:
          type:
            - number
            - "null"
      required:
        - id
        - name
        - slug
        - price_per_1k_minutes
        - median_speed_factor
        - aa_wer_index
        - aa_agenttalk
        - voxpopuli_cleaned_aa
        - earnings_22_cleaned_aa
    MusicArenaResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/MusicArenaResult"
      required:
        - tier
        - data
    MusicArenaFreeResponse:
      type: object
      properties:
        tier:
          type: string
          enum:
            - free
            - pro
            - commercial
        data:
          type: array
          items:
            $ref: "#/components/schemas/MusicArenaResultFree"
      required:
        - tier
        - data
    MusicArenaResult:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
        samples:
          type: integer
          description: Total number of arena samples.
        genres:
          type: array
          items:
            $ref: "#/components/schemas/MusicGenre"
          description: Per-genre Elo breakdowns. Only present when include_genres=true.
      required:
        - id
        - name
        - model_creator
        - elo
        - ci_95
        - samples
    MusicArenaResultFree:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        model_creator:
          $ref: "#/components/schemas/ArenaModelCreator"
        elo:
          type: number
          description: Arena Elo rating.
        ci_95:
          description: 95% confidence interval. Null if unavailable.
          type:
            - number
            - "null"
      required:
        - id
        - name
        - model_creator
        - elo
        - ci_95
    MusicGenre:
      type: object
      properties:
        label:
          type: string
          description: Genre name (e.g. "Classical", "Electronic", "Pop").
        elo:
          type: number
        ci_95:
          type:
            - number
            - "null"
        samples:
          type: integer
      required:
        - label
        - elo
        - ci_95
        - samples
