{
  "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,
            "schema": {
              "type": "string",
              "enum": [
                "account_only",
                "account_and_videos",
                "videos_only"
              ]
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "tiktok",
                "instagram"
              ]
            }
          },
          {
            "name": "external_ref",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "account_status",
            "in": "query",
            "required": false,
            "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,
            "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,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string",
              "enum": [
                "views",
                "likes",
                "comments",
                "shares",
                "followers"
              ],
              "default": "views"
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "day",
                "week"
              ],
              "default": "day"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string",
              "enum": [
                "bundle_social",
                "apify",
                "manual"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 30,
              "default": 5
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string",
              "enum": [
                "views",
                "likes",
                "engagement_rate",
                "upload_date"
              ],
              "default": "upload_date"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "post",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 40,
              "default": 24
            }
          },
          {
            "name": "postLimit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 6
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "postId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "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,
            "schema": {
              "type": "string",
              "enum": [
                "bundle_social",
                "apify",
                "manual"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 30,
              "default": 5
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "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"
    ]
  }
}
