"openapi": "3.1.0"
"info":
  "title": "TokPortal Public API"
  "version": "2026-05-25"
  "description": "Non-breaking public API contract for TokPortal developer integrations. This spec is the first generated surface for SDKs, CLI, MCP, and docs."
"servers":
  -
    "url": "https://app.tokportal.com/api/ext"
    "description": "Production"
"security":
  -
    "ApiKeyAuth": []
"tags":
  -
    "name": "Profile"
  -
    "name": "Reference"
  -
    "name": "Credits"
  -
    "name": "Bundles"
  -
    "name": "Account Configuration"
  -
    "name": "Videos"
  -
    "name": "Accounts"
  -
    "name": "Uploads"
  -
    "name": "Analytics"
  -
    "name": "Comments"
  -
    "name": "Webhooks"
"paths":
  "/me":
    "get":
      "operationId": "getCurrentUser"
      "summary": "Get authenticated user"
      "tags":
        - "Profile"
      "security":
        -
          "ApiKeyAuth": []
      "responses":
        "200":
          "description": "Authenticated user profile and credit balance."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/MeResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/me\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/me', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/me',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/me\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/countries":
    "get":
      "operationId": "listCountries"
      "summary": "List available countries"
      "tags":
        - "Reference"
      "security": []
      "responses":
        "200":
          "description": "Enabled country codes available for account creation."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/countries\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/countries', {\n  method: 'GET',\n  headers: {\n    \n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/countries',\n    headers={}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/countries\", nil)\nresp, err := http.DefaultClient.Do(req)"
  "/platforms":
    "get":
      "operationId": "listPlatforms"
      "summary": "List available platforms"
      "tags":
        - "Reference"
      "security": []
      "responses":
        "200":
          "description": "Supported social platforms."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/platforms\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/platforms', {\n  method: 'GET',\n  headers: {\n    \n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/platforms',\n    headers={}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/platforms\", nil)\nresp, err := http.DefaultClient.Do(req)"
  "/credit-costs":
    "get":
      "operationId": "getCreditCosts"
      "summary": "Get credit pricing"
      "tags":
        - "Credits"
      "security": []
      "responses":
        "200":
          "description": "Current credit cost table."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/credit-costs\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/credit-costs', {\n  method: 'GET',\n  headers: {\n    \n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/credit-costs',\n    headers={}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/credit-costs\", nil)\nresp, err := http.DefaultClient.Do(req)"
  "/credits/balance":
    "get":
      "operationId": "getCreditBalance"
      "summary": "Get credit balance"
      "tags":
        - "Credits"
      "security":
        -
          "ApiKeyAuth": []
      "responses":
        "200":
          "description": "Current credit balance."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/credits/balance\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/credits/balance', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/credits/balance',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/credits/balance\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/credits/history":
    "get":
      "operationId": "listCreditTransactions"
      "summary": "List credit transactions"
      "tags":
        - "Credits"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
      "responses":
        "200":
          "description": "Paginated credit transaction history."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/credits/history?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/credits/history?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/credits/history?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/credits/history?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles":
    "get":
      "operationId": "listBundles"
      "summary": "List bundles"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
        -
          "name": "status"
          "in": "query"
          "required": false
          "description": "Filter by bundle status."
          "schema":
            "type": "string"
        -
          "name": "bundle_type"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "account_only"
              - "account_and_videos"
              - "videos_only"
        -
          "name": "platform"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "tiktok"
              - "instagram"
        -
          "name": "external_ref"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "account_status"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
      "responses":
        "200":
          "description": "Paginated bundle list."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/bundles?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/bundles?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/bundles?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "post":
      "operationId": "createBundle"
      "summary": "Create a bundle"
      "description": "Creates an account-only, account-and-videos, or videos-only bundle. Credit cost is calculated server-side."
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/CreateBundleRequest"
      "responses":
        "201":
          "description": "Bundle created."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/CreateBundleResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid request body or business rule violation."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Insufficient credits."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Duplicate or invalid state."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "429":
          "description": "Create rate limit exceeded."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"bundle_type\": \"account_only\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"bundle_type\": \"account_only\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"bundle_type\": \"account_only\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles\", strings.NewReader(\"{\\n  \\\"bundle_type\\\": \\\"account_only\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/bulk":
    "post":
      "operationId": "createBundlesBulk"
      "summary": "Create bundles in bulk"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/CreateBulkBundlesRequest"
      "responses":
        "201":
          "description": "Bulk bundle creation result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid request body or business rule violation."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Insufficient credits."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "429":
          "description": "Create rate limit exceeded."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/bulk\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"platforms\": [\n    \"tiktok\"\n  ],\n  \"country\": \"USA\",\n  \"accounts_count\": 25\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/bulk', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"platforms\": [\n    \"tiktok\"\n  ],\n  \"country\": \"USA\",\n  \"accounts_count\": 25\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/bulk',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"platforms\": [\n        \"tiktok\"\n      ],\n      \"country\": \"USA\",\n      \"accounts_count\": 25\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/bulk\", strings.NewReader(\"{\\n  \\\"platforms\\\": [\\n    \\\"tiktok\\\"\\n  ],\\n  \\\"country\\\": \\\"USA\\\",\\n  \\\"accounts_count\\\": 25\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}":
    "get":
      "operationId": "getBundle"
      "summary": "Get a bundle"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Bundle details."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "patch":
      "operationId": "updateBundle"
      "summary": "Update bundle settings"
      "description": "Updates mutable bundle metadata such as title, external_ref, and auto_finalize_videos."
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/PatchBundleRequest"
      "responses":
        "200":
          "description": "Bundle updated."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid patch body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "403":
          "description": "Bundle belongs to another account."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Duplicate external_ref."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X PATCH \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"auto_finalize_videos\": false,\n  \"external_ref\": \"external_ref\",\n  \"title\": \"Launch campaign\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'PATCH',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"auto_finalize_videos\": false,\n  \"external_ref\": \"external_ref\",\n  \"title\": \"Launch campaign\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'PATCH',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"auto_finalize_videos\": false,\n      \"external_ref\": \"external_ref\",\n      \"title\": \"Launch campaign\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"PATCH\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", strings.NewReader(\"{\\n  \\\"auto_finalize_videos\\\": false,\\n  \\\"external_ref\\\": \\\"external_ref\\\",\\n  \\\"title\\\": \\\"Launch campaign\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/publish":
    "post":
      "operationId": "publishBundle"
      "summary": "Publish a bundle"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Publish result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Insufficient credits."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Bundle is not ready or is in an invalid state."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/publish-readiness":
    "get":
      "operationId": "getBundlePublishReadiness"
      "summary": "Check bundle publish readiness"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Readiness blockers and ready flag."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish-readiness\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish-readiness', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish-readiness',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/publish-readiness\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/unpublish":
    "post":
      "operationId": "unpublishBundle"
      "summary": "Unpublish a bundle"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Unpublish result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Bundle is in an invalid state."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/unpublish\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/unpublish', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/unpublish',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/unpublish\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/add-video-slots":
    "post":
      "operationId": "addVideoSlots"
      "summary": "Add video slots to a bundle"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/QuantityRequest"
      "responses":
        "200":
          "description": "Created video slots."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid quantity or bundle type."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Insufficient credits."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-video-slots\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"quantity\": 1\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-video-slots', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"quantity\": 1\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-video-slots',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"quantity\": 1\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-video-slots\", strings.NewReader(\"{\\n  \\\"quantity\\\": 1\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/add-edit-slots":
    "post":
      "operationId": "addEditSlots"
      "summary": "Add edit slots to a bundle"
      "tags":
        - "Bundles"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/QuantityRequest"
      "responses":
        "200":
          "description": "Created edit slots."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid quantity."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Insufficient credits."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-edit-slots\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"quantity\": 1\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-edit-slots', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"quantity\": 1\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-edit-slots',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"quantity\": 1\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/add-edit-slots\", strings.NewReader(\"{\\n  \\\"quantity\\\": 1\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/account":
    "get":
      "operationId": "getBundleAccount"
      "summary": "Get bundle account configuration"
      "tags":
        - "Account Configuration"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Account configuration."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Bundle or account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "put":
      "operationId": "configureBundleAccount"
      "summary": "Configure bundle account profile"
      "tags":
        - "Account Configuration"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/ConfigureAccountRequest"
      "responses":
        "200":
          "description": "Configured account."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid account profile."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Account status does not allow configuration."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X PUT \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"username\": \"username\",\n  \"visible_name\": \"visible_name\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account', {\n  method: 'PUT',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"username\": \"username\",\n  \"visible_name\": \"visible_name\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'PUT',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"username\": \"username\",\n      \"visible_name\": \"visible_name\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"PUT\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account\", strings.NewReader(\"{\\n  \\\"username\\\": \\\"username\\\",\\n  \\\"visible_name\\\": \\\"visible_name\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/account/corrections":
    "post":
      "operationId": "requestBundleAccountCorrections"
      "summary": "Request account corrections"
      "description": "Moves an in-review account back to pending corrections with reviewer feedback."
      "tags":
        - "Account Configuration"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/AccountCorrectionsRequest"
      "responses":
        "200":
          "description": "Account corrections requested."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid correction body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Account is not in review."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/corrections\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"comment\": \"Please review this item.\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/corrections', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"comment\": \"Please review this item.\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/corrections',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"comment\": \"Please review this item.\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/corrections\", strings.NewReader(\"{\\n  \\\"comment\\\": \\\"Please review this item.\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/account/finalize":
    "post":
      "operationId": "finalizeBundleAccount"
      "summary": "Finalize account review"
      "description": "Approves an in-review account and marks it finalized."
      "tags":
        - "Account Configuration"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Account finalized."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Account is not in review."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/finalize\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/finalize', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/finalize',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/account/finalize\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos":
    "get":
      "operationId": "listBundleVideos"
      "summary": "List bundle video slots"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Video slots for the bundle."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}":
    "get":
      "operationId": "getBundleVideo"
      "summary": "Get video slot configuration"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "responses":
        "200":
          "description": "Video slot configuration."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "put":
      "operationId": "configureBundleVideo"
      "summary": "Configure a video slot"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/ConfigureVideoRequest"
      "responses":
        "200":
          "description": "Configured video slot."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid video metadata."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Video status does not allow configuration."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X PUT \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"video_type\": \"video\",\n  \"description\": \"Campaign content description.\",\n  \"target_publish_date\": \"target_publish_date\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1', {\n  method: 'PUT',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"video_type\": \"video\",\n  \"description\": \"Campaign content description.\",\n  \"target_publish_date\": \"target_publish_date\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'PUT',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"video_type\": \"video\",\n      \"description\": \"Campaign content description.\",\n      \"target_publish_date\": \"target_publish_date\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"PUT\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1\", strings.NewReader(\"{\\n  \\\"video_type\\\": \\\"video\\\",\\n  \\\"description\\\": \\\"Campaign content description.\\\",\\n  \\\"target_publish_date\\\": \\\"target_publish_date\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
    "patch":
      "operationId": "patchBundleVideo"
      "summary": "Patch video references"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/PatchVideoRequest"
      "responses":
        "200":
          "description": "Patched video slot."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid patch body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X PATCH \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"external_ref\": \"external_ref\",\n  \"name\": \"name\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1', {\n  method: 'PATCH',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"external_ref\": \"external_ref\",\n  \"name\": \"name\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'PATCH',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"external_ref\": \"external_ref\",\n      \"name\": \"name\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"PATCH\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1\", strings.NewReader(\"{\\n  \\\"external_ref\\\": \\\"external_ref\\\",\\n  \\\"name\\\": \\\"name\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/batch":
    "put":
      "operationId": "batchConfigureBundleVideos"
      "summary": "Configure video slots in bulk"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/BatchConfigureVideosRequest"
      "responses":
        "200":
          "description": "Batch video configuration result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid batch body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X PUT \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/batch\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"videos\": [\n    {\n      \"video_type\": \"video\",\n      \"description\": \"Campaign content description.\",\n      \"target_publish_date\": \"target_publish_date\",\n      \"position\": 1\n    }\n  ]\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/batch', {\n  method: 'PUT',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"videos\": [\n    {\n      \"video_type\": \"video\",\n      \"description\": \"Campaign content description.\",\n      \"target_publish_date\": \"target_publish_date\",\n      \"position\": 1\n    }\n  ]\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'PUT',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/batch',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"videos\": [\n        {\n          \"video_type\": \"video\",\n          \"description\": \"Campaign content description.\",\n          \"target_publish_date\": \"target_publish_date\",\n          \"position\": 1\n        }\n      ]\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"PUT\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/batch\", strings.NewReader(\"{\\n  \\\"videos\\\": [\\n    {\\n      \\\"video_type\\\": \\\"video\\\",\\n      \\\"description\\\": \\\"Campaign content description.\\\",\\n      \\\"target_publish_date\\\": \\\"target_publish_date\\\",\\n      \\\"position\\\": 1\\n    }\\n  ]\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/publish-all":
    "post":
      "operationId": "publishAllBundleVideos"
      "summary": "Publish all configured videos on an active bundle"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Published video slots."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Bundle status does not allow publishing videos."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/publish-all\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/publish-all', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/publish-all',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/publish-all\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/import-csv":
    "post":
      "operationId": "importBundleVideosCsv"
      "summary": "Import video slots from CSV"
      "description": "Uploads a CSV file, downloads referenced media, and configures available video slots."
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "multipart/form-data":
            "schema":
              "type": "object"
              "required":
                - "file"
              "properties":
                "file":
                  "type": "string"
                  "format": "binary"
                "auto_publish":
                  "type": "boolean"
                  "default": false
      "responses":
        "200":
          "description": "CSV import result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid CSV or upload body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/import-csv\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -F \"file=@/path/to/file\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/import-csv', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/import-csv',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/import-csv\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}/publish":
    "post":
      "operationId": "publishBundleVideo"
      "summary": "Publish one video slot"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "responses":
        "200":
          "description": "Video slot published."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Bundle or video status does not allow publishing."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/publish\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/publish', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/publish',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/publish\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}/reset":
    "post":
      "operationId": "resetBundleVideo"
      "summary": "Reset one video slot"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "responses":
        "200":
          "description": "Video slot reset."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Video status does not allow reset."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/reset\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/reset', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/reset',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/reset\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}/unschedule":
    "post":
      "operationId": "unscheduleBundleVideo"
      "summary": "Unschedule one video slot"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "responses":
        "200":
          "description": "Video slot unscheduled."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Video status does not allow unscheduling."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/unschedule\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/unschedule', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/unschedule',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/unschedule\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}/finalize":
    "post":
      "operationId": "finalizeBundleVideo"
      "summary": "Finalize video review"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "responses":
        "200":
          "description": "Video slot finalized."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Video is not in review."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/finalize\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/finalize', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/finalize',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/finalize\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}/corrections":
    "post":
      "operationId": "requestBundleVideoCorrections"
      "summary": "Request video corrections"
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/VideoCorrectionsRequest"
      "responses":
        "200":
          "description": "Video corrections requested."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid correction body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Video is not in review."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/corrections\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"comment\": \"Please review this item.\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/corrections', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"comment\": \"Please review this item.\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/corrections',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"comment\": \"Please review this item.\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/corrections\", strings.NewReader(\"{\\n  \\\"comment\\\": \\\"Please review this item.\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/bundles/{id}/videos/{position}/fix-download":
    "post":
      "operationId": "fixBundleVideoDownload"
      "summary": "Fix a broken video download"
      "description": "Replaces a manager-flagged broken video or carousel download URL and clears the download issue flag."
      "tags":
        - "Videos"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Bundle ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "position"
          "in": "path"
          "required": true
          "description": "1-based video slot position."
          "schema":
            "type": "integer"
            "minimum": 1
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/FixVideoDownloadRequest"
      "responses":
        "200":
          "description": "Video download issue fixed."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid replacement media body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle or video slot not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Video does not have a download issue."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/fix-download\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '\"value\"'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/fix-download', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify(\"value\")\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/fix-download',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json=\"value\"\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/bundles/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/videos/1/fix-download\", strings.NewReader(\"\\\"value\\\"\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/accounts":
    "get":
      "operationId": "listAccounts"
      "summary": "List delivered accounts"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
      "responses":
        "200":
          "description": "Paginated delivered account list."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}":
    "get":
      "operationId": "getAccount"
      "summary": "Get a delivered account"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Delivered account details."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/bundles":
    "get":
      "operationId": "listAccountBundles"
      "summary": "List bundles for a delivered account"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
        -
          "name": "status"
          "in": "query"
          "required": false
          "description": "Filter by bundle status."
          "schema":
            "type": "string"
      "responses":
        "200":
          "description": "Paginated bundles for account."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/bundles?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/bundles?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/bundles?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/bundles?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/verification-code":
    "post":
      "operationId": "retrieveAccountVerificationCode"
      "summary": "Retrieve latest account verification code"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Verification code result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Owning fee required."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Account or verification code not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verification-code\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verification-code', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verification-code',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verification-code\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/reveal-credentials":
    "post":
      "operationId": "revealAccountCredentials"
      "summary": "Reveal delivered account credentials"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Credentials reveal result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Owning fee required."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/reveal-credentials\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/reveal-credentials', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/reveal-credentials',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/reveal-credentials\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/analytics/can-refresh":
    "get":
      "operationId": "canRefreshAccountAnalytics"
      "summary": "Check analytics refresh availability"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Manual refresh availability."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/can-refresh\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/can-refresh', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/can-refresh',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/can-refresh\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/analytics/refresh":
    "post":
      "operationId": "refreshAccountAnalytics"
      "summary": "Refresh account analytics"
      "description": "Backward-compatible account analytics refresh path. Supports forced refresh and post import options."
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/RefreshAnalyticsRequest"
      "responses":
        "200":
          "description": "Refresh result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "429":
          "description": "Manual refresh cooldown active."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "502":
          "description": "Refresh provider failed."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/refresh\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"force\": false,\n  \"includePosts\": false,\n  \"includeComments\": false,\n  \"forcePosts\": false\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/refresh', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"force\": false,\n  \"includePosts\": false,\n  \"includeComments\": false,\n  \"forcePosts\": false\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/refresh',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"force\": false,\n      \"includePosts\": false,\n      \"includeComments\": false,\n      \"forcePosts\": false\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/refresh\", strings.NewReader(\"{\\n  \\\"force\\\": false,\\n  \\\"includePosts\\\": false,\\n  \\\"includeComments\\\": false,\\n  \\\"forcePosts\\\": false\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/edit-request":
    "get":
      "operationId": "getAccountEditRequest"
      "summary": "Get active account edit request"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Active edit request."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "post":
      "operationId": "createAccountEditRequest"
      "summary": "Request profile edits for a delivered account"
      "tags":
        - "Accounts"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/AccountEditRequest"
      "responses":
        "201":
          "description": "Edit request created."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid edit request."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "An active edit request already exists."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"requested_username\": \"requested_username\",\n  \"requested_visible_name\": \"requested_visible_name\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"requested_username\": \"requested_username\",\n  \"requested_visible_name\": \"requested_visible_name\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"requested_username\": \"requested_username\",\n      \"requested_visible_name\": \"requested_visible_name\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/edit-request\", strings.NewReader(\"{\\n  \\\"requested_username\\\": \\\"requested_username\\\",\\n  \\\"requested_visible_name\\\": \\\"requested_visible_name\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/webhooks/events":
    "get":
      "operationId": "listWebhookEvents"
      "summary": "List webhook event catalog"
      "description": "Returns the supported webhook event types, delivery envelope, signature scheme, and example payloads. This endpoint is public so teams can inspect webhook contracts before creating an API key."
      "tags":
        - "Webhooks"
      "security": []
      "responses":
        "200":
          "description": "Supported webhook events and delivery contract."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/WebhookEventsResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/webhooks/events\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/events', {\n  method: 'GET',\n  headers: {\n    \n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/webhooks/events',\n    headers={}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/webhooks/events\", nil)\nresp, err := http.DefaultClient.Do(req)"
  "/webhooks":
    "get":
      "operationId": "listWebhookEndpoints"
      "summary": "List webhook endpoints"
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
        -
          "name": "enabled"
          "in": "query"
          "required": false
          "description": "Filter by enabled state."
          "schema":
            "type": "boolean"
        -
          "name": "event"
          "in": "query"
          "required": false
          "description": "Filter endpoints subscribed to an event."
          "schema":
            "type": "string"
      "responses":
        "200":
          "description": "Paginated webhook endpoint list."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/webhooks?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/webhooks?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/webhooks?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "post":
      "operationId": "createWebhookEndpoint"
      "summary": "Create a webhook endpoint"
      "description": "Creates a webhook endpoint and returns its signing secret once. Store the secret to verify TokPortal webhook signatures."
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/CreateWebhookEndpointRequest"
      "responses":
        "201":
          "description": "Webhook endpoint created."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid webhook endpoint."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Endpoint already exists."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/webhooks\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"url\": \"https://example.com/resource\",\n  \"events\": [\n    \"webhook.test\"\n  ]\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"url\": \"https://example.com/resource\",\n  \"events\": [\n    \"webhook.test\"\n  ]\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/webhooks',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"url\": \"https://example.com/resource\",\n      \"events\": [\n        \"webhook.test\"\n      ]\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/webhooks\", strings.NewReader(\"{\\n  \\\"url\\\": \\\"https://example.com/resource\\\",\\n  \\\"events\\\": [\\n    \\\"webhook.test\\\"\\n  ]\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/webhooks/{id}":
    "get":
      "operationId": "getWebhookEndpoint"
      "summary": "Get a webhook endpoint"
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Webhook endpoint ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Webhook endpoint details."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Webhook endpoint not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "patch":
      "operationId": "updateWebhookEndpoint"
      "summary": "Update a webhook endpoint"
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Webhook endpoint ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/UpdateWebhookEndpointRequest"
      "responses":
        "200":
          "description": "Webhook endpoint updated."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid webhook endpoint patch."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Webhook endpoint not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X PATCH \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"url\": \"https://example.com/resource\",\n  \"events\": [\n    \"webhook.test\"\n  ],\n  \"description\": \"Campaign content description.\",\n  \"enabled\": false\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'PATCH',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"url\": \"https://example.com/resource\",\n  \"events\": [\n    \"webhook.test\"\n  ],\n  \"description\": \"Campaign content description.\",\n  \"enabled\": false\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'PATCH',\n    'https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"url\": \"https://example.com/resource\",\n      \"events\": [\n        \"webhook.test\"\n      ],\n      \"description\": \"Campaign content description.\",\n      \"enabled\": false\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"PATCH\", \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", strings.NewReader(\"{\\n  \\\"url\\\": \\\"https://example.com/resource\\\",\\n  \\\"events\\\": [\\n    \\\"webhook.test\\\"\\n  ],\\n  \\\"description\\\": \\\"Campaign content description.\\\",\\n  \\\"enabled\\\": false\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
    "delete":
      "operationId": "deleteWebhookEndpoint"
      "summary": "Delete a webhook endpoint"
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Webhook endpoint ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "204":
          "description": "Webhook endpoint deleted."
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Webhook endpoint not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X DELETE \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'DELETE',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'DELETE',\n    'https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"DELETE\", \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/webhooks/{id}/deliveries":
    "get":
      "operationId": "listWebhookDeliveries"
      "summary": "List webhook deliveries"
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Webhook endpoint ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
        -
          "name": "event_type"
          "in": "query"
          "required": false
          "description": "Filter by event type."
          "schema":
            "type": "string"
        -
          "name": "success"
          "in": "query"
          "required": false
          "description": "Filter by delivery success."
          "schema":
            "type": "boolean"
      "responses":
        "200":
          "description": "Paginated delivery attempts for the webhook endpoint."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Webhook endpoint not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/webhooks/{id}/deliveries/{delivery_id}/retry":
    "post":
      "operationId": "retryWebhookDelivery"
      "summary": "Retry a webhook delivery"
      "description": "Resends the stored webhook payload to the endpoint's current URL with a fresh TokPortal-Signature header. The event ID is preserved so receivers can keep idempotent processing."
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Webhook endpoint ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "delivery_id"
          "in": "path"
          "required": true
          "description": "Webhook delivery ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Retry delivery result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Webhook endpoint or delivery not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Webhook endpoint is disabled or payload is unavailable."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/retry\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/retry', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/retry',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/deliveries/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/retry\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/webhooks/{id}/test":
    "post":
      "operationId": "testWebhookEndpoint"
      "summary": "Send a test webhook"
      "description": "Sends a signed webhook.test event to the endpoint and records the delivery result."
      "tags":
        - "Webhooks"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Webhook endpoint ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Test delivery result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Webhook endpoint not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/test\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/test', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/test',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/webhooks/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/test\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/upload/video":
    "post":
      "operationId": "uploadVideo"
      "summary": "Create a video upload URL"
      "tags":
        - "Uploads"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/UploadVideoRequest"
      "responses":
        "200":
          "description": "Presigned video upload URL."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid upload request."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/upload/video\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"filename\": \"media.mp4\",\n  \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/upload/video', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"filename\": \"media.mp4\",\n  \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/upload/video',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"filename\": \"media.mp4\",\n      \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/upload/video\", strings.NewReader(\"{\\n  \\\"filename\\\": \\\"media.mp4\\\",\\n  \\\"bundle_id\\\": \\\"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/upload/video/direct":
    "post":
      "operationId": "uploadVideoDirect"
      "summary": "Upload a video file directly"
      "description": "Uploads multipart/form-data directly through TokPortal and returns the public video URL."
      "tags":
        - "Uploads"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "multipart/form-data":
            "schema":
              "type": "object"
              "required":
                - "file"
                - "bundle_id"
              "properties":
                "file":
                  "type": "string"
                  "format": "binary"
                "bundle_id":
                  "type": "string"
                  "format": "uuid"
      "responses":
        "200":
          "description": "Uploaded video URL."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid upload."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/upload/video/direct\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -F \"file=@/path/to/file\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/upload/video/direct', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/upload/video/direct',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/upload/video/direct\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/upload/image":
    "post":
      "operationId": "uploadImage"
      "summary": "Create an image upload URL"
      "tags":
        - "Uploads"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/UploadImageRequest"
      "responses":
        "200":
          "description": "Signed image upload URL."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid upload request."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/upload/image\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"filename\": \"media.mp4\",\n  \"content_type\": \"video/mp4\",\n  \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/upload/image', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"filename\": \"media.mp4\",\n  \"content_type\": \"video/mp4\",\n  \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/upload/image',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"filename\": \"media.mp4\",\n      \"content_type\": \"video/mp4\",\n      \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/upload/image\", strings.NewReader(\"{\\n  \\\"filename\\\": \\\"media.mp4\\\",\\n  \\\"content_type\\\": \\\"video/mp4\\\",\\n  \\\"bundle_id\\\": \\\"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/upload/image/direct":
    "post":
      "operationId": "uploadImageDirect"
      "summary": "Upload an image file directly"
      "description": "Uploads multipart/form-data directly through TokPortal and returns storage details. HEIF/HEIC may be converted to JPEG."
      "tags":
        - "Uploads"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "multipart/form-data":
            "schema":
              "type": "object"
              "required":
                - "file"
                - "bundle_id"
              "properties":
                "file":
                  "type": "string"
                  "format": "binary"
                "bundle_id":
                  "type": "string"
                  "format": "uuid"
                "purpose":
                  "type": "string"
                  "enum":
                    - "carousel"
                    - "profile_picture"
                  "default": "carousel"
      "responses":
        "200":
          "description": "Uploaded image URL."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid upload."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/upload/image/direct\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -F \"file=@/path/to/file\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/upload/image/direct', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/upload/image/direct',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/upload/image/direct\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/upload/image/from-url":
    "post":
      "operationId": "uploadImageFromUrl"
      "summary": "Import an image from URL"
      "description": "Fetches a public direct image URL and stores it permanently in TokPortal storage."
      "tags":
        - "Uploads"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/UploadImageFromUrlRequest"
      "responses":
        "200":
          "description": "Stored image details."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid image URL or request body."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Bundle not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/upload/image/from-url\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"url\": \"https://example.com/resource\",\n  \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/upload/image/from-url', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"url\": \"https://example.com/resource\",\n  \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/upload/image/from-url',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"url\": \"https://example.com/resource\",\n      \"bundle_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/upload/image/from-url\", strings.NewReader(\"{\\n  \\\"url\\\": \\\"https://example.com/resource\\\",\\n  \\\"bundle_id\\\": \\\"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/analytics":
    "get":
      "operationId": "getAnalyticsDashboard"
      "summary": "Get analytics dashboard"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "responses":
        "200":
          "description": "Analytics dashboard data."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/contract":
    "get":
      "operationId": "getAnalyticsContract"
      "summary": "Get analytics data contract"
      "description": "Returns the Analytics v2 contract, current access payload, metric semantics, freshness targets, and redaction rules."
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "responses":
        "200":
          "description": "Analytics contract and access payload."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/contract\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/contract', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/contract',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/contract\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/export/videos":
    "get":
      "operationId": "exportAnalyticsVideos"
      "summary": "Export analytics videos CSV"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "account"
          "in": "query"
          "required": false
          "description": "Repeatable account filter."
          "schema":
            "type": "string"
        -
          "name": "workspace"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "platform"
          "in": "query"
          "required": false
          "description": "Repeatable platform filter."
          "schema":
            "type": "string"
            "enum":
              - "tiktok"
              - "instagram"
        -
          "name": "country"
          "in": "query"
          "required": false
          "description": "Repeatable country filter."
          "schema":
            "type": "string"
        -
          "name": "q"
          "in": "query"
          "required": false
          "description": "Search query."
          "schema":
            "type": "string"
        -
          "name": "from"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date"
        -
          "name": "to"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date"
      "responses":
        "200":
          "description": "CSV export of analytics video rows."
          "content":
            "text/csv":
              "schema":
                "type": "string"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/export/videos?account=example&workspace=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/export/videos?account=example&workspace=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/export/videos?account=example&workspace=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/export/videos?account=example&workspace=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/export/reports":
    "post":
      "operationId": "createAnalyticsReport"
      "summary": "Create analytics web report"
      "description": "Creates a shareable Analytics v2 web report and returns its token and URL."
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/CreateAnalyticsReportRequest"
      "responses":
        "200":
          "description": "Created analytics report."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid report request."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/analytics/export/reports\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"title\": \"Launch campaign\",\n  \"template\": \"template\",\n  \"brandName\": \"brandName\",\n  \"brandAccent\": \"brandAccent\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/export/reports', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"title\": \"Launch campaign\",\n  \"template\": \"template\",\n  \"brandName\": \"brandName\",\n  \"brandAccent\": \"brandAccent\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/analytics/export/reports',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"title\": \"Launch campaign\",\n      \"template\": \"template\",\n      \"brandName\": \"brandName\",\n      \"brandAccent\": \"brandAccent\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/analytics/export/reports\", strings.NewReader(\"{\\n  \\\"title\\\": \\\"Launch campaign\\\",\\n  \\\"template\\\": \\\"template\\\",\\n  \\\"brandName\\\": \\\"brandName\\\",\\n  \\\"brandAccent\\\": \\\"brandAccent\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/export/reports/html":
    "post":
      "operationId": "exportAnalyticsReportHtml"
      "summary": "Export analytics report HTML"
      "description": "Creates a standalone downloadable HTML analytics report."
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/CreateAnalyticsReportRequest"
      "responses":
        "200":
          "description": "Standalone analytics report HTML."
          "content":
            "text/html":
              "schema":
                "type": "string"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid report request."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/analytics/export/reports/html\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"title\": \"Launch campaign\",\n  \"template\": \"template\",\n  \"brandName\": \"brandName\",\n  \"brandAccent\": \"brandAccent\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/export/reports/html', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"title\": \"Launch campaign\",\n  \"template\": \"template\",\n  \"brandName\": \"brandName\",\n  \"brandAccent\": \"brandAccent\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/analytics/export/reports/html',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"title\": \"Launch campaign\",\n      \"template\": \"template\",\n      \"brandName\": \"brandName\",\n      \"brandAccent\": \"brandAccent\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/analytics/export/reports/html\", strings.NewReader(\"{\\n  \\\"title\\\": \\\"Launch campaign\\\",\\n  \\\"template\\\": \\\"template\\\",\\n  \\\"brandName\\\": \\\"brandName\\\",\\n  \\\"brandAccent\\\": \\\"brandAccent\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/series":
    "get":
      "operationId": "getAnalyticsSeries"
      "summary": "Get analytics time series"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "metric"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "views"
              - "likes"
              - "comments"
              - "shares"
              - "followers"
            "default": "views"
        -
          "name": "granularity"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "day"
              - "week"
            "default": "day"
        -
          "name": "mode"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "cumulative"
              - "gained"
              - "snapshot"
            "default": "cumulative"
        -
          "name": "account"
          "in": "query"
          "required": false
          "description": "Repeatable account filter."
          "schema":
            "type": "string"
        -
          "name": "from"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date"
        -
          "name": "to"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date"
      "responses":
        "200":
          "description": "Analytics time series."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/series?metric=example&granularity=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/series?metric=example&granularity=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/series?metric=example&granularity=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/series?metric=example&granularity=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/accounts/{id}":
    "get":
      "operationId": "getAnalyticsAccount"
      "summary": "Get account analytics drilldown"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Account analytics drilldown."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/accounts/{id}/refresh":
    "post":
      "operationId": "refreshAnalyticsAccount"
      "summary": "Refresh analytics account"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/RefreshAnalyticsRequest"
      "responses":
        "200":
          "description": "Refresh result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "429":
          "description": "Manual refresh cooldown active."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "502":
          "description": "Refresh provider failed."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/refresh\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"force\": false,\n  \"includePosts\": false,\n  \"includeComments\": false,\n  \"forcePosts\": false\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/refresh', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"force\": false,\n  \"includePosts\": false,\n  \"includeComments\": false,\n  \"forcePosts\": false\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/refresh',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"force\": false,\n      \"includePosts\": false,\n      \"includeComments\": false,\n      \"forcePosts\": false\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/refresh\", strings.NewReader(\"{\\n  \\\"force\\\": false,\\n  \\\"includePosts\\\": false,\\n  \\\"includeComments\\\": false,\\n  \\\"forcePosts\\\": false\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/accounts/{id}/raw":
    "get":
      "operationId": "listAnalyticsAccountRawSnapshots"
      "summary": "List raw account analytics snapshots"
      "description": "Returns owner-scoped stored raw provider payloads for a saved account. Full analytics tier only."
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "source"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "bundle_social"
              - "apify"
              - "manual"
        -
          "name": "limit"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 30
            "default": 5
        -
          "name": "from"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date-time"
        -
          "name": "to"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date-time"
      "responses":
        "200":
          "description": "Raw account analytics snapshots."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "403":
          "description": "Plan does not include raw analytics payloads."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/analytics":
    "get":
      "operationId": "getAccountAnalytics"
      "summary": "Get account analytics compatibility view"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Account analytics data."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/accounts/{id}/analytics/videos":
    "get":
      "operationId": "listAccountVideoAnalytics"
      "summary": "List post analytics for an account"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
        -
          "name": "sort_by"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "views"
              - "likes"
              - "engagement_rate"
              - "upload_date"
            "default": "upload_date"
        -
          "name": "sort_order"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "asc"
              - "desc"
            "default": "desc"
      "responses":
        "200":
          "description": "Post analytics list."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/videos?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/videos?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/videos?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics/videos?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/videos/{id}/analytics":
    "get":
      "operationId": "getVideoAnalytics"
      "summary": "Get single video analytics"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Video ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Video analytics."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Video not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/videos/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/videos/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/videos/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/videos/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/analytics\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/comments":
    "get":
      "operationId": "getCommentPulse"
      "summary": "Get comment pulse analytics"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "platform"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "country"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "account"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "post"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "limit"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 40
            "default": 24
        -
          "name": "postLimit"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 10
            "default": 6
        -
          "name": "from"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date"
        -
          "name": "to"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date"
      "responses":
        "200":
          "description": "Comment pulse analytics."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/comments?platform=example&country=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/comments?platform=example&country=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/comments?platform=example&country=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/comments?platform=example&country=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/accounts/{id}/comments":
    "get":
      "operationId": "listAnalyticsAccountComments"
      "summary": "List comments for an account post"
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Saved account ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "trackedPostId"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "postId"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
        -
          "name": "limit"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 50
            "default": 20
      "responses":
        "200":
          "description": "Post comments."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "403":
          "description": "Plan does not include this analytics level."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Account or post not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/comments?trackedPostId=example&postId=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/comments?trackedPostId=example&postId=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/comments?trackedPostId=example&postId=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/accounts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/comments?trackedPostId=example&postId=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/analytics/posts/{id}/raw":
    "get":
      "operationId": "listAnalyticsPostRawSnapshots"
      "summary": "List raw post analytics snapshots"
      "description": "Returns owner-scoped stored raw provider payloads for a tracked post. Full analytics tier only."
      "tags":
        - "Analytics"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Tracked post ID."
          "schema":
            "type": "string"
            "format": "uuid"
        -
          "name": "source"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "enum":
              - "bundle_social"
              - "apify"
              - "manual"
        -
          "name": "limit"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 30
            "default": 5
        -
          "name": "from"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date-time"
        -
          "name": "to"
          "in": "query"
          "required": false
          "description": undefined
          "schema":
            "type": "string"
            "format": "date-time"
      "responses":
        "200":
          "description": "Raw post analytics snapshots."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "403":
          "description": "Plan does not include raw analytics payloads."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Post not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/analytics/posts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/analytics/posts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/analytics/posts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/analytics/posts/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/raw?source=example&limit=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/comments":
    "get":
      "operationId": "listCommentTasks"
      "summary": "List comment tasks"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "page"
          "in": "query"
          "required": false
          "description": "Page number."
          "schema":
            "type": "integer"
            "minimum": 1
            "default": 1
        -
          "name": "per_page"
          "in": "query"
          "required": false
          "description": "Items per page."
          "schema":
            "type": "integer"
            "minimum": 1
            "maximum": 100
            "default": 25
      "responses":
        "200":
          "description": "Paginated comment task list."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/comments?page=example&per_page=example\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments?page=example&per_page=example', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/comments?page=example&per_page=example',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/comments?page=example&per_page=example\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "post":
      "operationId": "createCommentTasks"
      "summary": "Create comment tasks"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/CreateCommentTaskRequest"
      "responses":
        "201":
          "description": "Created comment tasks."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid comment task request."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "402":
          "description": "Insufficient credits."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/comments\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"saved_account_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\",\n  \"target_video_url\": \"https://example.com/resource\",\n  \"comment_text\": \"comment_text\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"saved_account_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\",\n  \"target_video_url\": \"https://example.com/resource\",\n  \"comment_text\": \"comment_text\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/comments',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"saved_account_id\": \"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\",\n      \"target_video_url\": \"https://example.com/resource\",\n      \"comment_text\": \"comment_text\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/comments\", strings.NewReader(\"{\\n  \\\"saved_account_id\\\": \\\"9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\\\",\\n  \\\"target_video_url\\\": \\\"https://example.com/resource\\\",\\n  \\\"comment_text\\\": \\\"comment_text\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/comments/{id}":
    "get":
      "operationId": "getCommentTask"
      "summary": "Get a comment task"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Comment task ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Comment task."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Comment task not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
    "delete":
      "operationId": "deleteCommentTask"
      "summary": "Delete a comment task"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Comment task ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Delete result."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Comment task not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X DELETE \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c', {\n  method: 'DELETE',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'DELETE',\n    'https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"DELETE\", \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/comments/{id}/approve":
    "post":
      "operationId": "approveCommentTask"
      "summary": "Approve a manually confirmed comment task"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Comment task ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Approved comment task."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Comment task not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Comment task status cannot be approved."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/approve\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/approve', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/approve',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/approve\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
  "/comments/{id}/dispute":
    "post":
      "operationId": "disputeCommentTask"
      "summary": "Dispute a manually confirmed comment task"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Comment task ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "requestBody":
        "required": true
        "content":
          "application/json":
            "schema":
              "$ref": "#/components/schemas/DisputeCommentRequest"
      "responses":
        "200":
          "description": "Disputed comment task."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "400":
          "description": "Invalid dispute reason."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "404":
          "description": "Comment task not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
        "409":
          "description": "Comment task status cannot be disputed."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
            "Idempotent-Replayed":
              "description": "Present with value true when a mutating request is replayed from a completed Idempotency-Key."
              "schema":
                "type": "string"
                "enum":
                  - "true"
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X POST \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/dispute\" \\\n  -H \"X-API-Key: sk_your_key_here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"reason\": \"Please review this item.\"\n}'"
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/dispute', {\n  method: 'POST',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n    'Content-Type': 'application/json',\n  },\n  body: JSON.stringify({\n  \"reason\": \"Please review this item.\"\n})\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'POST',\n    'https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/dispute',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]},\n    json={\n      \"reason\": \"Please review this item.\"\n    }\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"POST\", \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/dispute\", strings.NewReader(\"{\\n  \\\"reason\\\": \\\"Please review this item.\\\"\\n}\"))\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nreq.Header.Set(\"Content-Type\", \"application/json\")\nresp, err := http.DefaultClient.Do(req)"
  "/comments/{id}/verifications":
    "get":
      "operationId": "listCommentTaskVerifications"
      "summary": "List comment task verification events"
      "tags":
        - "Comments"
      "security":
        -
          "ApiKeyAuth": []
      "parameters":
        -
          "name": "id"
          "in": "path"
          "required": true
          "description": "Comment task ID."
          "schema":
            "type": "string"
            "format": "uuid"
      "responses":
        "200":
          "description": "Verification timeline."
          "content":
            "application/json":
              "schema":
                "type": "object"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "401":
          "description": "Missing, invalid, or revoked API key."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
        "404":
          "description": "Comment task not found."
          "content":
            "application/json":
              "schema":
                "$ref": "#/components/schemas/ErrorResponse"
          "headers":
            "X-TokPortal-API-Version":
              "description": "Current TokPortal public API contract version."
              "schema":
                "type": "string"
                "example": "2026-05-25"
            "X-TokPortal-API-Stability":
              "description": "Stability channel for the public API contract."
              "schema":
                "type": "string"
                "example": "stable"
            "X-TokPortal-Request-ID":
              "description": "Request correlation ID. Echoes a valid X-Request-ID request header or uses a generated req_ identifier."
              "schema":
                "type": "string"
                "example": "req_0123456789abcdef0123456789abcdef"
            "X-RateLimit-Limit":
              "description": "Maximum token bucket capacity for the authenticated API key."
              "schema":
                "type": "integer"
                "example": 120
            "X-RateLimit-Remaining":
              "description": "Approximate requests remaining for the authenticated API key after this request."
              "schema":
                "type": "integer"
                "example": 119
            "X-RateLimit-Reset":
              "description": "Unix timestamp when the token bucket is expected to be full again."
              "schema":
                "type": "integer"
                "example": 1779724800
            "Retry-After":
              "description": "Seconds to wait before retrying after RATE_LIMIT_EXCEEDED. Present on 429 responses."
              "schema":
                "type": "integer"
                "example": 1
      "x-codeSamples":
        -
          "lang": "curl"
          "label": "curl"
          "source": "curl -X GET \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verifications\" \\\n  -H \"X-API-Key: sk_your_key_here\""
        -
          "lang": "JavaScript"
          "label": "Node"
          "source": "const response = await fetch('https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verifications', {\n  method: 'GET',\n  headers: {\n    'X-API-Key': process.env.TOKPORTAL_API_KEY!,\n  }\n});\nconst data = await response.json();"
        -
          "lang": "Python"
          "label": "Python"
          "source": "import os\nimport requests\n\nresponse = requests.request(\n    'GET',\n    'https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verifications',\n    headers={\"X-API-Key\": os.environ[\"TOKPORTAL_API_KEY\"]}\n)\nprint(response.json())"
        -
          "lang": "Go"
          "label": "Go"
          "source": "req, _ := http.NewRequest(\"GET\", \"https://app.tokportal.com/api/ext/comments/9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c/verifications\", nil)\nreq.Header.Set(\"X-API-Key\", os.Getenv(\"TOKPORTAL_API_KEY\"))\nresp, err := http.DefaultClient.Do(req)"
"components":
  "securitySchemes":
    "ApiKeyAuth":
      "type": "apiKey"
      "in": "header"
      "name": "X-API-Key"
      "description": "TokPortal API key. New keys use the format sk_ followed by 64 lowercase hex characters, are stored as SHA-256 hashes, are shown once at creation, and should never be sent in query parameters."
  "schemas":
    "ErrorResponse":
      "type": "object"
      "required":
        - "error"
      "properties":
        "error":
          "type": "object"
          "required":
            - "code"
            - "message"
          "properties":
            "code":
              "type": "string"
            "message":
              "type": "string"
            "details":
              "type": "object"
              "additionalProperties": true
    "MeResponse":
      "type": "object"
      "required":
        - "data"
      "properties":
        "data":
          "type": "object"
          "required":
            - "id"
            - "email"
            - "credits"
            - "api_key"
          "properties":
            "id":
              "type": "string"
              "format": "uuid"
            "email":
              "type": "string"
              "format": "email"
            "full_name":
              "type":
                - "string"
                - "null"
            "company_name":
              "type":
                - "string"
                - "null"
            "role":
              "type":
                - "string"
                - "null"
            "country":
              "type":
                - "string"
                - "null"
            "credits":
              "type": "object"
              "required":
                - "balance"
              "properties":
                "balance":
                  "type": "number"
            "subscription":
              "type":
                - "object"
                - "null"
              "additionalProperties": true
            "api_key":
              "type": "object"
              "required":
                - "id"
                - "name"
              "properties":
                "id":
                  "type": "string"
                  "format": "uuid"
                "name":
                  "type": "string"
    "CreateBundleRequest":
      "type": "object"
      "required":
        - "bundle_type"
      "properties":
        "bundle_type":
          "type": "string"
          "enum":
            - "account_only"
            - "account_and_videos"
            - "videos_only"
        "platform":
          "type": "string"
          "enum":
            - "tiktok"
            - "instagram"
          "default": "tiktok"
        "country":
          "type": "string"
          "minLength": 2
          "maxLength": 5
          "description": "Required unless bundle_type is videos_only."
        "title":
          "type": "string"
          "maxLength": 200
        "videos_quantity":
          "type": "integer"
          "minimum": 0
          "maximum": 500
          "default": 0
        "edits_quantity":
          "type": "integer"
          "minimum": 0
          "maximum": 500
          "default": 0
        "wants_niche_warming":
          "type": "boolean"
          "default": false
        "wants_deep_warming":
          "type": "boolean"
          "default": false
        "wants_moderation":
          "type": "boolean"
          "default": false
        "niche_warming_instructions":
          "type": "string"
          "maxLength": 2000
        "moderation_notice":
          "type": "string"
          "maxLength": 2000
        "auto_finalize_videos":
          "type": "boolean"
          "default": true
        "account_id":
          "type": "string"
          "format": "uuid"
          "description": "Required for videos_only bundles."
        "external_ref":
          "type": "string"
          "maxLength": 200
      "additionalProperties": false
    "PatchBundleRequest":
      "type": "object"
      "properties":
        "auto_finalize_videos":
          "type": "boolean"
        "external_ref":
          "type":
            - "string"
            - "null"
          "maxLength": 200
        "title":
          "type":
            - "string"
            - "null"
          "maxLength": 200
      "minProperties": 1
      "additionalProperties": false
    "CreateBundleResponse":
      "type": "object"
      "properties":
        "data":
          "type": "object"
          "additionalProperties": true
        "credits_charged":
          "type": "number"
    "CreateBulkBundlesRequest":
      "type": "object"
      "required":
        - "platforms"
        - "country"
        - "accounts_count"
      "properties":
        "platforms":
          "type": "array"
          "minItems": 1
          "maxItems": 3
          "items":
            "type": "string"
            "enum":
              - "tiktok"
              - "instagram"
        "country":
          "type": "string"
          "minLength": 2
          "maxLength": 5
        "accounts_count":
          "type": "integer"
          "minimum": 1
          "maximum": 100
        "upload_accounts_count":
          "type": "integer"
          "minimum": 0
          "maximum": 100
          "default": 0
        "videos_per_account":
          "type": "integer"
          "minimum": 0
          "maximum": 500
          "default": 0
        "wants_niche_warming":
          "type": "boolean"
          "default": false
        "wants_deep_warming":
          "type": "boolean"
          "default": false
        "wants_moderation":
          "type": "boolean"
          "default": false
        "niche_warming_instructions":
          "type": "string"
          "maxLength": 2000
        "moderation_notice":
          "type": "string"
          "maxLength": 2000
        "auto_finalize_videos":
          "type": "boolean"
          "default": true
        "external_ref":
          "type": "string"
          "maxLength": 200
      "additionalProperties": false
    "ConfigureAccountRequest":
      "type": "object"
      "required":
        - "username"
        - "visible_name"
      "properties":
        "username":
          "type": "string"
          "minLength": 1
          "maxLength": 24
          "pattern": "^[a-zA-Z0-9_.]+$"
          "description": "Requested username. Cannot end with a dot."
        "visible_name":
          "type": "string"
          "minLength": 1
          "maxLength": 30
        "biography":
          "type": "string"
          "maxLength": 80
        "profile_picture_url":
          "type": "string"
          "description": "Public image URL or TokPortal storage URL/path."
        "link_in_bio":
          "type": "string"
          "format": "uri"
        "niche_warming_instructions":
          "type": "string"
          "maxLength": 2000
      "additionalProperties": false
    "ConfigureVideoRequest":
      "type": "object"
      "required":
        - "video_type"
        - "description"
        - "target_publish_date"
      "properties":
        "video_type":
          "type": "string"
          "enum":
            - "video"
            - "carousel"
        "description":
          "type": "string"
          "minLength": 1
          "maxLength": 2200
        "target_publish_date":
          "type": "string"
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          "description": "YYYY-MM-DD."
        "name":
          "type": "string"
          "maxLength": 200
        "video_url":
          "type": "string"
          "format": "uri"
        "carousel_images":
          "type": "array"
          "minItems": 1
          "maxItems": 20
          "items":
            "type": "string"
            "format": "uri"
        "carousel_title":
          "type": "string"
          "maxLength": 200
        "tiktok_sound_url":
          "type": "string"
          "format": "uri"
        "volume_original_sound":
          "type":
            - "integer"
            - "null"
          "minimum": 0
          "maximum": 200
        "volume_added_sound":
          "type":
            - "integer"
            - "null"
          "minimum": 0
          "maximum": 200
        "editing_instructions":
          "type": "string"
          "maxLength": 5000
        "external_ref":
          "type": "string"
          "maxLength": 200
        "instagram_content_type":
          "type": "string"
          "enum":
            - "reel"
            - "post"
        "instagram_location":
          "type": "string"
          "maxLength": 200
        "instagram_collaborators":
          "type": "array"
          "maxItems": 5
          "items":
            "type": "string"
        "instagram_audio_name":
          "type": "string"
          "maxLength": 200
        "instagram_add_to_story":
          "type": "boolean"
        "youtube_title":
          "type": "string"
          "maxLength": 200
        "youtube_tags":
          "type": "array"
          "maxItems": 30
          "items":
            "type": "string"
        "youtube_category":
          "type": "string"
          "maxLength": 100
        "youtube_visibility":
          "type": "string"
          "enum":
            - "public"
            - "unlisted"
            - "private"
        "youtube_sound_url":
          "type": "string"
          "format": "uri"
        "auto_publish":
          "type": "boolean"
          "default": false
      "additionalProperties": false
    "PatchVideoRequest":
      "type": "object"
      "properties":
        "external_ref":
          "type":
            - "string"
            - "null"
          "maxLength": 200
        "name":
          "type":
            - "string"
            - "null"
          "maxLength": 200
      "minProperties": 1
      "additionalProperties": false
    "BatchConfigureVideosRequest":
      "type": "object"
      "required":
        - "videos"
      "properties":
        "videos":
          "type": "array"
          "minItems": 1
          "maxItems": 500
          "items":
            "allOf":
              -
                "type": "object"
                "required":
                  - "video_type"
                  - "description"
                  - "target_publish_date"
                "properties":
                  "video_type":
                    "type": "string"
                    "enum":
                      - "video"
                      - "carousel"
                  "description":
                    "type": "string"
                    "minLength": 1
                    "maxLength": 2200
                  "target_publish_date":
                    "type": "string"
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    "description": "YYYY-MM-DD."
                  "name":
                    "type": "string"
                    "maxLength": 200
                  "video_url":
                    "type": "string"
                    "format": "uri"
                  "carousel_images":
                    "type": "array"
                    "minItems": 1
                    "maxItems": 20
                    "items":
                      "type": "string"
                      "format": "uri"
                  "carousel_title":
                    "type": "string"
                    "maxLength": 200
                  "tiktok_sound_url":
                    "type": "string"
                    "format": "uri"
                  "volume_original_sound":
                    "type":
                      - "integer"
                      - "null"
                    "minimum": 0
                    "maximum": 200
                  "volume_added_sound":
                    "type":
                      - "integer"
                      - "null"
                    "minimum": 0
                    "maximum": 200
                  "editing_instructions":
                    "type": "string"
                    "maxLength": 5000
                  "external_ref":
                    "type": "string"
                    "maxLength": 200
                  "instagram_content_type":
                    "type": "string"
                    "enum":
                      - "reel"
                      - "post"
                  "instagram_location":
                    "type": "string"
                    "maxLength": 200
                  "instagram_collaborators":
                    "type": "array"
                    "maxItems": 5
                    "items":
                      "type": "string"
                  "instagram_audio_name":
                    "type": "string"
                    "maxLength": 200
                  "instagram_add_to_story":
                    "type": "boolean"
                  "youtube_title":
                    "type": "string"
                    "maxLength": 200
                  "youtube_tags":
                    "type": "array"
                    "maxItems": 30
                    "items":
                      "type": "string"
                  "youtube_category":
                    "type": "string"
                    "maxLength": 100
                  "youtube_visibility":
                    "type": "string"
                    "enum":
                      - "public"
                      - "unlisted"
                      - "private"
                  "youtube_sound_url":
                    "type": "string"
                    "format": "uri"
                  "auto_publish":
                    "type": "boolean"
                    "default": false
                "additionalProperties": false
              -
                "type": "object"
                "required":
                  - "position"
                "properties":
                  "position":
                    "type": "integer"
                    "minimum": 1
        "auto_publish":
          "type": "boolean"
          "default": false
      "additionalProperties": false
    "QuantityRequest":
      "type": "object"
      "required":
        - "quantity"
      "properties":
        "quantity":
          "type": "integer"
          "minimum": 1
          "maximum": 500
      "additionalProperties": false
    "AccountEditRequest":
      "type": "object"
      "required":
        - "requested_username"
        - "requested_visible_name"
      "properties":
        "requested_username":
          "type": "string"
          "minLength": 1
          "maxLength": 24
        "requested_visible_name":
          "type": "string"
          "minLength": 1
          "maxLength": 30
        "requested_biography":
          "type": "string"
          "maxLength": 80
        "requested_profile_picture_url":
          "type": "string"
        "requested_link_in_bio":
          "type": "string"
          "format": "uri"
      "additionalProperties": false
    "AccountCorrectionsRequest":
      "type": "object"
      "required":
        - "comment"
      "properties":
        "comment":
          "type": "string"
          "minLength": 1
          "maxLength": 2000
        "fields":
          "type": "object"
          "properties":
            "username":
              "type": "boolean"
            "visible_name":
              "type": "boolean"
            "biography":
              "type": "boolean"
            "profile_picture":
              "type": "boolean"
          "additionalProperties": false
      "additionalProperties": false
    "VideoCorrectionsRequest":
      "type": "object"
      "required":
        - "comment"
      "properties":
        "comment":
          "type": "string"
          "minLength": 1
          "maxLength": 2000
        "fields":
          "type": "object"
          "properties":
            "video_content":
              "type": "boolean"
            "description":
              "type": "boolean"
            "video_editing":
              "type": "boolean"
            "sound":
              "type": "boolean"
          "additionalProperties": false
      "additionalProperties": false
    "FixVideoDownloadRequest":
      "type": "object"
      "properties":
        "video_url":
          "type": "string"
          "format": "uri"
        "carousel_images":
          "type": "array"
          "minItems": 1
          "maxItems": 20
          "items":
            "type": "string"
            "format": "uri"
      "anyOf":
        -
          "required":
            - "video_url"
        -
          "required":
            - "carousel_images"
      "additionalProperties": false
    "RefreshAnalyticsRequest":
      "type": "object"
      "properties":
        "force":
          "type": "boolean"
          "default": false
        "includePosts":
          "type": "boolean"
          "default": true
        "includeComments":
          "type": "boolean"
          "default": false
        "forcePosts":
          "type": "boolean"
          "default": false
        "bootstrapPosts":
          "type": "boolean"
          "default": false
        "postLimit":
          "type": "integer"
          "minimum": 1
          "maximum": 60
          "default": 20
      "additionalProperties": false
    "CreateCommentTaskRequest":
      "oneOf":
        -
          "type": "object"
          "required":
            - "saved_account_id"
            - "target_video_url"
            - "comment_text"
          "properties":
            "saved_account_id":
              "type": "string"
              "format": "uuid"
            "target_video_url":
              "type": "string"
              "minLength": 1
            "comment_text":
              "type": "string"
              "minLength": 1
              "maxLength": 10000
            "brief_id":
              "type":
                - "string"
                - "null"
              "format": "uuid"
          "additionalProperties": false
        -
          "type": "object"
          "required":
            - "tasks"
          "properties":
            "tasks":
              "type": "array"
              "minItems": 1
              "maxItems": 200
              "items":
                "type": "object"
                "required":
                  - "saved_account_id"
                  - "target_video_url"
                  - "comment_text"
                "properties":
                  "saved_account_id":
                    "type": "string"
                    "format": "uuid"
                  "target_video_url":
                    "type": "string"
                    "minLength": 1
                  "comment_text":
                    "type": "string"
                    "minLength": 1
                    "maxLength": 10000
                  "brief_id":
                    "type":
                      - "string"
                      - "null"
                    "format": "uuid"
                "additionalProperties": false
          "additionalProperties": false
    "DisputeCommentRequest":
      "type": "object"
      "required":
        - "reason"
      "properties":
        "reason":
          "type": "string"
          "minLength": 3
          "maxLength": 500
      "additionalProperties": false
    "CreateWebhookEndpointRequest":
      "type": "object"
      "required":
        - "url"
        - "events"
      "properties":
        "url":
          "type": "string"
          "format": "uri"
          "maxLength": 2000
        "events":
          "type": "array"
          "minItems": 1
          "maxItems": 50
          "items":
            "type": "string"
            "enum":
              - "webhook.test"
              - "bundle.created"
              - "bundle.published"
              - "account.configured"
              - "account.published"
              - "account.in_review"
              - "account.pending_corrections"
              - "account.finalized"
              - "video.configured"
              - "video.in_review"
              - "video.published"
              - "video.pending_corrections"
              - "video.finalized"
        "description":
          "type": "string"
          "maxLength": 500
        "enabled":
          "type": "boolean"
          "default": true
      "additionalProperties": false
    "UpdateWebhookEndpointRequest":
      "type": "object"
      "properties":
        "url":
          "type": "string"
          "format": "uri"
          "maxLength": 2000
        "events":
          "type": "array"
          "minItems": 1
          "maxItems": 50
          "items":
            "type": "string"
            "enum":
              - "webhook.test"
              - "bundle.created"
              - "bundle.published"
              - "account.configured"
              - "account.published"
              - "account.in_review"
              - "account.pending_corrections"
              - "account.finalized"
              - "video.configured"
              - "video.in_review"
              - "video.published"
              - "video.pending_corrections"
              - "video.finalized"
        "description":
          "type":
            - "string"
            - "null"
          "maxLength": 500
        "enabled":
          "type": "boolean"
      "minProperties": 1
      "additionalProperties": false
    "WebhookEventsResponse":
      "type": "object"
      "required":
        - "data"
      "properties":
        "data":
          "type": "object"
          "required":
            - "events"
            - "envelope"
            - "delivery"
            - "signature"
          "properties":
            "events":
              "type": "array"
              "items":
                "type": "object"
                "required":
                  - "type"
                  - "category"
                  - "availability"
                  - "description"
                  - "when"
                  - "payload_schema"
                  - "example_payload"
                "properties":
                  "type":
                    "type": "string"
                    "enum":
                      - "webhook.test"
                      - "bundle.created"
                      - "bundle.published"
                      - "account.configured"
                      - "account.published"
                      - "account.in_review"
                      - "account.pending_corrections"
                      - "account.finalized"
                      - "video.configured"
                      - "video.in_review"
                      - "video.published"
                      - "video.pending_corrections"
                      - "video.finalized"
                  "category":
                    "type": "string"
                    "enum":
                      - "webhook"
                      - "bundle"
                      - "account"
                      - "video"
                      - "comment"
                  "availability":
                    "type": "string"
                    "enum":
                      - "emitted"
                      - "subscribable"
                  "description":
                    "type": "string"
                  "when":
                    "type": "string"
                  "payload_schema":
                    "type": "object"
                    "additionalProperties": true
                  "example_payload":
                    "type": "object"
                    "additionalProperties": true
            "envelope":
              "type": "object"
              "required":
                - "id"
                - "type"
                - "api_version"
                - "created_at"
                - "data"
              "properties":
                "id":
                  "type": "string"
                  "pattern": "^evt_"
                "type":
                  "type": "string"
                  "enum":
                    - "webhook.test"
                    - "bundle.created"
                    - "bundle.published"
                    - "account.configured"
                    - "account.published"
                    - "account.in_review"
                    - "account.pending_corrections"
                    - "account.finalized"
                    - "video.configured"
                    - "video.in_review"
                    - "video.published"
                    - "video.pending_corrections"
                    - "video.finalized"
                "api_version":
                  "type": "string"
                  "example": "2026-05-25"
                "created_at":
                  "type": "string"
                  "format": "date-time"
                "data":
                  "type": "object"
                  "additionalProperties": true
            "delivery":
              "type": "object"
              "required":
                - "method"
                - "content_type"
                - "timeout_ms"
                - "user_agent"
                - "headers"
              "properties":
                "method":
                  "type": "string"
                  "enum":
                    - "POST"
                "content_type":
                  "type": "string"
                  "enum":
                    - "application/json"
                "timeout_ms":
                  "type": "integer"
                  "example": 8000
                "user_agent":
                  "type": "string"
                  "example": "TokPortal-Webhooks/1.0"
                "headers":
                  "type": "array"
                  "items":
                    "type": "string"
            "signature":
              "type": "object"
              "required":
                - "header"
                - "scheme"
                - "signed_payload"
                - "algorithm"
                - "default_tolerance_seconds"
              "properties":
                "header":
                  "type": "string"
                  "enum":
                    - "TokPortal-Signature"
                "scheme":
                  "type": "string"
                  "example": "t={unix_timestamp},v1={hmac_sha256}"
                "signed_payload":
                  "type": "string"
                  "example": "{timestamp}.{raw_body}"
                "algorithm":
                  "type": "string"
                  "enum":
                    - "HMAC-SHA256"
                "default_tolerance_seconds":
                  "type": "integer"
                  "example": 300
          "example":
            "events":
              -
                "type": "webhook.test"
                "category": "webhook"
                "availability": "emitted"
                "description": "A signed test event sent on demand to validate an endpoint."
                "when": "Sent when you call POST /webhooks/{id}/test."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "webhook_endpoint_id"
                    - "message"
                  "properties":
                    "webhook_endpoint_id":
                      "type": "string"
                      "format": "uuid"
                    "message":
                      "type": "string"
                "example_payload":
                  "webhook_endpoint_id": "33333333-4444-4555-8666-777777777777"
                  "message": "TokPortal webhook test event"
              -
                "type": "bundle.created"
                "category": "bundle"
                "availability": "emitted"
                "description": "A bundle was created through the public API."
                "when": "Emitted after a successful bundle creation."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "bundle_id"
                  "properties":
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "external_ref":
                      "type":
                        - "string"
                        - "null"
                    "status":
                      "type": "string"
                    "platform":
                      "type": "string"
                    "bundle_type":
                      "type": "string"
                "example_payload":
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "external_ref": "partner-order-123"
                  "status": "pending_setup"
                  "platform": "tiktok"
                  "bundle_type": "account_and_videos"
              -
                "type": "bundle.published"
                "category": "bundle"
                "availability": "emitted"
                "description": "A bundle was published."
                "when": "Emitted after a bundle publish request succeeds."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "bundle_id"
                  "properties":
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "external_ref":
                      "type":
                        - "string"
                        - "null"
                    "status":
                      "type": "string"
                    "platform":
                      "type": "string"
                    "bundle_type":
                      "type": "string"
                "example_payload":
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "external_ref": "partner-order-123"
                  "status": "published"
                  "platform": "tiktok"
                  "bundle_type": "account_and_videos"
              -
                "type": "account.configured"
                "category": "account"
                "availability": "emitted"
                "description": "An account listing was configured."
                "when": "Emitted when PUT /bundles/{id}/account moves an account listing to configured."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "account_id"
                    - "bundle_id"
                    - "status"
                  "properties":
                    "account_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "username":
                      "type":
                        - "string"
                        - "null"
                    "platform":
                      "type": "string"
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                "example_payload":
                  "account_id": "0d1e2f3a-4b5c-6789-8abc-def012345678"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "username": "launchprofile"
                  "platform": "tiktok"
                  "status": "configured"
                  "previous_status": "pending"
              -
                "type": "account.in_review"
                "category": "account"
                "availability": "emitted"
                "description": "An account listing entered customer review."
                "when": "Emitted when a Bundle Social account handoff moves an accepted account listing to in_review."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "account_id"
                    - "bundle_id"
                    - "status"
                  "properties":
                    "account_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "username":
                      "type":
                        - "string"
                        - "null"
                    "platform":
                      "type": "string"
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                "example_payload":
                  "account_id": "0d1e2f3a-4b5c-6789-8abc-def012345678"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "username": "launchprofile"
                  "platform": "tiktok"
                  "status": "in_review"
                  "previous_status": "accepted"
              -
                "type": "account.published"
                "category": "account"
                "availability": "emitted"
                "description": "An account listing was published to an active bundle."
                "when": "Emitted when POST /bundles/{id}/publish moves a configured account listing to published."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "account_id"
                    - "bundle_id"
                    - "status"
                  "properties":
                    "account_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "username":
                      "type":
                        - "string"
                        - "null"
                    "platform":
                      "type": "string"
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                "example_payload":
                  "account_id": "0d1e2f3a-4b5c-6789-8abc-def012345678"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "username": "launchprofile"
                  "platform": "tiktok"
                  "status": "published"
                  "previous_status": "configured"
              -
                "type": "account.pending_corrections"
                "category": "account"
                "availability": "emitted"
                "description": "Corrections were requested for an account listing."
                "when": "Emitted after POST /bundles/{id}/account/corrections moves an account listing from in_review to pending_corrections."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "account_id"
                    - "bundle_id"
                    - "status"
                  "properties":
                    "account_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "username":
                      "type":
                        - "string"
                        - "null"
                    "platform":
                      "type": "string"
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                "example_payload":
                  "account_id": "0d1e2f3a-4b5c-6789-8abc-def012345678"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "username": "launchprofile"
                  "platform": "tiktok"
                  "status": "pending_corrections"
                  "previous_status": "in_review"
              -
                "type": "account.finalized"
                "category": "account"
                "availability": "emitted"
                "description": "An account listing was approved and finalized."
                "when": "Emitted after POST /bundles/{id}/account/finalize succeeds."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "account_id"
                    - "bundle_id"
                    - "status"
                  "properties":
                    "account_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "username":
                      "type":
                        - "string"
                        - "null"
                    "platform":
                      "type": "string"
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                "example_payload":
                  "account_id": "0d1e2f3a-4b5c-6789-8abc-def012345678"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "username": "launchprofile"
                  "platform": "tiktok"
                  "status": "finalized"
                  "previous_status": "in_review"
              -
                "type": "video.configured"
                "category": "video"
                "availability": "emitted"
                "description": "A video listing was configured or unscheduled back to configured."
                "when": "Emitted when a video configuration, CSV import, batch configuration, or unschedule action moves a video listing to configured."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "video_id"
                    - "bundle_id"
                    - "position"
                    - "status"
                  "properties":
                    "video_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "position":
                      "type": "integer"
                      "minimum": 1
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                    "platform_url":
                      "type":
                        - "string"
                        - "null"
                      "format": "uri"
                "example_payload":
                  "video_id": "11111111-2222-4333-8444-555555555555"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "position": 1
                  "status": "configured"
                  "previous_status": "pending"
                  "platform_url": null
              -
                "type": "video.in_review"
                "category": "video"
                "availability": "emitted"
                "description": "A video listing entered customer review."
                "when": "Emitted when a manager submits a posted video URL and the video listing moves to in_review."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "video_id"
                    - "bundle_id"
                    - "position"
                    - "status"
                  "properties":
                    "video_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "position":
                      "type": "integer"
                      "minimum": 1
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                    "platform_url":
                      "type":
                        - "string"
                        - "null"
                      "format": "uri"
                "example_payload":
                  "video_id": "11111111-2222-4333-8444-555555555555"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "position": 1
                  "status": "in_review"
                  "previous_status": "configured"
                  "platform_url": null
              -
                "type": "video.published"
                "category": "video"
                "availability": "emitted"
                "description": "A video was published to its destination platform."
                "when": "Emitted after POST /bundles/{id}/videos/{position}/publish succeeds."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "video_id"
                    - "bundle_id"
                    - "position"
                    - "status"
                  "properties":
                    "video_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "position":
                      "type": "integer"
                      "minimum": 1
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                    "platform_url":
                      "type":
                        - "string"
                        - "null"
                      "format": "uri"
                "example_payload":
                  "video_id": "11111111-2222-4333-8444-555555555555"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "position": 1
                  "status": "published"
                  "previous_status": "in_review"
                  "platform_url": "https://www.tiktok.com/@launchprofile/video/123"
              -
                "type": "video.pending_corrections"
                "category": "video"
                "availability": "emitted"
                "description": "Corrections were requested for a video listing."
                "when": "Emitted after POST /bundles/{id}/videos/{position}/corrections moves a video listing from in_review to pending_corrections."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "video_id"
                    - "bundle_id"
                    - "position"
                    - "status"
                  "properties":
                    "video_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "position":
                      "type": "integer"
                      "minimum": 1
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                    "platform_url":
                      "type":
                        - "string"
                        - "null"
                      "format": "uri"
                "example_payload":
                  "video_id": "11111111-2222-4333-8444-555555555555"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "position": 1
                  "status": "pending_corrections"
                  "previous_status": "in_review"
                  "platform_url": "https://www.tiktok.com/@launchprofile/video/123"
              -
                "type": "video.finalized"
                "category": "video"
                "availability": "emitted"
                "description": "A video passed final review."
                "when": "Emitted after POST /bundles/{id}/videos/{position}/finalize succeeds."
                "payload_schema":
                  "type": "object"
                  "required":
                    - "video_id"
                    - "bundle_id"
                    - "position"
                    - "status"
                  "properties":
                    "video_id":
                      "type": "string"
                      "format": "uuid"
                    "bundle_id":
                      "type": "string"
                      "format": "uuid"
                    "position":
                      "type": "integer"
                      "minimum": 1
                    "status":
                      "type": "string"
                    "previous_status":
                      "type":
                        - "string"
                        - "null"
                    "platform_url":
                      "type":
                        - "string"
                        - "null"
                      "format": "uri"
                "example_payload":
                  "video_id": "11111111-2222-4333-8444-555555555555"
                  "bundle_id": "9f3a7b2e-1c4d-4e8f-a5b6-7d9e0f1a2b3c"
                  "position": 1
                  "status": "finalized"
                  "previous_status": "in_review"
                  "platform_url": "https://www.tiktok.com/@launchprofile/video/123"
            "envelope":
              "id": "evt_0123456789abcdef0123456789abcdef"
              "type": "bundle.published"
              "api_version": "2026-05-25"
              "created_at": "2026-06-01T12:00:00.000Z"
              "data":
{}
            "delivery":
              "method": "POST"
              "content_type": "application/json"
              "timeout_ms": 8000
              "user_agent": "TokPortal-Webhooks/1.0"
              "headers":
                - "TokPortal-Event-Id"
                - "TokPortal-Event-Type"
                - "TokPortal-Signature"
            "signature":
              "header": "TokPortal-Signature"
              "scheme": "t={unix_timestamp},v1={hmac_sha256}"
              "signed_payload": "{timestamp}.{raw_body}"
              "algorithm": "HMAC-SHA256"
              "default_tolerance_seconds": 300
    "UploadVideoRequest":
      "type": "object"
      "required":
        - "filename"
        - "bundle_id"
      "properties":
        "filename":
          "type": "string"
          "minLength": 1
          "maxLength": 200
        "content_type":
          "type": "string"
          "default": "video/mp4"
        "bundle_id":
          "type": "string"
          "format": "uuid"
      "additionalProperties": false
    "UploadImageRequest":
      "type": "object"
      "required":
        - "filename"
        - "content_type"
        - "bundle_id"
      "properties":
        "filename":
          "type": "string"
          "minLength": 1
          "maxLength": 200
        "content_type":
          "type": "string"
          "pattern": "^image/(jpeg|jpg|png|webp|gif)$"
          "description": "Allowed image MIME types: image/jpeg, image/jpg, image/png, image/webp, image/gif."
        "bundle_id":
          "type": "string"
          "format": "uuid"
        "purpose":
          "type": "string"
          "enum":
            - "carousel"
            - "profile_picture"
          "default": "carousel"
      "additionalProperties": false
    "UploadImageFromUrlRequest":
      "type": "object"
      "required":
        - "url"
        - "bundle_id"
      "properties":
        "url":
          "type": "string"
          "format": "uri"
          "description": "Public direct image URL."
        "bundle_id":
          "type": "string"
          "format": "uuid"
        "purpose":
          "type": "string"
          "enum":
            - "carousel"
            - "profile_picture"
          "default": "carousel"
      "additionalProperties": false
    "CreateAnalyticsReportRequest":
      "type": "object"
      "properties":
        "title":
          "type":
            - "string"
            - "null"
          "maxLength": 200
        "template":
          "type":
            - "string"
            - "null"
          "maxLength": 100
        "brandName":
          "type":
            - "string"
            - "null"
          "maxLength": 100
        "brandAccent":
          "type":
            - "string"
            - "null"
          "maxLength": 40
        "accountIds":
          "type": "array"
          "items":
            "type": "string"
            "format": "uuid"
        "workspaceId":
          "type":
            - "string"
            - "null"
          "format": "uuid"
        "platforms":
          "type": "array"
          "items":
            "type": "string"
            "enum":
              - "tiktok"
              - "instagram"
        "countries":
          "type": "array"
          "items":
            "type": "string"
            "minLength": 2
            "maxLength": 5
        "query":
          "type":
            - "string"
            - "null"
          "maxLength": 200
        "from":
          "type":
            - "string"
            - "null"
          "format": "date"
        "to":
          "type":
            - "string"
            - "null"
          "format": "date"
      "additionalProperties": false
"x-tokportal":
  "schemaStatus": "partial-foundation"
  "canonicalBaseUrl": "https://app.tokportal.com/api/ext"
  "intendedConsumers":
    - "docs"
    - "typescript-sdk"
    - "python-sdk"
    - "go-sdk"
    - "cli"
    - "mcp"
