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

# Rank market makers

> Staff rankings combine market volume/depth contribution, daily volume and depth relative to loan value, daily volume relative to FDV, and hourly target reliability. Shield-backed market makers rank before reported-only ones. Loan scores use fully covered assets and scale by their share of portfolio volume or depth. Non-staff rankings use liquidity-weighted target hit rates. The window must contain completed whole hours and span at most 366 days. Targets hit when at least 75% of hourly buckets pass, or a full UTC day range has all daily buckets and their average passes. `methodology` describes the weighting.



## OpenAPI

````yaml /openapi.yaml get /v2/organizations/market-maker-metrics/uptime/rankings/
openapi: 3.0.3
info:
  title: Glass Market API
  version: 1.0.0
  x-logo:
    url: https://api.glassmarkets.io/static/black.png
    backgroundColor: '#FFFFFF'
    altText: Glass Market API
  description: >

    Guides, a quickstart and code samples are at

    [docs.glassmarkets.io](https://docs.glassmarkets.io). The API serves the
    data

    behind the GlassMarkets app: market data collected from crypto exchanges,
    and

    market-making data for the assets your organizations work on. The

    [Authentication guide](https://docs.glassmarkets.io/guides/authentication)

    covers login: `POST /v1/login/` returns a token that goes on every request
    as

    `Authorization: Token <token>`.
servers:
  - url: https://api.glassmarkets.io
security: []
tags:
  - name: Authentication
    description: Log in, log out and read the current session.
  - name: Organizations
    description: Your organizations, and the assets, exchanges and pairs each one covers.
  - name: Reported metrics
    description: Volume, depth and spread that market makers report for their assets.
  - name: Trusted metrics
    description: >-
      Volume, depth and spread that Shield measures directly from market makers'
      exchange accounts.
  - name: Market maker metrics
    description: >-
      Market-maker volume, depth, spread, uptime and coverage, combining trusted
      and reported data.
  - name: Targets
    description: >-
      Market-making targets per asset, exchange and pair, and whether they are
      met.
  - name: Market data
    description: >-
      Exchange market data for your assets: volume, spread, order book depth,
      slippage, uptime, futures and more.
  - name: Leaderboard
    description: Trading pairs across exchanges, ranked by market data.
  - name: Loans
    description: Token loans to market makers for your assets.
  - name: RFQ
    description: >-
      Requests for quotes: a project invites market makers to propose
      market-making terms for its token.
  - name: Account
    description: Manage your password, passkeys and two-factor authentication.
externalDocs:
  url: https://docs.glassmarkets.io
  description: Guides, quickstart and code samples
paths:
  /v2/organizations/market-maker-metrics/uptime/rankings/:
    get:
      tags:
        - Market maker metrics
      summary: Rank market makers
      description: >-
        Staff rankings combine market volume/depth contribution, daily volume
        and depth relative to loan value, daily volume relative to FDV, and
        hourly target reliability. Shield-backed market makers rank before
        reported-only ones. Loan scores use fully covered assets and scale by
        their share of portfolio volume or depth. Non-staff rankings use
        liquidity-weighted target hit rates. The window must contain completed
        whole hours and span at most 366 days. Targets hit when at least 75% of
        hourly buckets pass, or a full UTC day range has all daily buckets and
        their average passes. `methodology` describes the weighting.
      operationId: v2_organizations_market_maker_metrics_uptime_rankings_get
      parameters:
        - in: query
          name: assets
          schema:
            type: array
            items:
              type: string
            maxItems: 100
          description: >-
            Comma seperated list of assets `<asset>,<asset>`.Defaults to all
            assets the user has access to if not provided.
        - in: query
          name: lookback
          schema:
            enum:
              - 30-minutes
              - 1-hour
              - 3-hours
              - 6-hours
              - 12-hours
              - 1-day
              - 7-days
              - 1-month
              - 3-months
              - 6-months
              - 1-year
            type: string
            minLength: 1
          description: |-
            * `30-minutes` - 30-minutes
            * `1-hour` - 1-hour
            * `3-hours` - 3-hours
            * `6-hours` - 6-hours
            * `12-hours` - 12-hours
            * `1-day` - 1-day
            * `7-days` - 7-days
            * `1-month` - 1-month
            * `3-months` - 3-months
            * `6-months` - 6-months
            * `1-year` - 1-year
        - in: query
          name: organizations
          schema:
            type: array
            items:
              type: string
            maxItems: 100
          description: >-
            Comma seperated list of organization slugs `<slug>,<slug>`.Defaults
            to all organizations the user is member of, if not
            provided.Available organizations are returned in the
            `/v1/organizations` endpoint.
        - in: query
          name: time_end
          schema:
            type: string
            format: date-time
            example: '2026-10-02T00:00:00Z'
        - in: query
          name: time_start
          schema:
            type: string
            format: date-time
            example: '2026-10-01T00:00:00Z'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OrganizationMarketMakerUptimeRankingsResponse
              examples:
                StaffRankings:
                  value:
                    time_start: '2026-09-30T00:00:00Z'
                    time_end: '2026-10-01T00:00:00Z'
                    methodology:
                      version: liquidity-loan-v1
                      score_weights:
                        volume_share: 0.25
                        depth_share: 0.2
                        volume_to_loan: 0.25
                        depth_to_loan: 0.15
                        volume_to_fdv: 0.05
                        hourly_uptime: 0.1
                      score_references:
                        volume_share: 0.01
                        depth_share: 0.01
                        volume_to_loan: 1
                        depth_to_loan: 0.1
                        volume_to_fdv: 0.01
                      loan_amount_unit: tokens
                      target_window_hours: 24
                      target_hit_ratio: 0.75
                      depth_bps: 100
                      volume_weight: 0.5
                      depth_weight: 0.5
                      missing_liquidity: >-
                        Missing components earn no points. Loan scores use fully
                        covered assets and scale by their share of portfolio
                        liquidity. Incomplete scores are provisional.
                    rankings:
                      - organization:
                          slug: example-mm
                          name: Example Market Maker
                        score: 52.5
                        component_scores:
                          volume_share: 50
                          depth_share: 50
                          volume_to_loan: 50
                          depth_to_loan: 50
                          volume_to_fdv: 50
                          hourly_uptime: 75
                        ratios:
                          volume_share: 0.01
                          depth_share: 0.01
                          volume_to_loan: 1
                          depth_to_loan: 0.1
                          volume_to_fdv: 0.01
                          hourly_uptime: 0.75
                        data_tier: shield
                        loan_value_usd: 7750000
                        loan_coverage: 1
                        provisional: false
                        hit_target_count: 13
                        target_count: 13
                        total_volume: 7750000
                        total_depth: 775000
                        assets:
                          - asset: ONDO
                            score: 100
                            hit_target_count: 13
                            target_count: 13
                            volume: 7750000
                            depth: 775000
                            volume_share: 1
                            depth_share: 1
                            weight: 1
                            hourly_uptime: 0.75
                            loan_value_usd: 7750000
                            loan_coverage: 1
                            fdv: 775000000
                        weighting:
                          volume_weight: 0.5
                          depth_weight: 0.5
                          equal_weight: 0
                        rank: 1
                  summary: Staff rankings
          description: ''
        '400':
          description: A field is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrors'
              examples:
                InvalidInput:
                  value:
                    assets:
                      - This field may not be blank.
        '401':
          $ref: '#/components/responses/ApiKeyUnauthorized'
        '403':
          $ref: '#/components/responses/ApiKeyForbidden'
      security:
        - metricsApiKeyAuth: []
        - tokenAuth: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z' \
              --header 'Authorization: ApiKey <key>'
        - lang: python
          label: Python
          source: >-
            import requests


            url =
            "https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z"


            headers = {"Authorization": "ApiKey <key>"}


            response = requests.get(url, headers=headers)


            print(response.text)
        - lang: javascript
          label: JavaScript
          source: >-
            const options = {method: 'GET', headers: {Authorization: 'ApiKey
            <key>'}};


            fetch('https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z',
            options)
              .then(res => res.json())
              .then(res => console.log(res))
              .catch(err => console.error(err));
        - lang: go
          label: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"Authorization\", \"ApiKey <key>\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}"
        - lang: java
          label: Java
          source: >-
            HttpResponse<String> response =
            Unirest.get("https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z")
              .header("Authorization", "ApiKey <key>")
              .asString();
components:
  schemas:
    OrganizationMarketMakerUptimeRankingsResponse:
      type: object
      properties:
        time_start:
          type: string
          format: date-time
        time_end:
          type: string
          format: date-time
        methodology:
          $ref: >-
            #/components/schemas/OrganizationMarketMakerUptimeRankingsMethodology
        rankings:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationMarketMakerUptimeRanking'
      required:
        - methodology
        - rankings
        - time_end
        - time_start
    ValidationErrors:
      type: object
      description: >-
        One entry per invalid field; `non_field_errors` covers the request as a
        whole. A field carries a list of messages or a single message; a nested
        field carries an object, or a list of objects, of the same shape.
      additionalProperties:
        anyOf:
          - type: array
            items:
              type: string
          - type: string
          - type: object
          - type: array
            items:
              type: object
    OrganizationMarketMakerUptimeRankingsMethodology:
      type: object
      properties:
        target_window_hours:
          type: integer
        target_hit_ratio:
          type: number
          format: double
        depth_bps:
          type: number
          format: double
        missing_liquidity:
          type: string
        volume_weight:
          type: number
          format: double
        depth_weight:
          type: number
          format: double
        version:
          type: string
        score_weights:
          type: object
          additionalProperties:
            type: number
            format: double
        score_references:
          type: object
          additionalProperties:
            type: number
            format: double
        loan_amount_unit:
          $ref: '#/components/schemas/LoanAmountUnitEnum'
      required:
        - depth_bps
        - depth_weight
        - missing_liquidity
        - target_hit_ratio
        - target_window_hours
        - volume_weight
    OrganizationMarketMakerUptimeRanking:
      type: object
      properties:
        rank:
          type: integer
        organization:
          $ref: '#/components/schemas/OrganizationTargetsOrganizationResponse'
        score:
          type: number
          format: double
        hit_target_count:
          type: integer
        target_count:
          type: integer
        total_volume:
          type: number
          format: double
        total_depth:
          type: number
          format: double
        component_scores:
          type: object
          additionalProperties:
            type: number
            format: double
            nullable: true
        ratios:
          type: object
          additionalProperties:
            type: number
            format: double
            nullable: true
        data_tier:
          $ref: '#/components/schemas/DataTierEnum'
        loan_value_usd:
          type: number
          format: double
          nullable: true
        loan_coverage:
          type: number
          format: double
        provisional:
          type: boolean
        weighting:
          type: object
          additionalProperties:
            type: number
            format: double
        assets:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationMarketMakerUptimeRankingAsset'
      required:
        - assets
        - hit_target_count
        - organization
        - rank
        - score
        - target_count
        - total_depth
        - total_volume
        - weighting
    ErrorDetail:
      type: object
      properties:
        detail:
          type: string
      required:
        - detail
    LoanAmountUnitEnum:
      enum:
        - tokens
      type: string
      description: '* `tokens` - tokens'
    OrganizationTargetsOrganizationResponse:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
      required:
        - name
        - slug
    DataTierEnum:
      enum:
        - shield
        - reported
      type: string
      description: |-
        * `shield` - shield
        * `reported` - reported
    OrganizationMarketMakerUptimeRankingAsset:
      type: object
      properties:
        asset:
          type: string
        score:
          type: number
          format: double
        hit_target_count:
          type: integer
        target_count:
          type: integer
        volume:
          type: number
          format: double
        depth:
          type: number
          format: double
        volume_share:
          type: number
          format: double
        depth_share:
          type: number
          format: double
        weight:
          type: number
          format: double
        hourly_uptime:
          type: number
          format: double
          nullable: true
        loan_value_usd:
          type: number
          format: double
          nullable: true
        loan_coverage:
          type: number
          format: double
        fdv:
          type: number
          format: double
          nullable: true
      required:
        - asset
        - depth
        - depth_share
        - hit_target_count
        - score
        - target_count
        - volume
        - volume_share
        - weight
  responses:
    ApiKeyUnauthorized:
      description: The token or API key is missing, invalid, expired or revoked.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDetail'
          examples:
            InvalidToken:
              value:
                detail: Invalid token.
            MissingToken:
              value:
                detail: Authentication credentials were not provided.
            InvalidApiKey:
              value:
                detail: Invalid or expired API key.
    ApiKeyForbidden:
      description: The API key does not have the scope this endpoint needs.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDetail'
          examples:
            MissingScope:
              value:
                detail: API key does not have access to this endpoint.
  securitySchemes:
    metricsApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Scoped API key with required prefix "ApiKey ". Available scopes:
        metrics:read, reported_metrics:write and mm_metrics:read.
      x-default: ApiKey <key>
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Token-based authentication with required prefix "Token ". Example:
        "Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
      x-default: Token <token>

````

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