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

# Video Products (Analytics)

> Retrieve the list of products featured in a TikTok video, with sales data and conversion metrics computed from analytics records.

<div className="inline-flex items-center gap-2 px-4 py-2 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg">
  <span className="text-base">🪙</span>
  <span className="text-sm font-medium text-yellow-900 dark:text-yellow-100"><span className="font-semibold">1 credit</span><span className="text-yellow-700 dark:text-yellow-300 ml-1">per request</span></span>
</div>

## Copy for AI

<div className="my-6 rounded-xl border border-gray-200 bg-gray-50 p-5 dark:border-gray-800 dark:bg-gray-900/40">
  <div className="min-w-0">
    <p className="text-base font-semibold text-gray-900 dark:text-gray-100">🤖 Why Code When AI Can Do It For You?</p>
    <p className="mt-1 text-sm text-gray-700 dark:text-gray-300">Stop writing code like it's 1970! Let AI do the heavy lifting - click the sparkles to copy a perfectly formatted prompt for ChatGPT, Claude, or your favorite AI assistant.</p>
  </div>

  <div className="mt-4">
    <button
      type="button"
      className="inline-flex items-center gap-2 rounded-md border border-emerald-300 bg-emerald-50 px-3 py-2 text-sm font-medium text-emerald-800 hover:bg-emerald-100 dark:border-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-100 dark:hover:bg-emerald-900/50"
      onClick={() => navigator.clipboard.writeText(`I want to make an API call to https://api.keyapi.ai/v1/tiktok/video/products/analytics.

Please help me write code to make this API call and handle the response appropriately. Include error handling and best practices.

Here are the details:

Endpoint: GET https://api.keyapi.ai/v1/tiktok/video/products/analytics

Description: Retrieve the list of products featured in a TikTok video, with sales data and conversion metrics computed from analytics records.

Required Headers:
--header 'Authorization: Bearer <YOUR_API_KEY>'

Parameters:
- video_ids (Required): Video ID, multiple can be entered, multiple use English commas to separate
- page_num (Required): Page numbers, starting from 1, maximum 100000
- page_size (Required): The maximum number of pages is 10.

Example Response:
{
"code": 0,
"message": "success",
"data": [
{
  "create_time": "1751301603",
  "data_size": "6728409",
  "duration": 164,
  "hash_tag": "#SmallBusiness #startup #proteinsnacks ",
  "height": "1024",
  "play_addr": "https://v19.tiktokcdn-us.com/f5db72cd55e7002f5920822ad800cb72/6901d1d5/video/tos/useast5/tos-useast5-ve-0068c003-tx/oYBvGxWaA9PvzG5yBvIHrggdyEbUixTQ4iEKi/?a=1233&bti=MzU8OGYpNHYpNzo5ZjEuLjpkLTptNDQwOg%3D%3D&ch=0&cr=13&dr=0&er=0&lr=all&net=0&cd=0%7C0%7C0%7C&cv=1&br=1558&bt=779&cs=0&ds=6&ft=WgSBMNdkVcy5Uxl7KStG-XD5SdHKLKPXt2.NheoyqF_4&mime_type=video_mp4&qs=0&rc=OWY5NDxlPDk5Omg3PDc6OEBpanV1Zms5cm1lNDMzZzczNEAtYi9eMTUyNWIxYzFhMS8yYSNwMV5tMmRrb2VhLS1kMS9zcw%3D%3D&vvpl=1&l=202510290232494D556438CDB21218AE73&btag=e00090000",
  "product_id": "1729422228922143703",
  "ratio": "540p",
  "reflow_cover": "https://echosell-images.tos-ap-southeast-1.volces.com/video-cover/836/7521783049722285367.jpeg",
  "region": "US",
  "total_comments_cnt": 3926,
  "total_digg_cnt": 920727,
  "total_favorites_cnt": 51447,
  "total_shares_cnt": 6213,
  "total_video_sale_cnt": 4479,
  "total_video_sale_gmv_amt": 133621.6,
  "total_views_cnt": 33635675,
  "user_id": "7190508362273735722",
  "video_desc": "he made our entire week FR 🥹 #SmallBusiness #startup #proteinsnacks ",
  "video_id": "7521783049722285367",
  "width": "576"
}
],
"requestId": "6c7b787e-3d4c-4e8d-be55-b760b1a73ba4"
}`)}
    >
      <span>✨</span>
      <span>Copy for AI</span>
    </button>
  </div>
</div>


## OpenAPI

````yaml en/tiktok.openapi.json GET /v1/tiktok/video/products/analytics
openapi: 3.0.1
info:
  title: Tiktok API english documentation
  description: >-
    The english reference documentation of the Tiktok API includes the
    interface's purpose, parameter description, response status, and sample
    structure.
  version: 1.0.0
servers:
  - url: https://api.keyapi.ai
    description: Production
security: []
tags:
  - name: TikTok Influencer
  - name: TikTok Shop
  - name: TikTok Content
  - name: TikTok Intelligence
