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

# Profile videos

> Scrapes a public TikTok profile's videos by username (`handle`) or numeric user id (`userId`) — pass exactly one — up to 30 per page, sorted by `latest` (default; pinned videos first), `popular` (most viewed) or `oldest`. Each video comes with its description, created date, stats (views, likes, comments, shares, saves, reposts — TikTok rounds large view/like/comment/share counts; saves are exact), author, video details (duration, size, covers, play/download URLs, every rendition, subtitles) or photo-post images, music (with its TikTok sound page and Apple Music / Spotify links), hashtags, mentions, tagged place, effects, stickers, link anchors and flags. Pass the returned `cursor` — with the same `sortBy` — to get the next page; it is null on the last page.

**Downloading video files:** send the `Cookie` and `Referer` headers returned in `mediaHeaders` when requesting `video.playUrl`, `video.downloadUrl` or `video.formats[].url` (without them TikTok answers 403). Covers, photo images, music and subtitles need no headers. Media URLs expire within hours.

**Watermarks:** `playUrl` and every `formats[].url` are watermark-free; `downloadUrl` is TikTok’s download copy with the TikTok logo and @username burned in.

<Info>
  **Cost: 1 credit** per successful request. Errors and cache hits (`cache_max_age`) are free.
</Info>

<Accordion title="Copy for AI assistant" icon="sparkles">
  Paste this into ChatGPT, Claude or your coding assistant to generate working code for this endpoint (use the copy button).

  ```text Prompt
  I want to make an API call to /v1/tiktok/profile/videos. Here are the details:

  Endpoint: GET https://api.scraperize.com/v1/tiktok/profile/videos
  Description: Scrapes a public TikTok profile's videos by username (`handle`) or numeric user id (`userId`) — pass exactly one — up to 30 per page, sorted by `latest` (default; pinned videos first), `popular` (most viewed) or `oldest`. Each video comes with its description, created date, stats (views, likes, comments, shares, saves, reposts — TikTok rounds large view/like/comment/share counts; saves are exact), author, video details (duration, size, covers, play/download URLs, every rendition, subtitles) or photo-post images, music (with its TikTok sound page and Apple Music / Spotify links), hashtags, mentions, tagged place, effects, stickers, link anchors and flags. Pass the returned `cursor` — with the same `sortBy` — to get the next page; it is null on the last page.

  Required Headers:
  - x-api-key: Your API key

  Parameters:
  - handle (string): The TikTok username (with or without a leading @, or a tiktok.com/@username URL). Provide this or `userId`, not both.
  - userId (string): The account's numeric user id. Provide this or `handle`, not both.
  - sortBy (select): Order of the videos: `latest` (default), `popular` or `oldest`.
  - cursor (string): The `cursor` from the previous response (use the same `sortBy`). Omit for the first page.
  - cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.

  Example Response:
  {
    "data": {
      "profile": {
        "id": "127905465618821121",
        "secUid": "MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA",
        "handle": "khaby.lame",
        "nickname": "Khabane lame",
        "url": "https://www.tiktok.com/@khaby.lame",
        "videoCount": 1357
      },
      "sortBy": "latest",
      "videos": [
        {
          "id": "7691740195418377502",
          "url": "https://www.tiktok.com/@khaby.lame/video/7691740195418377502",
          "type": "video",
          "description": "Just give me 5 more minutes 😭#learnfromkhaby #comedy",
          "createdAt": "2026-10-01T16:40:54.000Z",
          "language": "en",
          "stats": {
            "playCount": 3000000,
            "likeCount": 322200,
            "commentCount": 5736,
            "shareCount": 21200,
            "collectCount": 14857,
            "repostCount": 0
          },
          "author": {
            "id": "127905465618821121",
            "secUid": "MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA",
            "handle": "khaby.lame",
            "nickname": "Khabane lame",
            "bio": "Se vuoi ridere sei nel posto giusto😎 If u wanna laugh u r in the right place😎",
            "avatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd…",
            "verified": true,
            "privateAccount": false,
            "stats": {
              "followerCount": 163000000,
              "followingCount": 81,
              "likeCount": 2700000000,
              "videoCount": 1357,
              "friendCount": 0,
              "diggCount": 6747
            }
          },
          "video": {
            "duration": 34,
            "width": 720,
            "height": 1280,
            "definition": "720p",
            "format": "mp4",
            "codec": "h264",
            "bitrate": 810352,
            "quality": "normal",
            "size": 3511766,
            "coverUrl": "https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/o0jRDQRMAbfFAlZX8eqGQcARBqerRfAHR7gVSU~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-si…",
            "originCoverUrl": "https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/oIegjRh1GgNRoeolAMLFUlG7tFebqrQgI0AVRf~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-si…",
            "dynamicCoverUrl": "https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/oIlgUgjnAAlBQ1otGLeVRqGFnif6oIRMReg7Ie~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-si…",
            "playUrl": "https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oYVBvkqAFowDQa0IgGyRS9fyEWEFejEqAQ0IGi/?a=1988&bti=ODszNWYuMDE6&&bt=791&ft=-Csk_mIUPD…",
            "downloadUrl": "https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/o0joqEI0ygDGAwA9QJlEB3qe0VFSRvWEEG4afT/?a=1988&bti=ODszNWYuMDE6&&bt=735&ft=-Csk_mIUPD…",
            "volume": {
              "loudness": -17.3,
              "peak": 0.54954
            },
            "formats": [
              {
                "gearName": "adapt_lowest_1080_1",
                "qualityType": 2,
                "codec": "h265_hvc1",
                "format": "mp4",
                "bitrate": 819957,
                "fps": 29,
                "width": 1080,
                "height": 1920,
                "size": 3553387,
                "url": "https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oEfqCGR1EyDvwe4E3kFy9QxZE0GqIAB0oWgVaA/?a=1988&bti=ODszNWYuMDE6&&bt=800&ft=-Csk_mIUPD…"
              }
            ],
            "subtitles": []
          },
          "photo": null,
          "music": {
            "id": "7691740326570019615",
            "title": "original sound",
            "url": "https://www.tiktok.com/music/original-sound-7691740326570019615",
            "authorName": "Khabane lame",
            "album": null,
            "duration": 34,
            "preciseDuration": null,
            "shootDuration": 34,
            "original": true,
            "isCopyrighted": false,
            "isCommerceMusic": true,
            "isUnlimitedMusic": false,
            "isPrivate": false,
            "coverUrl": "https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd…",
            "playUrl": "https://v58.tiktokcdn.com/video/tos/alisg/tos-alisg-v-2370c799-sg/ogcDFBGWoU0A8F0eIAAREf8XVjvDqICFsEDJAo/?a=1180&bti=ODszNWYuMDE6&&bt=125&ft=GcDrcInz7ThsnO-GXq8…",
            "streaming": []
          },
          "hashtags": [
            {
              "id": "1697657584273413",
              "name": "learnfromkhaby",
              "description": null
            }
          ],
          "mentions": [],
          "effects": [],
          "stickerTexts": [],
          "location": null,
          "contentCategory": {
            "id": 104,
            "name": "Comedy"
          },
          "anchors": [],
          "warnings": [],
          "playlistId": null,
          "isAd": false,
          "isPinned": false,
          "isPrivate": false,
          "isCommerce": false,
          "aigcDescription": null,
          "aigcLabelType": null,
          "duetEnabled": true,
          "stitchEnabled": true,
          "shareEnabled": true,
          "canRepost": true,
          "commentStatus": 0
        }
      ],
      "mediaHeaders": {
        "Cookie": "tt_chain_token=<session token returned by the API>",
        "Referer": "https://www.tiktok.com/"
      },
      "count": 30,
      "cursor": "1780067181000",
      "hasMore": true,
      "fetchedAt": "2026-10-05T14:44:27.454Z"
    },
    "meta": {
      "requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
      "creditsCharged": 1,
      "creditsRemaining": 4999,
      "cached": false
    }
  }

  Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
  ```
