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

# Performance score metrics

> Lists every Shop Performance Score metric for the shop. Each has `metricCode`, `metricName`, `dimension`, `value` and `valueUnit` (`PERCENT` or `HOURS`), `score` (0 to 5), `status`, TikTok's `benchmarks` (`excellentThreshold` and `poorThreshold`) and the evaluation window (`evaluateDurationDays`, `evaluationStartsAt`, `evaluationEndsAt`). `topReasonText` is set when TikTok marks the metric as a key contributor to the score.

`status` is `EXCELLENT`, `GOOD`, `POOR`, `CRITICAL` or `NIL`. `NIL` means there isn't enough data to score the metric, not a zero score. TikTok advises using `status` rather than comparing `value` to the thresholds yourself, since whether higher or lower is better depends on the metric. US shops only. `locale` localizes names and text. Read live from TikTok.



## OpenAPI

````yaml api-reference/tik-tok-shop-openapi.json GET /tik_tok_shop/shop_health/metrics
openapi: 3.0.3
info:
  title: 'Growi API: TikTok Shop'
  version: 1.0.0
  description: >-
    Generated by scripts/gen_tik_tok_shop.rb from Growi's TikTok Shop route
    table.
servers:
  - url: https://api.growi.io/api/public/v1
security:
  - bearerAuth: []
paths:
  /tik_tok_shop/shop_health/metrics:
    get:
      summary: Performance score metrics
      description: >-
        Lists every Shop Performance Score metric for the shop. Each has
        `metricCode`, `metricName`, `dimension`, `value` and `valueUnit`
        (`PERCENT` or `HOURS`), `score` (0 to 5), `status`, TikTok's
        `benchmarks` (`excellentThreshold` and `poorThreshold`) and the
        evaluation window (`evaluateDurationDays`, `evaluationStartsAt`,
        `evaluationEndsAt`). `topReasonText` is set when TikTok marks the metric
        as a key contributor to the score.


        `status` is `EXCELLENT`, `GOOD`, `POOR`, `CRITICAL` or `NIL`. `NIL`
        means there isn't enough data to score the metric, not a zero score.
        TikTok advises using `status` rather than comparing `value` to the
        thresholds yourself, since whether higher or lower is better depends on
        the metric. US shops only. `locale` localizes names and text. Read live
        from TikTok.
      parameters:
        - name: locale
          in: query
          required: false
          schema:
            type: string
            pattern: ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$
            example: en-US
          description: >-
            Passed to TikTok to localize names and texts. Absent = TikTok picks
            the default.
        - name: organization_id
          in: query
          required: false
          schema:
            type: integer
          description: >-
            Use the TikTok Shop of this child brand (organization id) of your
            API key's organization
      responses:
        '200':
          description: The metric list
          content:
            application/json:
              schema:
                type: object
                required:
                  - metrics
                properties:
                  metrics:
                    type: array
                    items:
                      type: object
                      properties:
                        metricCode:
                          type: string
                          nullable: true
                        dimension:
                          type: string
                          nullable: true
                        score:
                          type: string
                          nullable: true
                          description: 0 to 5, TikTok's decimal string.
                        status:
                          type: string
                          nullable: true
                          description: >-
                            EXCELLENT | GOOD | POOR | CRITICAL | NIL. NIL means
                            this metric has not enough data to be scored; it is
                            not a zero score.
                        statusText:
                          type: string
                          nullable: true
                        value:
                          type: string
                          nullable: true
                          description: TikTok's decimal string, in valueUnit.
                        valueUnit:
                          type: string
                          nullable: true
                          description: PERCENT or HOURS.
                        benchmarks:
                          type: object
                          nullable: true
                          description: >-
                            TikTok's own tier thresholds for this metric, in the
                            same unit as value. Higher is better for OTDR, lower
                            is better for the others.
                          properties:
                            excellentThreshold:
                              type: string
                              nullable: true
                            poorThreshold:
                              type: string
                              nullable: true
                        evaluateDurationDays:
                          type: integer
                          nullable: true
                        evaluationStartsAt:
                          type: string
                          nullable: true
                          format: date-time
                        evaluationEndsAt:
                          type: string
                          nullable: true
                          format: date-time
                        metricName:
                          type: string
                          nullable: true
                        topReasonText:
                          type: string
                          nullable: true
                          description: >-
                            Set when TikTok marks the metric a key contributor
                            to the score ("Top opportunity").
              example:
                metrics:
                  - metricCode: NRR
                    metricName: 60-day negative review rate
                    dimension: Product satisfaction
                    score: '4.7'
                    status: EXCELLENT
                    statusText: Excellent
                    value: '0.97'
                    valueUnit: PERCENT
                    topReasonText: null
                    benchmarks:
                      excellentThreshold: '0.02'
                      poorThreshold: '0.08'
                    evaluateDurationDays: 60
                    evaluationStartsAt: '2026-07-31T00:00:00.000Z'
                    evaluationEndsAt: '2026-09-29T00:00:00.000Z'
        '400':
          description: 'Invalid params: metric code or query value'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
        '403':
          description: >-
            The shop's TikTok authorization doesn't include this data (`code:
            scope_not_granted`), so the seller has to re-authorize the shop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
        '404':
          description: >-
            `organization_id` isn't an active child brand of your organization,
            or the record you asked for doesn't exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
        '422':
          description: >-
            No TikTok Shop is connected for this organization. A parent
            organization whose shops sit on its child brands has to pass
            `organization_id`. Also returned when the shop isn't connected
            through TikTok's official API (`code: unsupported_on_web_only_shop`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
        '429':
          description: >-
            Rate limited: one call every 2 seconds and an hourly cap per API
            key. See `Retry-After` and the `X-RateLimit-*` headers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
        '502':
          description: >-
            TikTok refused or failed. `error` is a fixed message and `code`
            names the failure when there is one
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokShopError'
components:
  schemas:
    TikTokShopError:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: What went wrong
        code:
          type: string
          description: Machine-readable reason, when there is one
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

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