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

# Get primary deployment history

> Returns historical metric data for the Admin-selected primary deployment of an enabled logical vault. `meta.resolved_vault_id` identifies the concrete deployment. The response and query parameters are otherwise identical to `/{vault_id}/timeseries`; use this route when callers know the stable public vault slug but should not depend on its current chain or address.

Returns TVL, APY, share price, and supply for the Admin-selected primary
deployment of a vault slug. `meta.resolved_vault_id` identifies that deployment.
This endpoint does not aggregate linked deployments.

For aggregate USD TVL alongside the same primary metrics, use
[`/v1/vaults/slug/{slug}/timeseries`](/api-reference/vaults/get-vault-group-timeseries).


## OpenAPI

````yaml GET /v1/vaults/slug/{slug}/primary/timeseries
openapi: 3.1.0
info:
  title: Gauntlet API
  description: Gauntlet vault data and user positions API.
  contact:
    name: Gauntlet
    url: https://gauntlet.xyz
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.gauntlet.xyz
    description: Production
security: []
tags:
  - name: System
    description: Health checks and Prometheus metrics
  - name: TVL
    description: Aggregate live TVL
  - name: Strategies
    description: Curated strategy groupings with aggregate metrics
  - name: Vaults
    description: Vault listings, details, metrics, timeseries
  - name: Users
    description: Per-wallet position state and timeseries
  - name: Prices
    description: Token price lookups and historical timeseries
paths:
  /v1/vaults/slug/{slug}/primary/timeseries:
    get:
      tags:
        - Vaults
      summary: Get primary deployment timeseries by vault slug
      description: >-
        Returns historical metric data for the Admin-selected primary deployment
        of an enabled logical vault. `meta.resolved_vault_id` identifies the
        concrete deployment. The response and query parameters are otherwise
        identical to `/{vault_id}/timeseries`; use this route when callers know
        the stable public vault slug but should not depend on its current chain
        or address.
      operationId: get_primary_vault_timeseries_by_slug
      parameters:
        - name: slug
          in: path
          description: Admin-curated public vault slug
          required: true
          schema:
            type: string
        - name: start
          in: query
          description: 'Window start: ISO 8601 date or RFC 3339 timestamp.'
          required: false
          schema:
            type: string
        - name: end
          in: query
          description: 'Window end: ISO 8601 date or RFC 3339 timestamp.'
          required: false
          schema:
            type: string
        - name: next
          in: query
          description: Opaque cursor from previous `meta.next_cursor`.
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Page size (1–10000, default 1000).
          required: false
          schema:
            type: integer
            format: int64
        - name: order
          in: query
          description: 'Sort direction: `asc` (default) or `desc`.'
          required: false
          schema:
            type: string
        - name: granularity
          in: query
          description: 'Sampling granularity: `day` (default), `hour`, `week`, or `month`.'
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Primary deployment timeseries data points
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultTimeseriesResponse'
        '401':
          description: Missing or invalid auth
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Vault slug not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Data source or vault curation unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    VaultTimeseriesResponse:
      type: object
      required:
        - meta
        - data
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/VaultTimeseriesPoint'
        meta:
          $ref: '#/components/schemas/TimeseriesMeta'
    ErrorResponse:
      type: object
      description: Standard error response envelope returned on 4xx/5xx
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
    VaultTimeseriesPoint:
      type: object
      required:
        - timestamp
        - tvl
        - unit_price
        - total_supply
      properties:
        apy_30d:
          type:
            - number
            - 'null'
          format: double
        apy_7d:
          type:
            - number
            - 'null'
          format: double
        apy_90d:
          type:
            - number
            - 'null'
          format: double
        timestamp:
          type: string
          format: date-time
        total_supply:
          type: string
        tvl:
          $ref: '#/components/schemas/AmountPair'
        unit_price:
          type: string
    TimeseriesMeta:
      type: object
      required:
        - request_id
        - refreshed_at
        - count
        - limit
      properties:
        count:
          type: integer
          format: int64
          description: Number of points in this response.
        end:
          type:
            - string
            - 'null'
          format: date-time
        limit:
          type: integer
          format: int64
          description: Page-size cap actually applied.
        next_cursor:
          type:
            - string
            - 'null'
          description: Set when more pages exist; pass back as `?next=`.
        partial_errors:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PartialResponseError'
          description: Item-scoped failures isolated from an aggregate response.
        refreshed_at:
          type: string
          format: date-time
        request_id:
          type: string
        resolved_vault_id:
          type:
            - string
            - 'null'
          description: >-
            Primary deployment selected for deployment-local metrics by a slug

            route. The aggregate slug route still sums TVL and supply across
            deployments.

            Omitted when the deployment is already identified in the request
            path.
        start:
          type:
            - string
            - 'null'
          format: date-time
          description: Window bounds the response covers (echoes the request when set).
    ErrorBody:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code (e.g. `NOT_FOUND`, `UNAUTHORIZED`)
        details: {}
        message:
          type: string
          description: Human-readable error message
    AmountPair:
      type: object
      description: >-
        Decimal-string metric paired across native (numeraire-token) and USD.

        `native` is always present; `usd` is JSON null when pricing is
        unavailable.
      required:
        - native
      properties:
        native:
          type: string
        usd:
          type:
            - string
            - 'null'
    PartialResponseError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code for the isolated item failure.
        message:
          type: string
          description: Human-readable error message.
        resource_id:
          type:
            - string
            - 'null'
          description: Resource that failed inside the aggregate response, when known.

````