</Accordion>


## OpenAPI

````yaml /api-reference/openapi.json get /v1/tiktok/profile/videos
openapi: 3.0.3
info:
  title: Scraperize API
  version: 1.0.0
  description: >-
    Extract public data from social media platforms as clean JSON. Endpoints are
    split by platform and by what they return, e.g. `GET /v1/twitter/tweet`.


    ## Authentication

    Send your API key in the `x-api-key` header (or `Authorization: Bearer
    <key>`). Create keys in your dashboard.


    ## Credits

    Each successful live scrape costs **1 credit**. Credits are prepaid and
    never expire.


    ## Caching

    Every endpoint accepts an optional `cache_max_age`
    (`1d`|`3d`|`7d`|`14d`|`30d`). A cache hit within that window is returned for
    **0 credits**.


    ## Responses

    Success returns `{ "data": …, "meta": { "requestId", … } }`. Errors return
    `{ "error": { "code", "message", "requestId" } }` with a matching HTTP
    status. `meta` on a scrape carries `creditsCharged`, `creditsRemaining`,
    `cached`, and (on a hit) `cachedAt`.


    ## Rate limits

    Requests are limited per team per minute; over the limit returns `429` with
    a `Retry-After` header.
servers:
  - url: https://api.scraperize.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Twitter
    description: Twitter / X scraping endpoints
  - name: Facebook
    description: Facebook scraping endpoints
  - name: Linkme
    description: Linkme (link.me) scraping endpoints
  - name: Amazon
    description: Amazon (creator shop / storefront) scraping endpoints
  - name: Linkbio
    description: Linkbio (lnk.bio) scraping endpoints
  - name: Pillar
    description: Pillar (pillar.io) scraping endpoints
  - name: Komi
    description: Komi (komi.io) scraping endpoints
  - name: Linktree
    description: Linktree (linktr.ee) scraping endpoints
  - name: Kick
    description: Kick (kick.com) scraping endpoints
  - name: Snapchat
    description: Snapchat (snapchat.com) scraping endpoints
  - name: Telegram
    description: Telegram (t.me) scraping endpoints
  - name: LinkedIn
    description: LinkedIn scraping endpoints
  - name: Twitch
    description: Twitch scraping endpoints
  - name: TikTok
    description: TikTok (tiktok.com) scraping endpoints
