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

# Show where one model's metadata comes from

> GoModel API reference for GET /admin/models/metadata: Show where one model's metadata comes from.



## OpenAPI

````yaml /openapi.json get /admin/models/metadata
openapi: 3.0.0
info:
  description: >-
    AI gateway routing requests to multiple LLM providers (OpenAI, Anthropic,
    Gemini, Groq, Fireworks AI, Meta, OpenRouter, Kilo AI, DeepSeek, Z.ai, xAI,
    MiniMax, Xiaomi MiMo, OpenCode Go, Oracle, Ollama, Bailian). Drop-in
    OpenAI-compatible API.
  title: GoModel API
  contact: {}
  version: '1.0'
servers:
  - url: '{base_url}'
    description: Edit the base URL to point at your GoModel deployment.
    variables:
      base_url:
        default: http://localhost:8080
        description: Your GoModel deployment URL
security: []
paths:
  /admin/models/metadata:
    get:
      tags:
        - admin
      summary: Show where one model's metadata comes from
      description: >-
        Returns the merged metadata the gateway serves for a model together with
        each layer it was merged from: the provider's own listing, the model
        catalog entry and the config.yaml override. A null layer knows nothing
        about the model. `sources` names the winning layer per field (config,
        provider, catalog or inferred).
      parameters:
        - description: Provider instance name or provider type
          name: provider
          in: query
          required: true
          schema:
            type: string
        - description: Raw upstream model ID
          name: model
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/providers.ModelMetadataLayers'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/core.GatewayError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/core.GatewayError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/core.GatewayError'
      security:
        - BearerAuth: []
components:
  schemas:
    providers.ModelMetadataLayers:
      type: object
      properties:
        catalog:
          description: Catalog is the model list (ai-model-list) entry.
          allOf:
            - $ref: '#/components/schemas/core.ModelMetadata'
          nullable: true
        config:
          description: Config is the config.yaml metadata override.
          allOf:
            - $ref: '#/components/schemas/core.ModelMetadata'
          nullable: true
        effective:
          description: Effective is the merged metadata, as listed by /admin/models.
          allOf:
            - $ref: '#/components/schemas/core.ModelMetadata'
        provider:
          description: Provider is what the provider reported in its own model listing.
          allOf:
            - $ref: '#/components/schemas/core.ModelMetadata'
          nullable: true
        selector:
          type: string
        sources:
          description: |-
            Sources names the layer that supplied each effective field
            (see modeldata.MetadataSources).
          type: object
          additionalProperties:
            type: string
    core.GatewayError:
      type: object
      properties:
        code:
          type: string
          nullable: true
        message:
          type: string
        param:
          type: string
          nullable: true
        provider:
          type: string
        status_code:
          type: integer
        type:
          $ref: '#/components/schemas/core.ErrorType'
    core.ModelMetadata:
      type: object
      properties:
        capabilities:
          type: object
          additionalProperties:
            type: boolean
        categories:
          type: array
          items:
            $ref: '#/components/schemas/core.ModelCategory'
        context_window:
          type: integer
        description:
          type: string
        display_name:
          type: string
        family:
          type: string
        max_output_tokens:
          type: integer
        modes:
          type: array
          items:
            type: string
        pricing:
          $ref: '#/components/schemas/core.ModelPricing'
        pricing_sources:
          type: object
          additionalProperties:
            type: string
        rankings:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/core.ModelRanking'
        tags:
          type: array
          items:
            type: string
    core.ErrorType:
      type: string
      enum:
        - provider_error
        - rate_limit_error
        - invalid_request_error
        - authentication_error
        - not_found_error
        - permission_error
        - internal_error
      x-enum-varnames:
        - ErrorTypeProvider
        - ErrorTypeRateLimit
        - ErrorTypeInvalidRequest
        - ErrorTypeAuthentication
        - ErrorTypeNotFound
        - ErrorTypePermission
        - ErrorTypeInternal
    core.ModelCategory:
      type: string
      enum:
        - all
        - text_generation
        - embedding
        - image
        - audio
        - video
        - utility
      x-enum-varnames:
        - CategoryAll
        - CategoryTextGeneration
        - CategoryEmbedding
        - CategoryImage
        - CategoryAudio
        - CategoryVideo
        - CategoryUtility
    core.ModelPricing:
      type: object
      properties:
        audio_input_per_mtok:
          type: number
        audio_output_per_mtok:
          type: number
        batch_input_per_mtok:
          type: number
        batch_output_per_mtok:
          type: number
        cache_write_per_mtok:
          type: number
        cached_input_per_mtok:
          type: number
        currency:
          type: string
        input_per_image:
          type: number
        input_per_mtok:
          type: number
        output_image_per_mtok:
          description: >-
            OutputImagePerMtok prices generated image tokens, which providers
            bill at a

            different rate from text output (OpenAI gpt-image-1: $40/Mtok image
            output

            and no text output rate at all; Gemini 3 Pro Image: $120/Mtok image
            output

            versus $12/Mtok text). It is the output rate on the image endpoints.
          type: number
        output_per_mtok:
          type: number
        per_character_input:
          type: number
        per_image:
          description: >-
            PerImage prices a returned image as a flat unit, for models that
            report no

            token usage at all (DALL·E, Imagen, grok-imagine). It is an
            alternative

            expression of the same charge as OutputImagePerMtok, never an
            addition to

            it: catalog entries carry both, so only one may be applied (see

            usage.CalculateGranularCost).
          type: number
        per_page:
          type: number
        per_request:
          type: number
        per_second_input:
          type: number
        per_second_output:
          type: number
        reasoning_output_per_mtok:
          type: number
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/core.ModelPricingTier'
        time_windows:
          description: >-
            TimeWindows carry rates that replace the base prices during
            recurring

            UTC windows (see ModelPricingTimeWindow). Base prices are the
            standard

            (peak) rates; use AtTime to resolve the rates in effect at a moment.
          type: array
          items:
            $ref: '#/components/schemas/core.ModelPricingTimeWindow'
    core.ModelRanking:
      type: object
      properties:
        as_of:
          type: string
        elo:
          type: number
        rank:
          type: integer
    core.ModelPricingTier:
      type: object
      properties:
        cached_input_per_mtok:
          type: number
        input_per_mtok:
          type: number
        output_per_mtok:
          type: number
        up_to_mtok:
          type: number
        up_to_tokens:
          type: integer
          minimum: 1
    core.ModelPricingTimeWindow:
      type: object
      properties:
        label:
          type: string
        pricing:
          $ref: '#/components/schemas/core.ModelPricingTimeWindowRates'
        utc_ranges:
          type: array
          items:
            $ref: '#/components/schemas/core.ModelPricingUTCRange'
    core.ModelPricingTimeWindowRates:
      type: object
      properties:
        cache_write_per_mtok:
          type: number
        cached_input_per_mtok:
          type: number
        input_per_mtok:
          type: number
        output_per_mtok:
          type: number
    core.ModelPricingUTCRange:
      type: object
      properties:
        days:
          type: array
          items:
            type: string
        end:
          type: string
        start:
          type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````