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

# Get project TVL

> Fetch a source-free daily TVL series for one visible project over a fixed 30- or 90-day window. Results are strictly ascending, contain at most 31 or 91 observations respectively, and derive the current value from the newest returned point. An existing project without an eligible current series returns availability=unavailable, null current fields, and empty history with HTTP 200. No bulk export, pagination, arbitrary dates, source, or provider fields are available.



## OpenAPI

````yaml /openapi/public-v1.json get /v1/projects/{slug}/tvl
openapi: 3.1.0
info:
  title: Qoory Developer API
  version: 1.0.0-beta
  description: >-
    Authenticated, credit-metered REST API for bounded, public-safe intelligence
    from Qoory's curated entity graph. Responses use strict source-free DTOs and
    do not expose bulk entity listing endpoints.
servers:
  - url: https://api.qoory.ai
    description: Qoory production API
security: []
tags:
  - name: Search
    description: Resolve specific entities through bounded search and identity matching.
  - name: Discovery
    description: Explore curated, fixed-size Qoory snapshots without bulk entity listing.
  - name: Projects
    description: Fetch project identities and bounded project intelligence.
  - name: Funds
    description: >-
      Fetch fund identities, rankings, partners, and verified portfolio
      relationships.
  - name: People
    description: Fetch person identities, roles, and verified investment relationships.
  - name: Tokens
    description: Fetch token identities, market facts, tokenomics, and unlock windows.
  - name: Markets
    description: Fetch bounded crypto-market snapshots and visualisation data.
  - name: Stocks
    description: Fetch crypto-related stock identities, rankings, and curated news.
  - name: News
    description: Fetch Qoory-curated, source-free news summaries and entity links.
  - name: Narratives
    description: Fetch Qoory-curated market narratives and bounded timelines.
  - name: Events
    description: Fetch eligible Web3 event identities and upcoming-event snapshots.
  - name: X Accounts
    description: Fetch opaque Qoory-owned X-account references and eligible entity links.
paths:
  /v1/projects/{slug}/tvl:
    get:
      tags:
        - Projects
      summary: Get project TVL
      description: >-
        Fetch a source-free daily TVL series for one visible project over a
        fixed 30- or 90-day window. Results are strictly ascending, contain at
        most 31 or 91 observations respectively, and derive the current value
        from the newest returned point. An existing project without an eligible
        current series returns availability=unavailable, null current fields,
        and empty history with HTTP 200. No bulk export, pagination, arbitrary
        dates, source, or provider fields are available.
      operationId: getProjectTvl
      parameters:
        - name: slug
          in: path
          required: true
          description: Exact Qoory slug for the target project.
          example: uniswap
          schema:
            type: string
            minLength: 1
            maxLength: 160
        - name: range
          in: query
          required: false
          description: >-
            Fixed historical window. Arbitrary start and end dates are not
            supported.
          example: 30d
          schema:
            type: string
            enum:
              - 30d
              - 90d
            default: 30d
      responses:
        '200':
          description: Successful response.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/DeveloperApiProjectTvl'
                    description: Operation-specific response data.
                  meta:
                    type: object
                    additionalProperties: false
                    properties:
                      request_id:
                        type: string
                        minLength: 8
                        maxLength: 96
                        pattern: ^[A-Za-z0-9_.:-]{8,96}$
                      credits_used:
                        type: integer
                        minimum: 0
                      credits_remaining:
                        type: integer
                        minimum: 0
                      rate_limit:
                        type: object
                        additionalProperties: false
                        properties:
                          limit:
                            type: integer
                            minimum: 0
                          remaining:
                            type: integer
                            minimum: 0
                          reset_at:
                            type: string
                            format: date-time
                          tier:
                            type: string
                            enum:
                              - free
                              - pro
                              - pro_plus
                              - team
                              - internal
                        required:
                          - limit
                          - remaining
                          - reset_at
                          - tier
                    required:
                      - request_id
                    description: Request correlation, credit, and rate-limit metadata.
                required:
                  - data
                  - meta
              example:
                data:
                  kind: project_tvl
                  id: uniswap
                  project:
                    id: uniswap
                    slug: uniswap
                    name: Uniswap
                  range: 30d
                  availability: available
                  current_tvl_usd: 1000000000
                  latest_snapshot_date: '2026-07-16'
                  history_count: 3
                  history:
                    - date: '2026-07-14'
                      tvl_usd: 980000000
                    - date: '2026-07-15'
                      tvl_usd: 995000000
                    - date: '2026-07-16'
                      tvl_usd: 1000000000
                meta:
                  request_id: req_example
                  credits_used: 2
                  credits_remaining: 98
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '401':
          description: Missing or invalid API key.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: INVALID_API_KEY
                  message: The API key is invalid.
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 100
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '402':
          description: Insufficient credits.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: INSUFFICIENT_CREDITS
                  message: Not enough credits are available for this request.
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 0
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '403':
          description: API key is disabled, revoked, or missing the required scope.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: FORBIDDEN
                  message: The API key does not have the required scope.
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 100
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '404':
          description: >-
            The requested record was not found or is not available through the
            public projection.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: NOT_FOUND
                  message: The requested record was not found.
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 100
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '422':
          description: Invalid request.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: INVALID_REQUEST
                  message: The request parameters are invalid.
                  details:
                    - path: limit
                      message: Expected a value within the documented range.
                      code: too_big
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 100
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '429':
          description: Rate limit exceeded.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
            Retry-After:
              description: Whole seconds to wait before retrying a rate-limited request.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 10
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: RATE_LIMITED
                  message: Rate limit exceeded.
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 100
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
        '500':
          description: Internal server error.
          headers:
            Cache-Control:
              description: Developer API responses are not cacheable.
              schema:
                type: string
                enum:
                  - no-store
            x-qoory-request-id:
              description: Public request id for support and usage correlation.
              schema:
                type: string
                minLength: 8
                maxLength: 96
                pattern: ^[A-Za-z0-9_.:-]{8,96}$
            x-qoory-credits-used:
              description: Credits charged for the request, when metering ran.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-credits-remaining:
              description: Credits remaining after the request, when available.
              schema:
                type: string
                pattern: ^[0-9]+$
                maxLength: 20
            x-qoory-rate-limit:
              description: >-
                Stringified rate-limit metadata with limit, remaining, reset_at,
                and tier.
              schema:
                type: string
                maxLength: 512
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperApiErrorEnvelope'
              example:
                error:
                  code: INTERNAL_ERROR
                  message: The request could not be completed.
                meta:
                  request_id: req_example
                  credits_used: 0
                  credits_remaining: 100
                  rate_limit:
                    limit: 30
                    remaining: 29
                    reset_at: '2026-06-26T00:00:00.000Z'
                    tier: free
      security:
        - bearerAuth: []