paths:
  /v1/tiktok/video/products/analytics:
    get:
      tags:
        - TikTok Content
      summary: Video Products (Analytics)
      description: >-
        Retrieve the list of products featured in a TikTok video, with sales
        data and conversion metrics computed from analytics records.
      operationId: get_api_v3_echotik_video_product_list
      parameters:
        - name: video_ids
          in: query
          description: >-
            Video ID, multiple can be entered, multiple use English commas to
            separate
          required: true
          schema:
            type: string
        - name: page_num
          in: query
          description: Page numbers, starting from 1, maximum 100000
          required: true
          schema:
            type: integer
        - name: page_size
          in: query
          description: The maximum number of pages is 10.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  message:
                    type: string
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        create_time:
                          type: string
                        data_size:
                          type: string
                        duration:
                          type: integer
                        hash_tag:
                          type: string
                        height:
                          type: string
                        play_addr:
                          type: string
                        product_id:
                          type: string
                        ratio:
                          type: string
                        reflow_cover:
                          type: string
                        region:
                          type: string
                        total_comments_cnt:
                          type: integer
                        total_digg_cnt:
                          type: integer
                        total_favorites_cnt:
                          type: integer
                        total_shares_cnt:
                          type: integer
                        total_video_sale_cnt:
                          type: integer
                          title: Video sales (estimated)
                        total_video_sale_gmv_amt:
                          type: number
                          title: Video sales GMV (estimated)
                        total_views_cnt:
                          type: integer
                        user_id:
                          type: string
                        video_desc:
                          type: string
                        video_id:
                          type: string
                        width:
                          type: string
                  requestId:
                    type: string
                required:
                  - code
                  - message
                  - data
                  - requestId
                example:
                  code: 0
                  message: success
                  data:
                    - create_time: '1751301603'
                      data_size: '6728409'
                      duration: 164
                      hash_tag: '#SmallBusiness #startup #proteinsnacks '
                      height: '1024'
                      play_addr: >-
                        https://v19.tiktokcdn-us.com/f5db72cd55e7002f5920822ad800cb72/6901d1d5/video/tos/useast5/tos-useast5-ve-0068c003-tx/oYBvGxWaA9PvzG5yBvIHrggdyEbUixTQ4iEKi/?a=1233&bti=MzU8OGYpNHYpNzo5ZjEuLjpkLTptNDQwOg%3D%3D&ch=0&cr=13&dr=0&er=0&lr=all&net=0&cd=0%7C0%7C0%7C&cv=1&br=1558&bt=779&cs=0&ds=6&ft=WgSBMNdkVcy5Uxl7KStG-XD5SdHKLKPXt2.NheoyqF_4&mime_type=video_mp4&qs=0&rc=OWY5NDxlPDk5Omg3PDc6OEBpanV1Zms5cm1lNDMzZzczNEAtYi9eMTUyNWIxYzFhMS8yYSNwMV5tMmRrb2VhLS1kMS9zcw%3D%3D&vvpl=1&l=202510290232494D556438CDB21218AE73&btag=e00090000
                      product_id: '1729422228922143703'
                      ratio: 540p
                      reflow_cover: >-
                        https://echosell-images.tos-ap-southeast-1.volces.com/video-cover/836/7521783049722285367.jpeg
                      region: US
                      total_comments_cnt: 3926
                      total_digg_cnt: 920727
                      total_favorites_cnt: 51447
                      total_shares_cnt: 6213
                      total_video_sale_cnt: 4479
                      total_video_sale_gmv_amt: 133621.6
                      total_views_cnt: 33635675
                      user_id: '7190508362273735722'
                      video_desc: >-
                        he made our entire week FR 🥹 #SmallBusiness #startup
                        #proteinsnacks 
                      video_id: '7521783049722285367'
                      width: '576'
                  requestId: 6c7b787e-3d4c-4e8d-be55-b760b1a73ba4
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 400
                  data: null
                  message: 'Missing required parameter: handle'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 401
                  data: null
                  message: apiKey is null
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 402
                  data: null
                  message: apiKey quota is not enough
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 429
                  data: null
                  message: qps limit exceeded
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 500
                  data: null
                  message: Internal server error
      deprecated: false
      security:
        - JWT Bearer: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.keyapi.ai/v1/tiktok/video/products/analytics' \
              --header 'Authorization: Bearer <YOUR_API_KEY>'
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
                'https://api.keyapi.ai/v1/tiktok/video/products/analytics',
                params={},
                headers={'Authorization': 'Bearer <YOUR_API_KEY>'}
            )
            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const response = await
            fetch('https://api.keyapi.ai/v1/tiktok/video/products/analytics',
              {
                method: 'GET',
                headers: { 'Authorization': 'Bearer <YOUR_API_KEY>' }
              }
            );

            const data = await response.json();

            console.log(data);
components:
  securitySchemes:
    JWT Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |-
        API key for authentication. Format: `sk_live_xxxxxxxxxxxxx`
        Get your API key from the [Dashboard](http://keyapi.ai/app/dashboard).

````