paths:
  /v1/tiktok/profile/videos:
    get:
      tags:
        - TikTok
      summary: Profile videos
      description: >-
        Scrapes a public TikTok profile's videos by username (`handle`) or
        numeric user id (`userId`) — pass exactly one — up to 30 per page,
        sorted by `latest` (default; pinned videos first), `popular` (most
        viewed) or `oldest`. Each video comes with its description, created
        date, stats (views, likes, comments, shares, saves, reposts — TikTok
        rounds large view/like/comment/share counts; saves are exact), author,
        video details (duration, size, covers, play/download URLs, every
        rendition, subtitles) or photo-post images, music (with its TikTok sound
        page and Apple Music / Spotify links), hashtags, mentions, tagged place,
        effects, stickers, link anchors and flags. Pass the returned `cursor` —
        with the same `sortBy` — to get the next page; it is null on the last
        page.


        **Downloading video files:** send the `Cookie` and `Referer` headers
        returned in `mediaHeaders` when requesting `video.playUrl`,
        `video.downloadUrl` or `video.formats[].url` (without them TikTok
        answers 403). Covers, photo images, music and subtitles need no headers.
        Media URLs expire within hours.


        **Watermarks:** `playUrl` and every `formats[].url` are watermark-free;
        `downloadUrl` is TikTok’s download copy with the TikTok logo and
        @username burned in.
      parameters:
        - name: handle
          in: query
          required: false
          description: >-
            The TikTok username (with or without a leading @, or a
            tiktok.com/@username URL). Provide this or `userId`, not both.
          schema:
            type: string
          example: khaby.lame
        - name: userId
          in: query
          required: false
          description: The account's numeric user id. Provide this or `handle`, not both.
          schema:
            type: string
            pattern: ^\d{1,20}$
        - name: sortBy
          in: query
          required: false
          description: 'Order of the videos: `latest` (default), `popular` or `oldest`.'
          schema:
            type: string
            enum:
              - latest
              - popular
              - oldest
            default: latest
        - name: cursor
          in: query
          required: false
          description: >-
            The `cursor` from the previous response (use the same `sortBy`).
            Omit for the first page.
          schema:
            type: string
        - name: cache_max_age
          in: query
          required: false
          description: >-
            Optional. Return a cached result if one this age or newer exists —
            served for **0 credits** with `meta.cached=true` and
            `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and
            refreshes the cache. Omit to always scrape fresh.
          schema:
            type: string
            enum:
              - 1d
              - 3d
              - 7d
              - 14d
              - 30d
          example: 7d
      responses:
        '200':
          description: One page of the profile's videos.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      profile:
                        type: object
                      sortBy:
                        type: string
                        enum:
                          - latest
                          - popular
                          - oldest
                      videos:
                        type: array
                        items:
                          type: object
                      mediaHeaders:
                        type: object
                        nullable: true
                        description: >-
                          Send these headers when downloading video files
                          (playUrl / downloadUrl / formats[].url); TikTok
                          returns 403 without them.
                        properties:
                          Cookie:
                            type: string
                          Referer:
                            type: string
                      count:
                        type: integer
                      cursor:
                        type: string
                        nullable: true
                      hasMore:
                        type: boolean
                      fetchedAt:
                        type: string
                        format: date-time
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  profile:
                    id: '127905465618821121'
                    secUid: >-
                      MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA
                    handle: khaby.lame
                    nickname: Khabane lame
                    url: https://www.tiktok.com/@khaby.lame
                    videoCount: 1357
                  sortBy: latest
                  videos:
                    - id: '7691740195418377502'
                      url: >-
                        https://www.tiktok.com/@khaby.lame/video/7691740195418377502
                      type: video
                      description: 'Just give me 5 more minutes 😭#learnfromkhaby #comedy'
                      createdAt: '2026-10-01T16:40:54.000Z'
                      language: en
                      stats:
                        playCount: 3000000
                        likeCount: 322200
                        commentCount: 5736
                        shareCount: 21200
                        collectCount: 14857
                        repostCount: 0
                      author:
                        id: '127905465618821121'
                        secUid: >-
                          MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA
                        handle: khaby.lame
                        nickname: Khabane lame
                        bio: >-
                          Se vuoi ridere sei nel posto giusto😎 If u wanna laugh
                          u r in the right place😎
                        avatarUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd5&x-expires=1791381600&x-signature=ubxmRlSLaZrwcOyNvPFj9vaOuqM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        verified: true
                        privateAccount: false
                        stats:
                          followerCount: 163000000
                          followingCount: 81
                          likeCount: 2700000000
                          videoCount: 1357
                          friendCount: 0
                          diggCount: 6747
                      video:
                        duration: 34
                        width: 720
                        height: 1280
                        definition: 720p
                        format: mp4
                        codec: h264
                        bitrate: 810352
                        quality: normal
                        size: 3511766
                        coverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/o0jRDQRMAbfFAlZX8eqGQcARBqerRfAHR7gVSU~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=mtbfdZ9pWZCN7sp%2B3P8d8xXs2qw%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        originCoverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/oIegjRh1GgNRoeolAMLFUlG7tFebqrQgI0AVRf~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=EtrtNPJWfBQIQ7OeSamGe70udMI%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        dynamicCoverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/oIlgUgjnAAlBQ1otGLeVRqGFnif6oIRMReg7Ie~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=kDJVMnelcc2%2BHyBG8FcVST3FM6M%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        playUrl: >-
                          https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oYVBvkqAFowDQa0IgGyRS9fyEWEFejEqAQ0IGi/?a=1988&bti=ODszNWYuMDE6&&bt=791&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=Ozo7NjU4aTkzOTNlODVmM0BpM2Uzb3Q5cmk7ZDMzaTczNEA0Yi4uLWAwNTExXmMwLTRjYSNhM18zMmRjbXNhLS1kMTJzcw%3D%3D&expire=1791384298&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=220245be9152310c74a8ae089e1a9a2d&tk=tt_chain_token&btag=e00088000
                        downloadUrl: >-
                          https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/o0joqEI0ygDGAwA9QJlEB3qe0VFSRvWEEG4afT/?a=1988&bti=ODszNWYuMDE6&&bt=735&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=OTgzN2ZkOTo0Ojk3NmRlaUBpM2Uzb3Q5cmk7ZDMzaTczNEBhMjVfYS5iXmAxYmEtLTFfYSNhM18zMmRjbXNhLS1kMTJzcw%3D%3D&expire=1791384298&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=037bbd6941d2b81569fea6c7662c4497&tk=tt_chain_token&btag=e00088000
                        volume:
                          loudness: -17.3
                          peak: 0.54954
                        formats:
                          - gearName: adapt_lowest_1080_1
                            qualityType: 2
                            codec: h265_hvc1
                            format: mp4
                            bitrate: 819957
                            fps: 29
                            width: 1080
                            height: 1920
                            size: 3553387
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oEfqCGR1EyDvwe4E3kFy9QxZE0GqIAB0oWgVaA/?a=1988&bti=ODszNWYuMDE6&&bt=800&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=Ozo3ZTZpOWQ8ZjxmOjQ8NEBpM2Uzb3Q5cmk7ZDMzaTczNEBeLi82LjQuNS4xNGBjXjFfYSNhM18zMmRjbXNhLS1kMTJzcw%3D%3D&expire=1791384298&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=e619ccd3d6a7910c268277f738464814&tk=tt_chain_token&btag=e00088000
                          - gearName: normal_720_0
                            qualityType: 10
                            codec: h264
                            format: mp4
                            bitrate: 810352
                            fps: 29
                            width: 720
                            height: 1280
                            size: 3511766
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oYVBvkqAFowDQa0IgGyRS9fyEWEFejEqAQ0IGi/?a=1988&bti=ODszNWYuMDE6&&bt=791&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=Ozo7NjU4aTkzOTNlODVmM0BpM2Uzb3Q5cmk7ZDMzaTczNEA0Yi4uLWAwNTExXmMwLTRjYSNhM18zMmRjbXNhLS1kMTJzcw%3D%3D&expire=1791384298&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=220245be9152310c74a8ae089e1a9a2d&tk=tt_chain_token&btag=e00088000
                          - gearName: adapt_lower_720_1
                            qualityType: 14
                            codec: h265_hvc1
                            format: mp4
                            bitrate: 498141
                            fps: 29
                            width: 720
                            height: 1280
                            size: 2158760
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oYfq9GRlEuDvwewEGkFy9QHhE0EqIAB0oWgVaA/?a=1988&bti=ODszNWYuMDE6&&bt=486&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=OWc8NzhmNWllOTQ7Ojs6NEBpM2Uzb3Q5cmk7ZDMzaTczNEBfYDIyNDIvXjUxYjAuNDAuYSNhM18zMmRjbXNhLS1kMTJzcw%3D%3D&expire=1791384298&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=dcee6bf0e958620af718ef6f129e4342&tk=tt_chain_token&btag=e00088000
                        subtitles: []
                      photo: null
                      music:
                        id: '7691740326570019615'
                        title: original sound
                        url: >-
                          https://www.tiktok.com/music/original-sound-7691740326570019615
                        authorName: Khabane lame
                        album: null
                        duration: 34
                        preciseDuration: null
                        shootDuration: 34
                        original: true
                        isCopyrighted: false
                        isCommerceMusic: true
                        isUnlimitedMusic: false
                        isPrivate: false
                        coverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd5&x-expires=1791381600&x-signature=ubxmRlSLaZrwcOyNvPFj9vaOuqM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        playUrl: >-
                          https://v58.tiktokcdn.com/video/tos/alisg/tos-alisg-v-2370c799-sg/ogcDFBGWoU0A8F0eIAAREf8XVjvDqICFsEDJAo/?a=1180&bti=ODszNWYuMDE6&&bt=125&ft=GcDrcInz7ThsnO-GXq8Zmo&mime_type=audio_mpeg&rc=M3hmanQ5cjg7ZDMzaTU8NEBpM3hmanQ5cjg7ZDMzaTU8NEBjMGgyMmRzbnNhLS1kMTJzYSNjMGgyMmRzbnNhLS1kMTJzcw%3D%3D&vvpl=1&l=20261005224424CC93FFEA156288A9BB86&VExpiration=1791297898&VSignature=tz8n7vV4Dsh3n74IxpssuA&btag=e00048000&sp_exp=hash_v0
                        streaming: []
                      hashtags:
                        - id: '1697657584273413'
                          name: learnfromkhaby
                          description: null
                        - id: '1606334392378370'
                          name: comedy
                          description: null
                      mentions: []
                      effects: []
                      stickerTexts: []
                      location: null
                      contentCategory:
                        id: 104
                        name: Comedy
                      anchors: []
                      warnings: []
                      playlistId: null
                      isAd: false
                      isPinned: false
                      isPrivate: false
                      isCommerce: false
                      aigcDescription: null
                      aigcLabelType: null
                      duetEnabled: true
                      stitchEnabled: true
                      shareEnabled: true
                      canRepost: true
                      commentStatus: 0
                    - id: '7689510970292489502'
                      url: >-
                        https://www.tiktok.com/@khaby.lame/video/7689510970292489502
                      type: video
                      description: 'Ye… I’m gonna mind my business #learnfromkhaby #comedy'
                      createdAt: '2026-09-25T16:30:18.000Z'
                      language: en
                      stats:
                        playCount: 6900000
                        likeCount: 836300
                        commentCount: 18000
                        shareCount: 46600
                        collectCount: 41732
                        repostCount: 0
                      author:
                        id: '127905465618821121'
                        secUid: >-
                          MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA
                        handle: khaby.lame
                        nickname: Khabane lame
                        bio: >-
                          Se vuoi ridere sei nel posto giusto😎 If u wanna laugh
                          u r in the right place😎
                        avatarUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd5&x-expires=1791381600&x-signature=ubxmRlSLaZrwcOyNvPFj9vaOuqM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        verified: true
                        privateAccount: false
                        stats:
                          followerCount: 163000000
                          followingCount: 81
                          likeCount: 2700000000
                          videoCount: 1357
                          friendCount: 0
                          diggCount: 6747
                      video:
                        duration: 26
                        width: 720
                        height: 1280
                        definition: 720p
                        format: mp4
                        codec: h264
                        bitrate: 901767
                        quality: normal
                        size: 2941227
                        coverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/okAC2FovEtZZDosYRffBq2EiAVEYEiGIuqyVIN~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=sUDrImihFhwcHJsTCC%2Bfq1y3NGo%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        originCoverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/o4EzVwREIEAfZIy2AqIAfNZoVBFEuotDqsYvKi~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=at9YRpK9H1r%2B%2BepBQaqh2RPCsmI%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        dynamicCoverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/okE1VxREIEAfZIK2AqjAfNZoVBFEuotDq4iv6i~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=l38IJeipkeb7J0eX9kx606ZybBE%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        playUrl: >-
                          https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oseqRRGFRfG2rtCIvQLSfQn2QaFeIAFEocgUzA/?a=1988&bti=ODszNWYuMDE6&&bt=880&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=ZjkzZmg6NThmaGdkOmc3ZEBpamhwaWs5cmVkZDMzaTczNEAyNWBiNTBfXzQxYjYxXi01YSMzZW4zMmRzL29hLS1kMTJzcw%3D%3D&expire=1791384290&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=87ec8c913ae81eef05428acc849ae506&tk=tt_chain_token&btag=e000b8000
                        downloadUrl: >-
                          https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/o4Ih2qoECBqCXARfiVEAuFEEEoD8utQ3ZfNvaV/?a=1988&bti=ODszNWYuMDE6&&bt=793&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=aTpoZ2dpO2ZmOjczPGVnM0BpamhwaWs5cmVkZDMzaTczNEAzYzYwL2JgXjAxYF8vXzQxYSMzZW4zMmRzL29hLS1kMTJzcw%3D%3D&expire=1791384290&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=88d52de3d0f4077391b73dac71c0abd2&tk=tt_chain_token&btag=e000b8000
                        volume:
                          loudness: -26
                          peak: 0.44157
                        formats:
                          - gearName: adapt_lowest_1080_1
                            qualityType: 2
                            codec: h265_hvc1
                            format: mp4
                            bitrate: 1296170
                            fps: 29
                            width: 1080
                            height: 1920
                            size: 4227622
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/ogCtVIvEDVLEqBpuAEfbARQCoFZfEqEEZiNRh2/?a=1988&bti=ODszNWYuMDE6&&bt=1265&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=ZjdnNjNoaTw8Ozo6NjQ2ZEBpamhwaWs5cmVkZDMzaTczNEBhYF4tYjIuNWAxLjZjMjZfYSMzZW4zMmRzL29hLS1kMTJzcw%3D%3D&expire=1791384290&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=3b6662ec2a159e77400b784095a9657a&tk=tt_chain_token&btag=e000b8000
                          - gearName: normal_720_0
                            qualityType: 10
                            codec: h264
                            format: mp4
                            bitrate: 901767
                            fps: 29
                            width: 720
                            height: 1280
                            size: 2941227
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oseqRRGFRfG2rtCIvQLSfQn2QaFeIAFEocgUzA/?a=1988&bti=ODszNWYuMDE6&&bt=880&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=ZjkzZmg6NThmaGdkOmc3ZEBpamhwaWs5cmVkZDMzaTczNEAyNWBiNTBfXzQxYjYxXi01YSMzZW4zMmRzL29hLS1kMTJzcw%3D%3D&expire=1791384290&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=87ec8c913ae81eef05428acc849ae506&tk=tt_chain_token&btag=e000b8000
                          - gearName: adapt_lower_720_1
                            qualityType: 14
                            codec: h265_hvc1
                            format: mp4
                            bitrate: 739981
                            fps: 29
                            width: 720
                            height: 1280
                            size: 2413542
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oISEEdDXFCuvtp2uTRYNABoEZiVIEVQfAqqfrE/?a=1988&bti=ODszNWYuMDE6&&bt=722&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=Zjg4ZmZkOmg3Mzg4ZGhnNUBpamhwaWs5cmVkZDMzaTczNEBeYTNfM2NeNmExYF81YjUyYSMzZW4zMmRzL29hLS1kMTJzcw%3D%3D&expire=1791384290&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=cb1923bebdcd20ac688a85a04597faca&tk=tt_chain_token&btag=e000b8000
                        subtitles: []
                      photo: null
                      music:
                        id: '7689511071434001182'
                        title: original sound
                        url: >-
                          https://www.tiktok.com/music/original-sound-7689511071434001182
                        authorName: Khabane lame
                        album: null
                        duration: 26
                        preciseDuration: null
                        shootDuration: 26
                        original: true
                        isCopyrighted: false
                        isCommerceMusic: true
                        isUnlimitedMusic: false
                        isPrivate: false
                        coverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd5&x-expires=1791381600&x-signature=ubxmRlSLaZrwcOyNvPFj9vaOuqM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        playUrl: >-
                          https://v16m.tiktokcdn.com/e4951a034b779c602b5b4bc94cc68b9c/6ac50962/video/tos/alisg/tos-alisg-v-2370c799-sg/oQnra2lAUIQVCEABoaCPAZAxiRAMrjAxhqiPE/?a=1180&bti=ODszNWYuMDE6&&bt=125&ft=GcDrcInz7ThsnO-GXq8Zmo&mime_type=audio_mpeg&rc=am4zdGs5cjpkZDMzaTU8NEBpam4zdGs5cjpkZDMzaTU8NEA0ZGRlMmQ0MG9hLS1kMTJzYSM0ZGRlMmQ0MG9hLS1kMTJzcw%3D%3D&vvpl=1&l=20261005224424CC93FFEA156288A9BB86&btag=e00078000&sp_exp=hash_v0
                        streaming:
                          - service: spotify
                            serviceCode: 3
                            songId: 10HcMbkDjONKEmSaLEPdYy
                            url: >-
                              https://open.spotify.com/track/10HcMbkDjONKEmSaLEPdYy
                      hashtags:
                        - id: '1697657584273413'
                          name: learnfromkhaby
                          description: null
                        - id: '1606334392378370'
                          name: comedy
                          description: null
                      mentions: []
                      effects: []
                      stickerTexts: []
                      location: null
                      contentCategory:
                        id: 104
                        name: Comedy
                      anchors: []
                      warnings: []
                      playlistId: null
                      isAd: false
                      isPinned: false
                      isPrivate: false
                      isCommerce: false
                      aigcDescription: null
                      aigcLabelType: null
                      duetEnabled: true
                      stitchEnabled: true
                      shareEnabled: true
                      canRepost: true
                      commentStatus: 0
                    - id: '7688786985896381727'
                      url: >-
                        https://www.tiktok.com/@khaby.lame/video/7688786985896381727
                      type: video
                      description: >-
                        Landing in a new country without worrying about WiFi?
                        It’s so simple with @Holafly | eSIM holafly🤲🏿 🌍 📶 
                        #Holafly
                      createdAt: '2026-09-23T17:40:45.000Z'
                      language: en
                      stats:
                        playCount: 4600000
                        likeCount: 303500
                        commentCount: 5802
                        shareCount: 1613
                        collectCount: 17301
                        repostCount: 0
                      author:
                        id: '127905465618821121'
                        secUid: >-
                          MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA
                        handle: khaby.lame
                        nickname: Khabane lame
                        bio: >-
                          Se vuoi ridere sei nel posto giusto😎 If u wanna laugh
                          u r in the right place😎
                        avatarUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd5&x-expires=1791381600&x-signature=ubxmRlSLaZrwcOyNvPFj9vaOuqM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        verified: true
                        privateAccount: false
                        stats:
                          followerCount: 163000000
                          followingCount: 81
                          likeCount: 2700000000
                          videoCount: 1357
                          friendCount: 0
                          diggCount: 6747
                      video:
                        duration: 23
                        width: 720
                        height: 1280
                        definition: 720p
                        format: mp4
                        codec: h264
                        bitrate: 643190
                        quality: normal
                        size: 1883583
                        coverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/ooDAqEIe8ADNAiAcEyCECUI0NVFxRtrEKAWOfA~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=8hbRRD3hikm5XFabkNjndzDwMAM%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        originCoverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/ogj0Q6FeOHVRBzAoEBDAQxthRFqAHBVEnAEEfZ~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=WZ%2BsqpfV1cjaO0D89OHigqWG84U%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        dynamicCoverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-useast8-p-0068-tx2/ooDAqEIe8ADNAiAcEyCECUI0NVFxRtrEKAWOfA~tplv-tiktokx-origin.image?dr=14575&x-expires=1791381600&x-signature=8hbRRD3hikm5XFabkNjndzDwMAM%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=my2
                        playUrl: >-
                          https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/o8Hy0A01AVguEEIqetFfEBA5zDXlx6QFRDDhER/?a=1988&bti=ODszNWYuMDE6&&bt=628&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=OmQ5OTszNDVoZTxoNjk7ZkBpanM8O2o5cm4zZDMzaTczNEBfNC5fXy4wXjAxMTMuMV5eYSNyaHBlMmRjbG5hLS1kMTJzcw%3D%3D&expire=1791384287&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=dbcd6a1c74bc6559a47f99e1ad00c654&tk=tt_chain_token&btag=e000b8000
                        downloadUrl: >-
                          https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oMiBiiAiaIowGIQAigCWZYEgn9DoBfHAq4c1j0/?a=1988&bti=ODszNWYuMDE6&&bt=568&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=OmRmNDtnNWc7ZjlpZDU4O0BpanM8O2o5cm4zZDMzaTczNEAyMGMvMjU0NS0xYy8wXl4uYSNyaHBlMmRjbG5hLS1kMTJzcw%3D%3D&expire=1791384287&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=1e591885b5b6ecde942482f27dd0c23b&tk=tt_chain_token&btag=e000b8000
                        volume:
                          loudness: -19.1
                          peak: 0.53703
                        formats:
                          - gearName: normal_720_0
                            qualityType: 10
                            codec: h264
                            format: mp4
                            bitrate: 643190
                            fps: 29
                            width: 720
                            height: 1280
                            size: 1883583
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/o8Hy0A01AVguEEIqetFfEBA5zDXlx6QFRDDhER/?a=1988&bti=ODszNWYuMDE6&&bt=628&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=OmQ5OTszNDVoZTxoNjk7ZkBpanM8O2o5cm4zZDMzaTczNEBfNC5fXy4wXjAxMTMuMV5eYSNyaHBlMmRjbG5hLS1kMTJzcw%3D%3D&expire=1791384287&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=dbcd6a1c74bc6559a47f99e1ad00c654&tk=tt_chain_token&btag=e000b8000
                          - gearName: adapt_lowest_1080_1
                            qualityType: 2
                            codec: h265_hvc1
                            format: mp4
                            bitrate: 610619
                            fps: 29
                            width: 1080
                            height: 1920
                            size: 1788276
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oYAqBpfDER8F0VkAxA7Qt6FaRxHEDEghEfOIzV/?a=1988&bti=ODszNWYuMDE6&&bt=596&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=ZDU0ZmU2Omg0ZDM2MzdpNUBpanM8O2o5cm4zZDMzaTczNEAtLzFfLTAxXi4xMTMvYTQtYSNyaHBlMmRjbG5hLS1kMTJzcw%3D%3D&expire=1791384287&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=b9ed403987a270516e46678cd5e8f481&tk=tt_chain_token&btag=e000b8000
                          - gearName: adapt_lower_720_1
                            qualityType: 14
                            codec: h265_hvc1
                            format: mp4
                            bitrate: 439839
                            fps: 29
                            width: 720
                            height: 1280
                            size: 1288124
                            url: >-
                              https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oMNtVQRIDEwxABkzAEf6ADgd0FFHCqEErh6Rep/?a=1988&bti=ODszNWYuMDE6&&bt=429&ft=-Csk_mIUPD12NbPEon-Uxxl5PY6e3wv25dcAp&mime_type=video_mp4&rc=aTxkNzZoZmY6NWU7ZDdlZ0BpanM8O2o5cm4zZDMzaTczNEAuY2MwMmFjXjExX2EzYDMyYSNyaHBlMmRjbG5hLS1kMTJzcw%3D%3D&expire=1791384287&l=20261005224424CC93FFEA156288A9BB86&ply_type=2&policy=2&signature=39b8c26860b66622abb8a27b9d74ae2b&tk=tt_chain_token&btag=e000b8000
                        subtitles: []
                      photo: null
                      music:
                        id: '7688787050765601567'
                        title: original sound
                        url: >-
                          https://www.tiktok.com/music/original-sound-7688787050765601567
                        authorName: Khabane lame
                        album: null
                        duration: 23
                        preciseDuration: null
                        shootDuration: 23
                        original: true
                        isCopyrighted: false
                        isCommerceMusic: true
                        isUnlimitedMusic: false
                        isPrivate: false
                        coverUrl: >-
                          https://p16-common-sign.tiktokcdn.com/tos-maliva-avt-0068/08987e23b94057953fd4f1738694bf5f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=14579&refresh_token=b1663fd5&x-expires=1791381600&x-signature=ubxmRlSLaZrwcOyNvPFj9vaOuqM%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my2
                        playUrl: >-
                          https://v16m.tiktokcdn.com/e2db7d28eb4e663832ad925fb128369a/6ac5095f/video/tos/alisg/tos-alisg-v-2370c799-sg/og6DFCETBonAWC40EAAxEfeeqDaPVEEqFI0TAM/?a=1180&bti=ODszNWYuMDE6&&bt=125&ft=GcDrcInz7ThsnO-GXq8Zmo&mime_type=audio_mpeg&rc=M2U8d205cjozZDMzaTU8NEBpM2U8d205cjozZDMzaTU8NEBjaDVoMmRrcm5hLS1kMTJzYSNjaDVoMmRrcm5hLS1kMTJzcw%3D%3D&vvpl=1&l=20261005224424CC93FFEA156288A9BB86&btag=e00078000&sp_exp=hash_v0
                        streaming: []
                      hashtags:
                        - id: '7061434867367542789'
                          name: holafly
                          description: null
                      mentions:
                        - userId: '7468625921563264023'
                          handle: holafly
                          secUid: >-
                            MS4wLjABAAAAQH7VbmH3mQGzxPzffrovPpX0MeajR8HUpLb0ZbcrGnazmSKOL2oMZ_uVWX6zTOaV
                      effects: []
                      stickerTexts: []
                      location: null
                      contentCategory:
                        id: 120
                        name: General
                      anchors: []
                      warnings: []
                      playlistId: null
                      isAd: true
                      isPinned: false
                      isPrivate: false
                      isCommerce: false
                      aigcDescription: null
                      aigcLabelType: null
                      duetEnabled: true
                      stitchEnabled: true
                      shareEnabled: true
                      canRepost: true
                      commentStatus: 0
                  mediaHeaders:
                    Cookie: tt_chain_token=<session token returned by the API>
                    Referer: https://www.tiktok.com/
                  count: 30
                  cursor: '1780067181000'
                  hasMore: true
                  fetchedAt: '2026-10-05T14:44:27.454Z'
                meta:
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  creditsCharged: 1
                  creditsRemaining: 4999
                  cached: false
        '400':
          description: Invalid cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: BAD_REQUEST
                  message: The request was invalid.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '401':
          description: Missing, invalid, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UNAUTHORIZED
                  message: API key required — pass it in the `x-api-key` header.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '402':
          description: Not enough credits for this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: INSUFFICIENT_CREDITS
                  message: >-
                    This request costs 1 credit, but your balance is 0. Top up
                    to continue.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '404':
          description: >-
            No such account (unknown username or id, banned, unavailable) or a
            private account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: NOT_FOUND
                  message: >-
                    The requested content was not found (it may not exist, be
                    deleted, or be private).
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '422':
          description: >-
            Invalid query parameters (neither or both of handle/userId, a
            malformed value, or an unknown sortBy).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: VALIDATION_ERROR
                  message: Request validation failed
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  details:
                    - path: url
                      message: Required
        '429':
          description: Over the per-minute rate limit — honour `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: RATE_LIMITED
                  message: >-
                    Rate limit exceeded — max 100 requests per 60s. Retry in
                    ~30s.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '503':
          description: >-
            Temporarily unavailable — retry after `Retry-After`. `error.code`
            tells you why: `UPSTREAM_BLOCKED` (the source blocked this request),
            `EXTRACTION_FAILED` (the source returned unexpected data),
            `PLATFORM_UNAVAILABLE` (the source is down), or
            `SERVICE_UNAVAILABLE` (we are at capacity).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UPSTREAM_BLOCKED
                  message: >-
                    The source is temporarily unavailable. Please try again
                    shortly.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: NOT_FOUND
            message:
              type: string
              example: The requested content was not found.
            requestId:
              type: string
              example: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
            details:
              type: array
              items:
                type: object
              description: Present on validation errors.
          required:
            - code
            - message
            - requestId
      required:
        - error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your API key. Send it in the `x-api-key` header (or `Authorization:
        Bearer <key>`). Create and manage keys from your dashboard.

````

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