components:
  schemas:
    DeveloperApiProjectTvl:
      type: object
      additionalProperties: false
      properties:
        kind:
          type: string
          enum:
            - project_tvl
          description: Stable response-shape discriminator.
        id:
          type: string
          description: Stable Qoory identifier for this record.
        project:
          type: object
          additionalProperties: false
          properties:
            id:
              type: string
              description: Stable Qoory identifier for this record.
            slug:
              type: string
              description: Canonical Qoory slug for this entity.
            name:
              type: string
              description: Canonical display name for this entity.
          required:
            - id
            - slug
            - name
          description: Public project value for this record.
        range:
          type: string
          enum:
            - 30d
            - 90d
          description: Public range value for this record.
        availability:
          type: string
          enum:
            - available
            - unavailable
          description: Public availability value for this record.
        current_tvl_usd:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          description: USD-denominated current tvl value.
        latest_snapshot_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Calendar date for the record's latest snapshot.
        history_count:
          type: integer
          minimum: 0
          maximum: 91
          description: Number of history represented in this bounded response.
        history:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              date:
                type: string
                format: date
                description: Public date value for this record.
              tvl_usd:
                type: number
                minimum: 0
                description: USD-denominated tvl value.
            required:
              - date
              - tvl_usd
          maxItems: 91
          description: Public history value for this record.
      required:
        - kind
        - id
        - project
        - range
        - availability
        - current_tvl_usd
        - latest_snapshot_date
        - history_count
        - history
      allOf:
        - if:
            properties:
              range:
                type: string
                enum:
                  - 30d
                description: Public range value for this record.
            required:
              - range
          then:
            properties:
              history:
                maxItems: 31
                description: Public history value for this record.
              history_count:
                maximum: 31
                description: Number of history represented in this bounded response.
        - oneOf:
            - properties:
                availability:
                  const: available
                  description: Public availability value for this record.
                current_tvl_usd:
                  type: number
                  minimum: 0
                  description: USD-denominated current tvl value.
                latest_snapshot_date:
                  type: string
                  format: date
                  description: Calendar date for the record's latest snapshot.
                history_count:
                  type: integer
                  minimum: 1
                  description: Number of history represented in this bounded response.
                history:
                  minItems: 1
                  description: Public history value for this record.
              required:
                - availability
                - current_tvl_usd
                - latest_snapshot_date
                - history_count
                - history
            - properties:
                availability:
                  const: unavailable
                  description: Public availability value for this record.
                current_tvl_usd:
                  type: 'null'
                  description: USD-denominated current tvl value.
                latest_snapshot_date:
                  type: 'null'
                  description: Calendar date for the record's latest snapshot.
                history_count:
                  const: 0
                  description: Number of history represented in this bounded response.
                history:
                  maxItems: 0
                  description: Public history value for this record.
              required:
                - availability
                - current_tvl_usd
                - latest_snapshot_date
                - history_count
                - history
      title: Project Tvl
      description: A fixed-window daily TVL series for one project.
    DeveloperApiErrorEnvelope:
      type: object
      additionalProperties: false
      properties:
        error:
          type: object
          additionalProperties: false
          properties:
            code:
              type: string
              enum:
                - MISSING_API_KEY
                - INVALID_API_KEY
                - DISABLED_API_KEY
                - REVOKED_API_KEY
                - USER_SUSPENDED
                - FEATURE_DISABLED
                - CONFIGURATION_ERROR
                - FORBIDDEN
                - INVALID_REQUEST
                - RATE_LIMITED
                - INSUFFICIENT_CREDITS
                - NOT_FOUND
                - DATA_UNAVAILABLE
                - INTERNAL_ERROR
              description: Stable machine-readable error code.
            message:
              type: string
              description: Public-safe human-readable error message.
            details:
              $ref: '#/components/schemas/DeveloperApiValidationErrorDetails'
              description: Optional bounded validation details for an invalid request.
          required:
            - code
            - message
          description: Standard Developer API error object.
        meta:
          type: object
          additionalProperties: false
          properties:
            request_id:
              type: string
              minLength: 8
              maxLength: 96
              pattern: ^[A-Za-z0-9_.:-]{8,96}$
              description: Public request identifier for support and usage correlation.
            credits_used:
              type: integer
              minimum: 0
              description: Total credits charged for this request.
            credits_remaining:
              type: integer
              minimum: 0
              description: Credits available after this request, when known.
            rate_limit:
              type: object
              additionalProperties: false
              properties:
                limit:
                  type: integer
                  minimum: 0
                  description: Maximum result count applied to this response.
                remaining:
                  type: integer
                  minimum: 0
                  description: Requests remaining in the active rate-limit window.
                reset_at:
                  type: string
                  format: date-time
                  description: UTC timestamp when the active rate-limit window resets.
                tier:
                  type: string
                  enum:
                    - free
                    - pro
                    - pro_plus
                    - team
                    - internal
                  description: >-
                    Rate-limit or trend tier, as defined by the containing
                    schema.
              required:
                - limit
                - remaining
                - reset_at
                - tier
              description: Rate-limit metadata for the active request window.
          required:
            - request_id
          description: Request correlation, credit, and rate-limit metadata.
      required:
        - error
        - meta
      title: Error Envelope
      description: Standard error response shared by every Developer API operation.
    DeveloperApiValidationErrorDetails:
      anyOf:
        - type: array
          items:
            type: object
            additionalProperties: false
            properties:
              path:
                type: string
                maxLength: 160
                pattern: ^[A-Za-z0-9_.:-]{1,160}$
                description: Bounded input path associated with a validation issue.
              message:
                type: string
                maxLength: 500
                description: Public-safe human-readable error message.
              code:
                type: string
                maxLength: 80
                pattern: ^[A-Za-z0-9_]+$
                description: Stable machine-readable error code.
            required:
              - path
              - message
              - code
          maxItems: 50
        - type: object
          additionalProperties: false
          properties:
            formErrors:
              type: array
              items:
                type: string
                maxLength: 500
              maxItems: 50
              description: Validation messages that apply to the request as a whole.
            fieldErrors:
              type: object
              maxProperties: 50
              propertyNames:
                type: string
                minLength: 1
                maxLength: 160
                pattern: ^[A-Za-z0-9_.:-]{1,160}$
              additionalProperties:
                type: array
                items:
                  type: string
                  maxLength: 500
                maxItems: 50
              description: Validation messages grouped by bounded input field name.
          required: []
      title: Validation Error Details
      description: Bounded validation issues for an invalid request.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Qoory API key
      description: Use the HTTP authentication scheme with a Qoory API key.

````