{
  "components": {
    "responses": {
      "InsufficientCredits": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "description": "Insufficient credits"
      },
      "NotFound": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "description": "Not found (method, or upstream object)"
      },
      "RateLimited": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "description": "Rate limited upstream"
      },
      "Timeout": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "description": "Timed out"
      },
      "UpstreamFailed": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "description": "All providers failed"
      },
      "ValidationError": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "description": "Validation error (unknown field, bad cursor, bad routing)"
      }
    },
    "schemas": {
      "Answer": {
        "additionalProperties": false,
        "description": "A natural-language answer to a question, grounded in web sources.",
        "properties": {
          "answer": {
            "description": "The answer text as plain text / light markdown. Inline citation markers, when the engine emits them, are kept as-is.",
            "type": "string"
          },
          "sources": {
            "description": "Web sources the answer was grounded in, best first. null when the engine does not expose its sources.",
            "items": {
              "properties": {
                "snippet": {
                  "description": "The passage of the source the engine used, when exposed.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "title": {
                  "description": "Source page title.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "url": {
                  "description": "Source URL.",
                  "type": "string"
                }
              },
              "required": [
                "title",
                "url",
                "snippet"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "answer",
          "sources"
        ],
        "type": "object"
      },
      "AnswerEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Answer"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Answer."
      },
      "Attempt": {
        "description": "One upstream try. Present on success and failure so a failover is never invisible.",
        "properties": {
          "error_type": {
            "description": "validation | not_found | rate_limit | timeout | upstream_unauthorized | upstream_unavailable | provider_error",
            "type": "string"
          },
          "provider": {
            "description": "Provider slug.",
            "type": "string"
          },
          "refunded": {
            "description": "true when the reservation for this attempt was refunded.",
            "type": "boolean"
          },
          "status": {
            "description": "HTTP status AgentKey mapped this attempt to (200 on success).",
            "type": "integer"
          },
          "took_ms": {
            "type": "integer"
          },
          "tool": {
            "description": "Registry tool name (Provider/operation) that was called.",
            "type": "string"
          },
          "upstream_status": {
            "description": "The provider's real HTTP status; absent when nothing was received.",
            "type": "integer"
          }
        },
        "required": [
          "provider",
          "tool",
          "status",
          "took_ms"
        ],
        "type": "object"
      },
      "Candle": {
        "additionalProperties": false,
        "description": "One OHLCV bar.",
        "properties": {
          "adjusted_close": {
            "description": "Split / dividend adjusted close when the provider reports one.",
            "type": [
              "number",
              "null"
            ]
          },
          "close": {
            "description": "Close.",
            "type": [
              "number",
              "null"
            ]
          },
          "high": {
            "description": "High.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Low.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "Open.",
            "type": [
              "number",
              "null"
            ]
          },
          "time": {
            "description": "Bar start, RFC 3339 UTC. Daily and longer bars carry the trading day at 00:00:00Z.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "volume": {
            "description": "Volume in shares.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "time",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "adjusted_close"
        ],
        "type": "object"
      },
      "CandlePage": {
        "additionalProperties": false,
        "description": "One page of OHLCV bars, most recent first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Candle"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "CandlePageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CandlePage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a CandlePage."
      },
      "Catalog": {
        "properties": {
          "methods": {
            "items": {
              "$ref": "#/components/schemas/CatalogEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "methods"
        ],
        "type": "object"
      },
      "CatalogEntry": {
        "properties": {
          "action": {
            "description": "Action within the domain.",
            "type": "string"
          },
          "domain": {
            "description": "Domain.",
            "type": "string"
          },
          "name": {
            "description": "Method name.",
            "type": "string"
          },
          "platform": {
            "description": "Platform slug for platform methods.",
            "type": "string"
          },
          "price_credits": {
            "type": "number"
          },
          "providers": {
            "description": "Providers in default try order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "summary": {
            "description": "One-line summary.",
            "type": "string"
          },
          "sunset": {
            "description": "Only for deprecated methods.",
            "format": "date",
            "type": "string"
          },
          "tier": {
            "description": "beta | stable | deprecated",
            "type": "string"
          },
          "version": {
            "type": "integer"
          }
        },
        "required": [
          "name",
          "version",
          "tier",
          "domain",
          "action",
          "summary",
          "price_credits",
          "providers"
        ],
        "type": "object"
      },
      "Comment": {
        "additionalProperties": false,
        "description": "A public comment on a post, normalized across providers.",
        "properties": {
          "author": {
            "properties": {
              "handle": {
                "description": "Username / handle without the leading @.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "description": "Platform-native user ID.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Display name.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "description": "Profile URL.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "handle",
              "name",
              "url"
            ],
            "type": "object"
          },
          "id": {
            "description": "Platform-native comment ID.",
            "type": "string"
          },
          "metrics": {
            "properties": {
              "likes": {
                "description": "Likes on the comment.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "replies": {
                "description": "Replies to the comment.",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "likes",
              "replies"
            ],
            "type": "object"
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "post_id": {
            "description": "ID of the post the comment belongs to.",
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "description": "RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "reply_to_id": {
            "description": "Parent comment ID when this is a reply; null for a top-level comment.",
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "description": "Comment text.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "post_id",
          "text",
          "published_at",
          "author",
          "reply_to_id",
          "metrics",
          "platform"
        ],
        "type": "object"
      },
      "CommentPage": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Comment"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or unsupported.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "CommentPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CommentPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a CommentPage."
      },
      "Company": {
        "additionalProperties": false,
        "description": "A company / organization profile, normalized across business-data providers (RootData, Crunchbase).",
        "properties": {
          "categories": {
            "description": "Industry / sector tags as the provider names them.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "description": {
            "description": "Short description / one-liner as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "employee_range": {
            "description": "Headcount band as reported, e.g. 11-50, 1001-5000, 10001+.",
            "type": [
              "string",
              "null"
            ]
          },
          "founded_at": {
            "description": "Founding date as the provider reports it: YYYY, YYYY-MM or YYYY-MM-DD.",
            "type": [
              "string",
              "null"
            ]
          },
          "funding_total": {
            "description": "Total disclosed funding.",
            "properties": {
              "amount": {
                "description": "Amount in major units.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "currency": {
                "description": "ISO 4217 currency code (RootData reports USD).",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "type": "object"
          },
          "id": {
            "description": "Provider-scoped company id: a RootData project id (digits) or a Crunchbase permalink. Pass it to business.company.get / business.company.funding; the server routes on its form.",
            "type": "string"
          },
          "last_funding_type": {
            "description": "Most recent round type as the provider names it (seed, series_a …).",
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "description": "Headquarters / operating region as a display string (city, region, country).",
            "type": [
              "string",
              "null"
            ]
          },
          "logo_url": {
            "description": "Logo image URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Company name.",
            "type": "string"
          },
          "status": {
            "description": "Operating status when reported: active | closed | ipo | acquired.",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "Profile page on the provider (rootdata.com / crunchbase.com).",
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "description": "Company website.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "website",
          "description",
          "founded_at",
          "location",
          "employee_range",
          "categories",
          "funding_total",
          "last_funding_type",
          "status",
          "logo_url"
        ],
        "type": "object"
      },
      "CompanyEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Company"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Company."
      },
      "CompanyPage": {
        "additionalProperties": false,
        "description": "One page of companies.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Company"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "CompanyPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CompanyPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a CompanyPage."
      },
      "CompanyProfile": {
        "additionalProperties": false,
        "description": "Static profile of a listed company.",
        "properties": {
          "address": {
            "description": "Headquarters address / city as the vendor reports it.",
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 of the company's country when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "description": "ISO 4217 reporting / quote currency.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Business description as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "employees": {
            "description": "Full-time employees.",
            "type": [
              "integer",
              "null"
            ]
          },
          "exchange": {
            "description": "Primary listing exchange as the vendor reports it.",
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "description": "Industry label in the vendor's taxonomy.",
            "type": [
              "string",
              "null"
            ]
          },
          "ipo_date": {
            "description": "Listing date, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "logo_url": {
            "description": "Logo image URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "market_cap": {
            "description": "Market capitalization in `currency`, major units.",
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "description": "Company name.",
            "type": [
              "string",
              "null"
            ]
          },
          "sector": {
            "description": "Sector label in the vendor's taxonomy.",
            "type": [
              "string",
              "null"
            ]
          },
          "shares_outstanding": {
            "description": "Shares outstanding as a plain count.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker as the vendor echoes it.",
            "type": "string"
          },
          "website": {
            "description": "Corporate website URL.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "name",
          "exchange",
          "country",
          "currency",
          "sector",
          "industry",
          "description",
          "website",
          "logo_url",
          "ipo_date",
          "market_cap",
          "shares_outstanding",
          "employees",
          "address"
        ],
        "type": "object"
      },
      "CompanyProfileEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/CompanyProfile"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a CompanyProfile."
      },
      "Cursor": {},
      "DerivativesSnapshot": {
        "additionalProperties": false,
        "description": "Current perpetual-futures state of one symbol on one exchange.",
        "properties": {
          "as_of": {
            "description": "Time of the open-interest reading, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "exchange": {
            "description": "Exchange slug the figures come from.",
            "type": [
              "string",
              "null"
            ]
          },
          "funding": {
            "properties": {
              "index_price": {
                "description": "Index price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "interval": {
                "description": "Funding interval (8h).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "mark_price": {
                "description": "Mark price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "next_at": {
                "description": "Next funding settlement, RFC 3339 UTC.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "rate": {
                "description": "Current funding rate as a decimal (0.0001 = 0.01%).",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "rate",
              "interval",
              "next_at",
              "mark_price",
              "index_price"
            ],
            "type": "object"
          },
          "liquidations_24h": {
            "properties": {
              "long_usd": {
                "description": "Long liquidations over the last 24 hours in USD.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "short_usd": {
                "description": "Short liquidations over the last 24 hours in USD.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_usd": {
                "description": "Liquidations over the last 24 hours in USD.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "total_usd",
              "long_usd",
              "short_usd"
            ],
            "type": "object"
          },
          "long_short_ratio": {
            "description": "Long/short account ratio (1.5 = 60% long) when the provider reports it.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest": {
            "properties": {
              "amount": {
                "description": "Open interest in base-asset units / contracts.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "usd": {
                "description": "Open interest in USD.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "usd",
              "amount"
            ],
            "type": "object"
          },
          "pair": {
            "description": "Contract pair as the exchange names it (BTC/USDT:USDT).",
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Base asset ticker (BTC).",
            "type": "string"
          },
          "volume_24h": {
            "description": "24-hour contract volume in USD when reported.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "exchange",
          "pair",
          "open_interest",
          "funding",
          "long_short_ratio",
          "volume_24h",
          "liquidations_24h",
          "as_of"
        ],
        "type": "object"
      },
      "DerivativesSnapshotEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/DerivativesSnapshot"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a DerivativesSnapshot."
      },
      "Earnings": {
        "additionalProperties": false,
        "description": "One reported earnings period with the consensus it was measured against.",
        "properties": {
          "eps_actual": {
            "description": "Reported EPS.",
            "type": [
              "number",
              "null"
            ]
          },
          "eps_estimate": {
            "description": "Consensus EPS estimate before the report.",
            "type": [
              "number",
              "null"
            ]
          },
          "period": {
            "description": "Fiscal period end, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "report_date": {
            "description": "Date the results were reported, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "revenue_actual": {
            "description": "Reported revenue when the vendor supplies it.",
            "type": [
              "number",
              "null"
            ]
          },
          "revenue_estimate": {
            "description": "Consensus revenue estimate when the vendor supplies it.",
            "type": [
              "number",
              "null"
            ]
          },
          "surprise": {
            "description": "eps_actual − eps_estimate.",
            "type": [
              "number",
              "null"
            ]
          },
          "surprise_percent": {
            "description": "Surprise in percent of the estimate (2.5 = +2.5 %).",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker as requested.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "period",
          "report_date",
          "eps_actual",
          "eps_estimate",
          "surprise",
          "surprise_percent",
          "revenue_actual",
          "revenue_estimate"
        ],
        "type": "object"
      },
      "EarningsPage": {
        "additionalProperties": false,
        "description": "One page of earnings periods, most recent first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Earnings"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "EarningsPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/EarningsPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a EarningsPage."
      },
      "Envelope": {
        "description": "Success envelope. `data` is the method's output object.",
        "properties": {
          "attempts": {
            "items": {
              "$ref": "#/components/schemas/Attempt"
            },
            "type": "array"
          },
          "credits_charged": {
            "description": "Credits charged for this call (the method's fixed price).",
            "type": "number"
          },
          "data": {
            "description": "Method output (typed per method)."
          },
          "op": {
            "description": "Method name.",
            "type": "string"
          },
          "op_version": {
            "description": "Method version that served the call.",
            "type": "integer"
          },
          "provider": {
            "description": "Provider that actually served the call.",
            "type": "string"
          },
          "raw": {
            "description": "Upstream payload, only with include_raw=true. Not a stable contract."
          },
          "raw_truncated": {
            "type": "boolean"
          },
          "request_id": {
            "description": "Correlation id; quote it in support requests.",
            "type": "string"
          },
          "took_ms": {
            "type": "integer"
          },
          "unsupported_fields": {
            "description": "Output paths this provider structurally does not supply; such fields are null for a different reason than 'missing on this record'.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "op",
          "op_version",
          "provider",
          "request_id",
          "credits_charged",
          "took_ms",
          "attempts",
          "unsupported_fields",
          "data"
        ],
        "type": "object"
      },
      "ErrorEnvelope": {
        "properties": {
          "attempts": {
            "items": {
              "$ref": "#/components/schemas/Attempt"
            },
            "type": "array"
          },
          "code": {
            "type": "integer"
          },
          "error": {
            "description": "Human-readable message.",
            "type": "string"
          },
          "error_type": {
            "description": "validation | not_found | rate_limit | timeout | insufficient_credits | upstream_unauthorized | upstream_unavailable | provider_error",
            "type": "string"
          },
          "op": {
            "description": "Method name.",
            "type": "string"
          },
          "request_id": {
            "description": "Correlation id.",
            "type": "string"
          }
        },
        "required": [
          "error",
          "code",
          "error_type"
        ],
        "type": "object"
      },
      "Estimates": {
        "additionalProperties": false,
        "description": "Analyst consensus for one company — the latest recommendation split and the per-period EPS / revenue estimates.",
        "properties": {
          "periods": {
            "description": "Consensus per forecast horizon; null when the provider only gives recommendations.",
            "items": {
              "properties": {
                "eps_analysts": {
                  "description": "Analysts in the EPS consensus.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "eps_avg": {
                  "description": "Consensus EPS.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "eps_high": {
                  "description": "Highest EPS estimate.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "eps_low": {
                  "description": "Lowest EPS estimate.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "horizon": {
                  "description": "Horizon label as the vendor names it (current quarter, next fiscal year, 0q, +1y …).",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "period_end": {
                  "description": "Fiscal period end the estimate is for, YYYY-MM-DD.",
                  "format": "date",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "revenue_analysts": {
                  "description": "Analysts in the revenue consensus.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "revenue_avg": {
                  "description": "Consensus revenue in the reporting currency.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "revenue_high": {
                  "description": "Highest revenue estimate.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "revenue_low": {
                  "description": "Lowest revenue estimate.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "horizon",
                "period_end",
                "eps_avg",
                "eps_low",
                "eps_high",
                "eps_analysts",
                "revenue_avg",
                "revenue_low",
                "revenue_high",
                "revenue_analysts"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "recommendation": {
            "description": "Latest analyst recommendation counts.",
            "properties": {
              "buy": {
                "description": "Analysts rating buy.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "hold": {
                "description": "Analysts rating hold.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "period": {
                "description": "Month the counts refer to, YYYY-MM-DD.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "sell": {
                "description": "Analysts rating sell.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "strong_buy": {
                "description": "Analysts rating strong buy.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "strong_sell": {
                "description": "Analysts rating strong sell.",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "strong_buy",
              "buy",
              "hold",
              "sell",
              "strong_sell",
              "period"
            ],
            "type": "object"
          },
          "symbol": {
            "description": "Ticker as requested.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "recommendation",
          "periods"
        ],
        "type": "object"
      },
      "EstimatesEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Estimates"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Estimates."
      },
      "FieldsProjection": {
        "description": "Projection: keep only these dotted paths of data, e.g. [\"items.id\", \"items.text\"].",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "Filing": {
        "additionalProperties": false,
        "description": "A regulatory filing (SEC EDGAR). Search methods fill the metadata; finance.filings.get fills text / sections for one document.",
        "properties": {
          "cik": {
            "description": "Filer CIK, zero-padded to 10 digits when the vendor pads it.",
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "description": "Filer name.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Filing description / document title.",
            "type": [
              "string",
              "null"
            ]
          },
          "filed_at": {
            "description": "Filing acceptance time, RFC 3339 UTC (date-only vendors give midnight UTC).",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "form_type": {
            "description": "Form type (10-K, 10-Q, 8-K, 4 …).",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Accession number (0000320193-25-000079).",
            "type": [
              "string",
              "null"
            ]
          },
          "period": {
            "description": "Period of report, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "sections": {
            "description": "Extracted sections (finance.filings.get); null for search results.",
            "items": {
              "properties": {
                "item": {
                  "description": "Section id as requested (1A, 7, part1item2 …).",
                  "type": "string"
                },
                "text": {
                  "description": "Section text.",
                  "type": "string"
                }
              },
              "required": [
                "item",
                "text"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "symbol": {
            "description": "Filer ticker when the vendor reports one.",
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "description": "Extracted document text (finance.filings.get); null for search results.",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "Primary document URL on www.sec.gov (or the vendor's rendering of it).",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "form_type",
          "filed_at",
          "period",
          "company",
          "cik",
          "symbol",
          "url",
          "description",
          "text",
          "sections"
        ],
        "type": "object"
      },
      "FilingEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Filing"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Filing."
      },
      "FilingPage": {
        "additionalProperties": false,
        "description": "One page of filings, most recent first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Filing"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "FilingPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/FilingPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a FilingPage."
      },
      "FinancialStatement": {
        "additionalProperties": false,
        "description": "One reporting period of one statement, with the normalized core line items. Items that belong to another statement are null.",
        "properties": {
          "currency": {
            "description": "ISO 4217 currency the amounts are reported in.",
            "type": [
              "string",
              "null"
            ]
          },
          "fiscal_date": {
            "description": "Fiscal period end, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "lines": {
            "description": "Normalized line items in `currency` major units (EPS in currency per share). A line the statement does not carry is null.",
            "properties": {
              "capital_expenditure": {
                "description": "Capital expenditure, as the vendor signs it (cashflow).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "cash_and_equivalents": {
                "description": "Cash and cash equivalents (balance).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "cost_of_revenue": {
                "description": "Cost of revenue / cost of goods sold (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "current_assets": {
                "description": "Total current assets (balance).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "current_liabilities": {
                "description": "Total current liabilities (balance).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "dividends_paid": {
                "description": "Dividends paid, as the vendor signs it (cashflow).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "ebitda": {
                "description": "EBITDA when the vendor reports it (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "eps_basic": {
                "description": "Basic earnings per share (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "eps_diluted": {
                "description": "Diluted earnings per share (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "financing_cash_flow": {
                "description": "Net cash from financing activities (cashflow).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "free_cash_flow": {
                "description": "Free cash flow when the vendor reports it (cashflow).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "gross_profit": {
                "description": "Gross profit (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "income_tax": {
                "description": "Income tax expense (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "interest_expense": {
                "description": "Interest expense (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "investing_cash_flow": {
                "description": "Net cash from investing activities (cashflow).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "long_term_debt": {
                "description": "Long-term debt / borrowings (balance).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "net_income": {
                "description": "Net income attributable to the company (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "operating_cash_flow": {
                "description": "Net cash from operating activities (cashflow).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "operating_expenses": {
                "description": "Total operating expenses (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "operating_income": {
                "description": "Operating income / profit (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "pretax_income": {
                "description": "Income before tax (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "revenue": {
                "description": "Total revenue (income).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_assets": {
                "description": "Total assets (balance).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_equity": {
                "description": "Total shareholders' equity (balance).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_liabilities": {
                "description": "Total liabilities (balance).",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "revenue",
              "cost_of_revenue",
              "gross_profit",
              "operating_expenses",
              "operating_income",
              "interest_expense",
              "pretax_income",
              "income_tax",
              "net_income",
              "eps_basic",
              "eps_diluted",
              "ebitda",
              "total_assets",
              "current_assets",
              "cash_and_equivalents",
              "total_liabilities",
              "current_liabilities",
              "long_term_debt",
              "total_equity",
              "operating_cash_flow",
              "investing_cash_flow",
              "financing_cash_flow",
              "capital_expenditure",
              "free_cash_flow",
              "dividends_paid"
            ],
            "type": "object"
          },
          "period": {
            "description": "Reporting frequency of this record.",
            "enum": [
              "annual",
              "quarterly"
            ],
            "type": "string"
          },
          "report_date": {
            "description": "Announcement / filing date when the vendor reports one, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "statement": {
            "description": "Which statement this record is.",
            "enum": [
              "income",
              "balance",
              "cashflow"
            ],
            "type": "string"
          },
          "symbol": {
            "description": "Ticker as requested.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "statement",
          "period",
          "fiscal_date",
          "report_date",
          "currency",
          "lines"
        ],
        "type": "object"
      },
      "FinancialStatementPage": {
        "additionalProperties": false,
        "description": "One page of statement periods, most recent first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/FinancialStatement"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "FinancialStatementPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/FinancialStatementPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a FinancialStatementPage."
      },
      "FlightOffer": {
        "additionalProperties": false,
        "description": "One bookable flight itinerary (all legs of the outbound and, for round trips, the return).",
        "properties": {
          "id": {
            "description": "Provider offer token (Booking.com flight token).",
            "type": "string"
          },
          "legs": {
            "description": "Flight legs in travel order (outbound legs, then return legs for round trips).",
            "items": {
              "properties": {
                "arrives_at": {
                  "description": "Arrival time, local time at the arrival airport, YYYY-MM-DDTHH:MM:SS (no zone).",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "carrier": {
                  "description": "Marketing airline name.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "departs_at": {
                  "description": "Departure time, local time at the departure airport, YYYY-MM-DDTHH:MM:SS (no zone).",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "duration_minutes": {
                  "description": "Leg duration in minutes.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "flight_number": {
                  "description": "Airline code plus flight number, e.g. BA 112.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "from": {
                  "description": "Departure airport IATA code.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "to": {
                  "description": "Arrival airport IATA code.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "carrier",
                "flight_number",
                "from",
                "to",
                "departs_at",
                "arrives_at",
                "duration_minutes"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "price": {
            "description": "Total price for all passengers in the requested currency.",
            "properties": {
              "amount": {
                "description": "Amount in major units.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "currency": {
                "description": "ISO 4217 currency code.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "type": "object"
          },
          "stops": {
            "description": "Number of stops on the outbound journey (0 = direct).",
            "type": [
              "integer",
              "null"
            ]
          },
          "url": {
            "description": "Booking page URL when the provider exposes one.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "price",
          "legs",
          "stops",
          "url"
        ],
        "type": "object"
      },
      "FlightOfferPage": {
        "additionalProperties": false,
        "description": "One page of flight offers.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/FlightOffer"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "FlightOfferPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/FlightOfferPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a FlightOfferPage."
      },
      "Forecast": {
        "additionalProperties": false,
        "description": "A multi-day weather forecast for one location.",
        "properties": {
          "days": {
            "description": "One entry per forecast day, in date order.",
            "items": {
              "properties": {
                "condition": {
                  "description": "Daytime weather condition text in the requested language (Sunny, 多云 …).",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "date": {
                  "description": "Forecast date, YYYY-MM-DD (local date of the location).",
                  "type": "string"
                },
                "humidity": {
                  "description": "Relative humidity, percent.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "precipitation": {
                  "description": "Expected precipitation, mm.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "precipitation_probability": {
                  "description": "Chance of precipitation, percent.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "sunrise": {
                  "description": "Sunrise, HH:MM local time.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sunset": {
                  "description": "Sunset, HH:MM local time.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "temp_max": {
                  "description": "Maximum temperature, °C.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "temp_min": {
                  "description": "Minimum temperature, °C.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "wind_direction": {
                  "description": "Daytime wind direction text in the requested language (NE, 东北风 …).",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "wind_speed": {
                  "description": "Daytime wind speed, km/h.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "date",
                "temp_min",
                "temp_max",
                "condition",
                "precipitation_probability",
                "precipitation",
                "humidity",
                "wind_speed",
                "wind_direction",
                "sunrise",
                "sunset"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "location": {
            "description": "The forecast location. lat / lon echo the request when the provider does not return them.",
            "properties": {
              "lat": {
                "description": "Latitude in decimal degrees.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "lon": {
                "description": "Longitude in decimal degrees.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "name": {
                "description": "Location name when the provider reports one.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "name",
              "lat",
              "lon"
            ],
            "type": "object"
          },
          "updated_at": {
            "description": "When the provider last updated the forecast, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "location",
          "days",
          "updated_at"
        ],
        "type": "object"
      },
      "ForecastEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Forecast"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Forecast."
      },
      "FundingRound": {
        "additionalProperties": false,
        "description": "One funding round of a company.",
        "properties": {
          "amount": {
            "description": "Amount raised.",
            "properties": {
              "amount": {
                "description": "Amount in major units; null when undisclosed.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "currency": {
                "description": "ISO 4217 currency code (RootData reports USD).",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "type": "object"
          },
          "announced_at": {
            "description": "Announcement date: YYYY-MM-DD (Crunchbase) or YYYY-MM (RootData).",
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "description": "The company that raised the round.",
            "properties": {
              "id": {
                "description": "Provider-scoped company id (same form as Company.id).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Company name.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name"
            ],
            "type": "object"
          },
          "id": {
            "description": "Provider-scoped round id (Crunchbase permalink, RootData record id).",
            "type": "string"
          },
          "investors": {
            "description": "Participating investors (including leads).",
            "items": {
              "properties": {
                "id": {
                  "description": "Provider-scoped investor id (Crunchbase permalink, RootData investor id).",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "description": "Investor name.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "name"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "lead_investors": {
            "description": "Lead investors of the round.",
            "items": {
              "properties": {
                "id": {
                  "description": "Provider-scoped investor id.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "description": "Investor name.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "name"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "type": {
            "description": "Round type as the provider names it (Seed, Series A, series_b, pre_seed …).",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "Round page on the provider when it has one.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "type",
          "announced_at",
          "amount",
          "investors",
          "lead_investors",
          "company",
          "url"
        ],
        "type": "object"
      },
      "FundingRoundPage": {
        "additionalProperties": false,
        "description": "One page of funding rounds.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/FundingRound"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "FundingRoundPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/FundingRoundPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a FundingRoundPage."
      },
      "GeoLocation": {
        "additionalProperties": false,
        "description": "A place the weather provider knows, with the id its forecast endpoints take (decision 2026-10-13",
        "properties": {
          "city": {
            "description": "Second-level division (city / county).",
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "description": "Country name.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider location id (QWeather LocationID), accepted by weather.forecast as location_id.",
            "type": "string"
          },
          "lat": {
            "description": "Latitude.",
            "type": [
              "number",
              "null"
            ]
          },
          "lon": {
            "description": "Longitude.",
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "description": "Place name in the requested language.",
            "type": "string"
          },
          "region": {
            "description": "First-level administrative division (province / state).",
            "type": [
              "string",
              "null"
            ]
          },
          "timezone": {
            "description": "IANA time zone.",
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "description": "Place kind as the provider reports it (city, scenic …).",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "country",
          "region",
          "city",
          "lat",
          "lon",
          "timezone",
          "type"
        ],
        "type": "object"
      },
      "GeoLocationPage": {
        "additionalProperties": false,
        "description": "One page of places.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/GeoLocation"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Always null — lookups return one list.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "GeoLocationPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/GeoLocationPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a GeoLocationPage."
      },
      "Holding": {
        "additionalProperties": false,
        "description": "One holder's position in a company, from 13F / top-holder lists (institution) or insider filings (insider).",
        "properties": {
          "as_of": {
            "description": "Report period end or transaction date, YYYY-MM-DD.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "change": {
            "description": "Change in shares versus the previous report / the transaction size, signed.",
            "type": [
              "number",
              "null"
            ]
          },
          "holder": {
            "description": "Holder name as filed.",
            "type": "string"
          },
          "holder_type": {
            "description": "Kind of holder; null when the vendor does not say.",
            "enum": [
              "institution",
              "insider",
              "individual",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "percent": {
            "description": "Percent of shares outstanding (5.2 = 5.2 %).",
            "type": [
              "number",
              "null"
            ]
          },
          "shares": {
            "description": "Shares held at as_of (for insider records, shares held after the transaction).",
            "type": [
              "number",
              "null"
            ]
          },
          "value": {
            "description": "Position value in the listing currency when the vendor reports it.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "holder",
          "holder_type",
          "shares",
          "value",
          "percent",
          "change",
          "as_of"
        ],
        "type": "object"
      },
      "Hotel": {
        "additionalProperties": false,
        "description": "A hotel offer for the requested dates and guests.",
        "properties": {
          "address": {
            "description": "Street address / district as a display string.",
            "type": [
              "string",
              "null"
            ]
          },
          "checkin": {
            "description": "Earliest check-in time as the hotel states it, HH:MM local.",
            "type": [
              "string",
              "null"
            ]
          },
          "checkout": {
            "description": "Latest check-out time as the hotel states it, HH:MM local.",
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "description": "City / town name as the provider reports it.",
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 country code.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider hotel id (Booking.com hotel_id).",
            "type": "string"
          },
          "lat": {
            "description": "Latitude in decimal degrees.",
            "type": [
              "number",
              "null"
            ]
          },
          "lon": {
            "description": "Longitude in decimal degrees.",
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "description": "Hotel name.",
            "type": "string"
          },
          "photo_url": {
            "description": "Main photo URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "description": "Total price for the whole stay (all requested nights, rooms and guests) in the requested currency.",
            "properties": {
              "amount": {
                "description": "Amount in major units.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "currency": {
                "description": "ISO 4217 currency code.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "type": "object"
          },
          "rating": {
            "description": "Guest review score.",
            "properties": {
              "count": {
                "description": "Number of reviews.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "score": {
                "description": "Average review score on the provider's scale (Booking.com 0–10).",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "score",
              "count"
            ],
            "type": "object"
          },
          "stars": {
            "description": "Hotel star class (0 when unrated).",
            "type": [
              "integer",
              "null"
            ]
          },
          "url": {
            "description": "Hotel page URL on the provider.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "address",
          "city",
          "country",
          "lat",
          "lon",
          "stars",
          "rating",
          "price",
          "photo_url",
          "checkin",
          "checkout"
        ],
        "type": "object"
      },
      "HotelPage": {
        "additionalProperties": false,
        "description": "One page of hotel offers.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Hotel"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "HotelPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/HotelPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a HotelPage."
      },
      "IncludeRaw": {
        "default": false,
        "description": "Attach the raw upstream payload as `raw` (not a stable contract; truncated above 256 KB).",
        "type": "boolean"
      },
      "Job": {
        "additionalProperties": false,
        "description": "A job posting, normalized across job boards / aggregators (JSearch, Liepin).",
        "properties": {
          "company": {
            "description": "Hiring company name.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Full job description as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "employment_type": {
            "description": "Normalized employment type when reported: full_time | part_time | contract | internship.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider job id (an opaque JSearch id, a Liepin job id). JSearch ids can be passed to jobs.get.",
            "type": "string"
          },
          "location": {
            "description": "Location as a display string (city, region, country).",
            "type": [
              "string",
              "null"
            ]
          },
          "posted_at": {
            "description": "Posting time, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "remote": {
            "description": "Whether the job is remote / work-from-home.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "salary": {
            "description": "Salary range when the posting states one.",
            "properties": {
              "currency": {
                "description": "ISO 4217 currency code.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "max": {
                "description": "Upper bound in major units.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "min": {
                "description": "Lower bound in major units.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "period": {
                "description": "Pay period: year | month | week | day | hour.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "min",
              "max",
              "currency",
              "period"
            ],
            "type": "object"
          },
          "source": {
            "description": "Publisher / job board the posting was found on.",
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "description": "Job title.",
            "type": "string"
          },
          "url": {
            "description": "Posting / apply URL.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "title",
          "company",
          "location",
          "remote",
          "employment_type",
          "salary",
          "posted_at",
          "url",
          "description",
          "source"
        ],
        "type": "object"
      },
      "JobEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Job"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Job."
      },
      "JobPage": {
        "additionalProperties": false,
        "description": "One page of job postings.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Job"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "JobPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/JobPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a JobPage."
      },
      "LinkTarget": {
        "additionalProperties": false,
        "description": "What a share link or short link points at.",
        "properties": {
          "id": {
            "description": "Platform-native ID of the target.",
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "description": "Target kind.",
            "enum": [
              "post",
              "user",
              "topic",
              "unknown"
            ],
            "type": "string"
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "url": {
            "description": "Canonical URL of the target.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "id",
          "url",
          "platform"
        ],
        "type": "object"
      },
      "LinkTargetEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/LinkTarget"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a LinkTarget."
      },
      "MethodDescription": {
        "description": "Full description of a method: schemas, bindings with live health and list prices, unsupported fields, per-provider examples (examples are served here, not in this document).",
        "properties": {
          "bindings": {
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "input_schema": {
            "type": "object"
          },
          "name": {
            "description": "Method name.",
            "type": "string"
          },
          "output_schema": {
            "type": "object"
          },
          "price_credits": {
            "type": "number"
          },
          "reserved_params": {
            "type": "object"
          },
          "strategies": {
            "description": "routing.strategy values this server accepts.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tier": {
            "description": "beta | stable | deprecated",
            "type": "string"
          },
          "version": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "NewsArticle": {
        "additionalProperties": false,
        "description": "A news article, normalized across providers.",
        "properties": {
          "id": {
            "description": "Provider-native article ID when there is one; null for pure web results.",
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "description": "Lead image URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "lang": {
            "description": "BCP 47 language tag when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "description": "RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "description": "Publisher name or hostname.",
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "description": "Summary / lead paragraph as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "tickers": {
            "description": "Related symbols / tokens as the provider tags them (AAPL, BTC). null when the provider does not tag articles.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "title": {
            "description": "Headline.",
            "type": "string"
          },
          "url": {
            "description": "Article URL.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "url",
          "title",
          "summary",
          "source",
          "published_at",
          "lang",
          "image_url",
          "tickers"
        ],
        "type": "object"
      },
      "NewsArticlePage": {
        "additionalProperties": false,
        "description": "One page of news articles.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NewsArticle"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "NewsArticlePageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/NewsArticlePage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a NewsArticlePage."
      },
      "OwnershipPage": {
        "additionalProperties": false,
        "description": "One page of holdings.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Holding"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "OwnershipPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/OwnershipPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a OwnershipPage."
      },
      "Paper": {
        "additionalProperties": false,
        "description": "A scholarly paper, normalized across alphaXiv (arXiv), AMiner and Google Scholar (Serper).",
        "properties": {
          "abstract": {
            "description": "Abstract or snippet as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "arxiv_id": {
            "description": "arXiv identifier (2307.12307) when known.",
            "type": [
              "string",
              "null"
            ]
          },
          "authors": {
            "description": "Author names in listed order (Google Scholar shows only the first few of a long list).",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "citations_count": {
            "description": "Citation count as the provider reports it.",
            "type": [
              "integer",
              "null"
            ]
          },
          "doi": {
            "description": "DOI when known.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider-scoped paper id: arXiv id (alphaXiv), AMiner id (24 hex chars) or Google Scholar result id. arXiv and AMiner ids can be passed to academic.paper.get.",
            "type": "string"
          },
          "pdf_url": {
            "description": "Direct PDF URL when known.",
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "description": "Publication date as the provider reports it: YYYY-MM-DD, YYYY-MM or YYYY.",
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "description": "Paper title.",
            "type": "string"
          },
          "url": {
            "description": "Landing page URL (arXiv abstract, publisher page, provider page).",
            "type": [
              "string",
              "null"
            ]
          },
          "venue": {
            "description": "Journal / conference name when reported.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "arxiv_id",
          "doi",
          "title",
          "abstract",
          "authors",
          "published_at",
          "venue",
          "url",
          "pdf_url",
          "citations_count"
        ],
        "type": "object"
      },
      "PaperEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Paper"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Paper."
      },
      "PaperPage": {
        "additionalProperties": false,
        "description": "One page of papers.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Paper"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "PaperPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/PaperPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a PaperPage."
      },
      "Person": {
        "additionalProperties": false,
        "description": "A business person profile (founder, executive, investor), normalized across providers.",
        "properties": {
          "avatar_url": {
            "description": "Profile photo URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "description": "Biography / introduction as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "description": "Current primary organization.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider-scoped person id: a RootData people id (digits) or a Crunchbase permalink.",
            "type": "string"
          },
          "linkedin_url": {
            "description": "LinkedIn profile URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "description": "Location as a display string.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Full name.",
            "type": "string"
          },
          "title": {
            "description": "Current job title.",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "Profile page on the provider.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "title",
          "company",
          "location",
          "bio",
          "linkedin_url",
          "url",
          "avatar_url"
        ],
        "type": "object"
      },
      "PersonEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Person"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Person."
      },
      "Post": {
        "additionalProperties": false,
        "description": "A public post on a social platform, normalized across providers.",
        "properties": {
          "author": {
            "properties": {
              "created_at": {
                "description": "Account creation time, RFC 3339 UTC. Candidate field (D21).",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "followers_count": {
                "description": "Follower count at crawl time. Candidate field (D21).",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "handle": {
                "description": "Username / handle without the leading @.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "description": "Platform-native user ID.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Display name.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "description": "Profile URL.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "verified": {
                "description": "Platform verification badge. Candidate field (D21).",
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "handle",
              "name",
              "url",
              "followers_count",
              "verified",
              "created_at"
            ],
            "type": "object"
          },
          "id": {
            "description": "Platform-native post ID.",
            "type": "string"
          },
          "lang": {
            "description": "BCP 47 language tag when the platform reports one.",
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "description": "Attached media. null when the provider does not expose media at all.",
            "items": {
              "properties": {
                "thumbnail_url": {
                  "description": "Thumbnail / cover URL.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": {
                  "description": "Media kind.",
                  "enum": [
                    "image",
                    "video"
                  ],
                  "type": "string"
                },
                "url": {
                  "description": "Direct media URL (image file or playable video). Null when the platform exposes only a cover for the item (bilibili, WeChat Channels, YouTube) — thumbnail_url still points at that cover.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "type",
                "url"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "metrics": {
            "description": "Engagement counters. null means the provider supports the counter but this record has none; a provider that never supplies a counter lists it in unsupported_fields.",
            "properties": {
              "bookmarks": {
                "description": "Bookmarks.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "collects": {
                "description": "Collects / favourites (Xiaohongshu-style).",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "likes": {
                "description": "Likes.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "quotes": {
                "description": "Quote posts.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "replies": {
                "description": "Replies / comments.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "reposts": {
                "description": "Reposts / retweets / shares.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "views": {
                "description": "Views / impressions.",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "likes",
              "reposts",
              "replies",
              "quotes",
              "views",
              "bookmarks",
              "collects"
            ],
            "type": "object"
          },
          "platform": {
            "description": "Platform slug, identical to the one in the method name.",
            "type": "string"
          },
          "published_at": {
            "description": "Publish time, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "description": "Post text. Includes the title when the platform has one (title, newline, body), so a caller that ignores `title` still sees everything. Empty string when the post has no text body.",
            "type": "string"
          },
          "title": {
            "description": "Headline / title when the platform has one (Xiaohongshu notes, bilibili and YouTube videos, Zhihu answers' questions, Reddit and WeChat articles); null on platforms without titles (X, Instagram, TikTok comments).",
            "type": [
              "string",
              "null"
            ]
          },
          "topic": {
            "description": "Community or board the post belongs to (subreddit, collection). Candidate field (D21).",
            "properties": {
              "id": {
                "description": "Platform-native topic ID.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Topic display name.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name"
            ],
            "type": "object"
          },
          "url": {
            "description": "Canonical URL of the post.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "url",
          "platform",
          "title",
          "text",
          "published_at",
          "lang",
          "author",
          "topic",
          "media",
          "metrics"
        ],
        "type": "object"
      },
      "PostEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Post"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Post."
      },
      "PostPage": {
        "additionalProperties": false,
        "description": "One page of posts.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Post"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when the result set is exhausted or the provider cannot page. Send it back unchanged with the same query parameters.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "PostPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/PostPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a PostPage."
      },
      "Product": {
        "additionalProperties": false,
        "description": "A product listing on an ecommerce platform, normalized across providers.",
        "properties": {
          "brand": {
            "description": "Brand name when the platform reports one.",
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "description": "Platform category name (leaf) when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Listing description / selling points as plain text; null when the endpoint returns only a card.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Platform-native product / item ID (ASIN on Amazon, item id on Taobao).",
            "type": "string"
          },
          "image_url": {
            "description": "Main listing image URL (the cover every search card carries).",
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "description": "Listing image URLs, main image first. null when the provider exposes no images at all.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "in_stock": {
            "description": "Whether the listing is purchasable right now; null when not reported.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "monthly_sales_count": {
            "description": "Units sold in the past month when that is what the platform shows (Amazon's \"500+ bought in past month\" badge, Douyin Shop's \"月销\" on search cards and shop listings). Not comparable with sales_count.",
            "type": [
              "integer",
              "null"
            ]
          },
          "platform": {
            "description": "Platform slug, identical to the one in the method name.",
            "type": "string"
          },
          "price": {
            "description": "Current price. amount is the displayed selling price; original_amount the struck-through list price when there is a discount.",
            "properties": {
              "amount": {
                "description": "Selling price in major units (12.5 = 12.50).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "currency": {
                "description": "ISO 4217 currency code (CNY, USD, SGD …).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "original_amount": {
                "description": "List / pre-discount price when shown; null otherwise.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "amount",
              "currency",
              "original_amount"
            ],
            "type": "object"
          },
          "rating": {
            "properties": {
              "count": {
                "description": "Number of ratings / reviews.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "score": {
                "description": "Average rating on the platform's own scale (Amazon 0–5, Taobao 0–5).",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "score",
              "count"
            ],
            "type": "object"
          },
          "sales_count": {
            "description": "Cumulative units sold / \"已售\" counter when the platform exposes one (approximate on platforms that report \"1万+\"). Platforms that only show a past-month figure report it in monthly_sales_count instead.",
            "type": [
              "integer",
              "null"
            ]
          },
          "sales_text": {
            "description": "The platform's own sales line as displayed (\"1万+人收货\", \"1.8K+ sold\", \"500+ bought in past month\"); sales_count or monthly_sales_count is the number read from it.",
            "type": [
              "string",
              "null"
            ]
          },
          "shop": {
            "description": "The seller of the listing.",
            "properties": {
              "id": {
                "description": "Platform-native shop / seller ID.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Shop display name.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "description": "Shop page URL.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name",
              "url"
            ],
            "type": "object"
          },
          "title": {
            "description": "Listing title.",
            "type": "string"
          },
          "url": {
            "description": "Canonical product page URL.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "url",
          "platform",
          "title",
          "description",
          "brand",
          "category",
          "price",
          "rating",
          "sales_count",
          "monthly_sales_count",
          "sales_text",
          "in_stock",
          "image_url",
          "images",
          "shop"
        ],
        "type": "object"
      },
      "ProductEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Product"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Product."
      },
      "ProductPage": {
        "additionalProperties": false,
        "description": "One page of products.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Product"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when the result set is exhausted or the provider cannot page. Send it back unchanged with the same query parameters.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "ProductPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/ProductPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a ProductPage."
      },
      "ProviderShorthand": {
        "description": "Shorthand for routing.only = [provider].",
        "type": "string"
      },
      "Quote": {
        "additionalProperties": false,
        "description": "Latest price snapshot of one instrument (delayed or end-of-day depending on the provider).",
        "properties": {
          "as_of": {
            "description": "Time of the last trade / snapshot, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "change": {
            "description": "Price change versus the previous close, in currency units.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_percent": {
            "description": "Price change versus the previous close in percent (1.5 = +1.5 %).",
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "description": "ISO 4217 quote currency.",
            "type": [
              "string",
              "null"
            ]
          },
          "high": {
            "description": "Session high.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Session low.",
            "type": [
              "number",
              "null"
            ]
          },
          "market_cap": {
            "description": "Market capitalization in the quote currency, major units.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "Session open.",
            "type": [
              "number",
              "null"
            ]
          },
          "previous_close": {
            "description": "Previous session close.",
            "type": [
              "number",
              "null"
            ]
          },
          "price": {
            "description": "Last traded price.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker as the vendor echoes it.",
            "type": "string"
          },
          "volume": {
            "description": "Session volume in shares.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "change",
          "change_percent",
          "open",
          "high",
          "low",
          "previous_close",
          "volume",
          "market_cap",
          "currency",
          "as_of"
        ],
        "type": "object"
      },
      "QuoteEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Quote"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Quote."
      },
      "Review": {
        "additionalProperties": false,
        "description": "A buyer review of a product, normalized across providers.",
        "properties": {
          "author": {
            "properties": {
              "id": {
                "description": "Platform-native reviewer ID.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Reviewer display name (platforms often mask it).",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "name"
            ],
            "type": "object"
          },
          "country": {
            "description": "Marketplace / reviewer country as the platform reports it (ISO code or name).",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Platform-native review ID.",
            "type": "string"
          },
          "images": {
            "description": "Review photo URLs. null when the provider exposes no review media.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "metrics": {
            "properties": {
              "likes": {
                "description": "Helpful votes / likes.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "replies": {
                "description": "Replies (seller or buyers).",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "likes",
              "replies"
            ],
            "type": "object"
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "product_id": {
            "description": "ID of the reviewed product.",
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "description": "RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "description": "The reviewer's rating on the platform's scale (usually 1–5).",
            "type": [
              "number",
              "null"
            ]
          },
          "sku": {
            "description": "The variant the reviewer bought, as the platform describes it (\"Color: Black, Size: L\").",
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "description": "Review text; empty string for a rating-only review.",
            "type": "string"
          },
          "title": {
            "description": "Review headline when the platform has one (Amazon); null elsewhere.",
            "type": [
              "string",
              "null"
            ]
          },
          "verified_purchase": {
            "description": "Whether the platform marks the review as a verified purchase; null when it does not say.",
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "product_id",
          "title",
          "text",
          "rating",
          "published_at",
          "author",
          "sku",
          "images",
          "verified_purchase",
          "country",
          "metrics",
          "platform"
        ],
        "type": "object"
      },
      "ReviewPage": {
        "additionalProperties": false,
        "description": "One page of reviews.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Review"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "ReviewPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/ReviewPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a ReviewPage."
      },
      "Routing": {
        "additionalProperties": false,
        "description": "Provider routing override. order: try these providers first; only: restrict to these (equivalent to pinning); allow_fallbacks: false tries only the first eligible provider.",
        "properties": {
          "allow_fallbacks": {
            "default": true,
            "description": "false = try only the first eligible provider.",
            "type": "boolean"
          },
          "only": {
            "description": "Restrict to these providers.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "order": {
            "description": "Providers to try first, in order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "strategy": {
            "default": "auto",
            "description": "How eligible providers are ordered. auto = the method's curated order. fastest / stable / popular are specified but not implemented yet (400 until then). The price is fixed whatever the strategy; mutually exclusive with order.",
            "enum": [
              "auto"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "SeriesPoint": {
        "additionalProperties": false,
        "description": "One observation of a macroeconomic series.",
        "properties": {
          "country": {
            "description": "ISO 3166-1 alpha-2 of the economy.",
            "type": "string"
          },
          "date": {
            "description": "First calendar day of the observation period, YYYY-MM-DD (2025-07-01 for 2025 Q3, 2025-01-01 for the year 2025).",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "interval": {
            "description": "Reporting frequency of this series at this provider.",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "quarterly",
              "semiannual",
              "annual",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "series": {
            "description": "Series id as requested (cpi, gdp, unemployment …).",
            "type": "string"
          },
          "unit": {
            "description": "Unit as the vendor states it (percent, index 1982-1984=100, billions of dollars, 亿元 …).",
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "description": "Observed value in `unit`.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "series",
          "country",
          "date",
          "value",
          "unit",
          "interval"
        ],
        "type": "object"
      },
      "SeriesPointPage": {
        "additionalProperties": false,
        "description": "One page of observations, most recent first.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/SeriesPoint"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "SeriesPointPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/SeriesPointPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a SeriesPointPage."
      },
      "Shop": {
        "additionalProperties": false,
        "description": "A seller / storefront on an ecommerce platform.",
        "properties": {
          "description": {
            "description": "Shop blurb when the platform has one.",
            "type": [
              "string",
              "null"
            ]
          },
          "followers_count": {
            "description": "Followers / fans of the shop.",
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "description": "Platform-native shop / seller ID.",
            "type": "string"
          },
          "location": {
            "description": "Shop location as the platform shows it (city / country).",
            "type": [
              "string",
              "null"
            ]
          },
          "logo_url": {
            "description": "Shop avatar / logo URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Shop display name.",
            "type": "string"
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "products_count": {
            "description": "Number of listings in the shop.",
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "properties": {
              "count": {
                "description": "Number of shop ratings.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "score": {
                "description": "Shop rating on the platform's scale.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "score",
              "count"
            ],
            "type": "object"
          },
          "sales_count": {
            "description": "Lifetime units sold when reported.",
            "type": [
              "integer",
              "null"
            ]
          },
          "url": {
            "description": "Shop page URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "verified": {
            "description": "Official / mall / preferred-seller badge when the platform has one.",
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "url",
          "platform",
          "name",
          "description",
          "logo_url",
          "rating",
          "followers_count",
          "products_count",
          "sales_count",
          "location",
          "verified"
        ],
        "type": "object"
      },
      "ShopEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Shop"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Shop."
      },
      "Symbol": {
        "additionalProperties": false,
        "description": "A tradable instrument as a search engine resolves it.",
        "properties": {
          "country": {
            "description": "ISO 3166-1 alpha-2 of the listing country when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "description": "ISO 4217 quote currency when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "exchange": {
            "description": "Exchange code or name as the vendor reports it (NMS, HKG, SSE).",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Instrument / company name.",
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker in the quoting vendor's form (AAPL, 0700.HK, 600519.SS). Pass it unchanged to finance.quote / finance.company.profile.",
            "type": "string"
          },
          "type": {
            "description": "Normalized instrument kind; other when the vendor's type is not one of the known kinds.",
            "enum": [
              "equity",
              "etf",
              "index",
              "fund",
              "crypto",
              "currency",
              "future",
              "option",
              "bond",
              "other",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "name",
          "exchange",
          "type",
          "currency",
          "country"
        ],
        "type": "object"
      },
      "SymbolPage": {
        "additionalProperties": false,
        "description": "One page of symbol matches.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Symbol"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "SymbolPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/SymbolPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a SymbolPage."
      },
      "Token": {
        "additionalProperties": false,
        "description": "One row of a ranked token list.",
        "properties": {
          "id": {
            "description": "Provider-native identifier.",
            "type": [
              "string",
              "null"
            ]
          },
          "logo_url": {
            "description": "Logo image URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Token name.",
            "type": [
              "string",
              "null"
            ]
          },
          "quote": {
            "$ref": "#/components/schemas/TokenQuote"
          },
          "rank": {
            "description": "Position in the ranking (1 = largest).",
            "type": [
              "integer",
              "null"
            ]
          },
          "slug": {
            "description": "URL slug on the provider.",
            "type": [
              "string",
              "null"
            ]
          },
          "supply": {
            "properties": {
              "circulating": {
                "description": "Circulating supply, decimal-adjusted.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "max": {
                "description": "Maximum supply when capped; null otherwise.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total": {
                "description": "Total supply, decimal-adjusted.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "circulating",
              "total",
              "max"
            ],
            "type": "object"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "symbol",
          "name",
          "slug",
          "rank",
          "logo_url",
          "supply",
          "quote"
        ],
        "type": "object"
      },
      "TokenHolder": {
        "additionalProperties": false,
        "description": "One holder of a token.",
        "properties": {
          "address": {
            "description": "Holder wallet address.",
            "type": "string"
          },
          "balance": {
            "description": "Decimal-adjusted balance.",
            "type": [
              "number",
              "null"
            ]
          },
          "balance_raw": {
            "description": "Balance in the smallest unit as reported, for full precision.",
            "type": [
              "string",
              "null"
            ]
          },
          "share_pct": {
            "description": "Share of total supply in percent (5.2 = 5.2%) when reported.",
            "type": [
              "number",
              "null"
            ]
          },
          "value_usd": {
            "description": "USD value of the position when the provider computes it.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "address",
          "balance",
          "balance_raw",
          "value_usd",
          "share_pct"
        ],
        "type": "object"
      },
      "TokenHolderPage": {
        "additionalProperties": false,
        "description": "One page of token holders, largest first where the provider ranks them.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/TokenHolder"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "TokenHolderPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TokenHolderPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TokenHolderPage."
      },
      "TokenInfo": {
        "additionalProperties": false,
        "description": "Static profile of a token / crypto project.",
        "properties": {
          "contracts": {
            "description": "Known contract deployments. null when the provider does not expose contracts.",
            "items": {
              "properties": {
                "address": {
                  "description": "Contract address.",
                  "type": "string"
                },
                "chain": {
                  "description": "Chain name as the provider spells it.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "decimals": {
                  "description": "Token decimals when reported.",
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "chain",
                "address",
                "decimals"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "date_added": {
            "description": "When the provider first listed the token, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Short project description as plain text.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider-native identifier (CoinMarketCap id, Surf project UUID); null when the lookup key itself is the identity (contract address).",
            "type": [
              "string",
              "null"
            ]
          },
          "logo_url": {
            "description": "Logo image URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Token / project name.",
            "type": [
              "string",
              "null"
            ]
          },
          "slug": {
            "description": "URL slug on the provider (bitcoin).",
            "type": [
              "string",
              "null"
            ]
          },
          "supply": {
            "description": "Supply figures as far as the profile provider reports them. No maximum supply here (none of the crypto.token.info bindings has one); crypto.market.list's Token carries supply.max.",
            "properties": {
              "circulating": {
                "description": "Circulating supply, decimal-adjusted.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total": {
                "description": "Total supply, decimal-adjusted.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "circulating",
              "total"
            ],
            "type": "object"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "description": "Category tags as the provider assigns them (defi, layer-1, …). null when the provider has no tagging.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "website": {
            "description": "Official website URL.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "symbol",
          "name",
          "slug",
          "description",
          "logo_url",
          "website",
          "tags",
          "date_added",
          "contracts",
          "supply"
        ],
        "type": "object"
      },
      "TokenInfoEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TokenInfo"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TokenInfo."
      },
      "TokenPage": {
        "additionalProperties": false,
        "description": "One page of a ranked token list.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Token"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page. Send it back unchanged with the same query parameters.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "TokenPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TokenPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TokenPage."
      },
      "TokenPrice": {
        "additionalProperties": false,
        "description": "The current price of one token, looked up by symbol or by contract address.",
        "properties": {
          "contract": {
            "description": "On-chain identity when the lookup was by contract, or when the provider reports one; both null for native coins looked up by symbol.",
            "properties": {
              "address": {
                "description": "Contract address on `chain`.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "chain": {
                "description": "Chain slug (ethereum, bsc, …).",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "chain",
              "address"
            ],
            "type": "object"
          },
          "name": {
            "description": "Token name when the provider reports one.",
            "type": [
              "string",
              "null"
            ]
          },
          "quote": {
            "$ref": "#/components/schemas/TokenQuote"
          },
          "symbol": {
            "description": "Ticker symbol (BTC, USDC).",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "name",
          "contract",
          "quote"
        ],
        "type": "object"
      },
      "TokenPriceEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TokenPrice"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TokenPrice."
      },
      "TokenQuote": {
        "additionalProperties": false,
        "description": "Market quote of one token in one quote currency.",
        "properties": {
          "as_of": {
            "description": "Time the quote was computed, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "change_1h_pct": {
            "description": "Price change over the last hour, in percent (1.5 = +1.5%).",
            "type": [
              "number",
              "null"
            ]
          },
          "change_24h_pct": {
            "description": "Price change over the last 24 hours, in percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_7d_pct": {
            "description": "Price change over the last 7 days, in percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "description": "ISO 4217 code of the quote currency (USD).",
            "type": "string"
          },
          "fdv": {
            "description": "Fully diluted valuation in `currency`.",
            "type": [
              "number",
              "null"
            ]
          },
          "market_cap": {
            "description": "Circulating market capitalization in `currency`.",
            "type": [
              "number",
              "null"
            ]
          },
          "price": {
            "description": "Last price in `currency`.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume_24h": {
            "description": "Trading volume over the last 24 hours in `currency`.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "price",
          "currency",
          "change_1h_pct",
          "change_24h_pct",
          "change_7d_pct",
          "market_cap",
          "fdv",
          "volume_24h",
          "as_of"
        ],
        "type": "object"
      },
      "Topic": {
        "additionalProperties": false,
        "description": "A trending topic, hashtag or board.",
        "properties": {
          "id": {
            "description": "Platform-native topic ID when the platform has one.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Topic name as displayed.",
            "type": "string"
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "post_count": {
            "description": "Posts under the topic when reported.",
            "type": [
              "integer",
              "null"
            ]
          },
          "url": {
            "description": "Topic page URL.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "post_count",
          "platform"
        ],
        "type": "object"
      },
      "TopicPage": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Topic"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or unsupported.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "TopicPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TopicPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TopicPage."
      },
      "Transaction": {
        "additionalProperties": false,
        "description": "One transaction of a wallet.",
        "properties": {
          "block_number": {
            "description": "Block height when reported.",
            "type": [
              "integer",
              "null"
            ]
          },
          "chain": {
            "description": "Chain slug.",
            "type": "string"
          },
          "fee": {
            "description": "Transaction fee paid in the native coin, decimal-adjusted; null when not reported.",
            "type": [
              "number",
              "null"
            ]
          },
          "from": {
            "description": "Sender address.",
            "type": [
              "string",
              "null"
            ]
          },
          "hash": {
            "description": "Transaction hash.",
            "type": "string"
          },
          "status": {
            "description": "Execution outcome when the provider reports it, `success` or `failed`.",
            "type": [
              "string",
              "null"
            ]
          },
          "timestamp": {
            "description": "Block / confirmation time, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "to": {
            "description": "Recipient address (contract for calls); null for contract creations.",
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "description": "Provider's classification of the transaction (send, receive, swap, approve, contract_call …) when it gives one.",
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "description": "Native coin amount transferred, decimal-adjusted (ETH on Ethereum).",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "hash",
          "chain",
          "block_number",
          "timestamp",
          "from",
          "to",
          "value",
          "fee",
          "status",
          "type"
        ],
        "type": "object"
      },
      "TransactionPage": {
        "additionalProperties": false,
        "description": "One page of transactions.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/Transaction"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "TransactionPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TransactionPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TransactionPage."
      },
      "Transcript": {
        "additionalProperties": false,
        "description": "Speech-to-text or captions of a video post.",
        "properties": {
          "language": {
            "description": "BCP 47 language tag of the transcript.",
            "type": [
              "string",
              "null"
            ]
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "post_id": {
            "description": "Platform-native post ID.",
            "type": [
              "string",
              "null"
            ]
          },
          "segments": {
            "description": "Timed segments when the provider supplies them.",
            "items": {
              "properties": {
                "end_ms": {
                  "description": "Segment end, milliseconds.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "start_ms": {
                  "description": "Segment start, milliseconds.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "text": {
                  "description": "Segment text.",
                  "type": "string"
                }
              },
              "required": [
                "start_ms",
                "end_ms",
                "text"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "text": {
            "description": "Full transcript text.",
            "type": "string"
          }
        },
        "required": [
          "post_id",
          "language",
          "text",
          "segments",
          "platform"
        ],
        "type": "object"
      },
      "TranscriptEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/Transcript"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a Transcript."
      },
      "TravelLocation": {
        "additionalProperties": false,
        "description": "A destination or airport the travel provider knows, with the id its search endpoints take (decision 2026-10-13",
        "properties": {
          "code": {
            "description": "IATA code for airports and cities when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "description": "Country name or code.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Provider id to pass on — a Booking destination id for hotels, an airport / city id such as JFK.AIRPORT for flights.",
            "type": "string"
          },
          "kind": {
            "description": "Which search the id is for (echoes the request).",
            "enum": [
              "hotel",
              "flight"
            ],
            "type": "string"
          },
          "lat": {
            "description": "Latitude.",
            "type": [
              "number",
              "null"
            ]
          },
          "lon": {
            "description": "Longitude.",
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "description": "Display name.",
            "type": "string"
          },
          "region": {
            "description": "Region / state when reported.",
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "description": "Place kind as the provider reports it (city, airport, region, district, landmark, hotel).",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "country",
          "region",
          "lat",
          "lon",
          "code",
          "kind"
        ],
        "type": "object"
      },
      "TravelLocationPage": {
        "additionalProperties": false,
        "description": "One page of destinations.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/TravelLocation"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Always null — lookups return one list.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "TravelLocationPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/TravelLocationPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a TravelLocationPage."
      },
      "User": {
        "additionalProperties": false,
        "description": "A public user profile, normalized across providers.",
        "properties": {
          "avatar_url": {
            "description": "Avatar image URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "description": "Profile description.",
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "description": "Account creation time, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "followers_count": {
            "description": "Followers.",
            "type": [
              "integer",
              "null"
            ]
          },
          "following_count": {
            "description": "Accounts followed.",
            "type": [
              "integer",
              "null"
            ]
          },
          "handle": {
            "description": "Username / handle without the leading @.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Platform-native user ID.",
            "type": "string"
          },
          "name": {
            "description": "Display name.",
            "type": [
              "string",
              "null"
            ]
          },
          "platform": {
            "description": "Platform slug.",
            "type": "string"
          },
          "posts_count": {
            "description": "Public posts.",
            "type": [
              "integer",
              "null"
            ]
          },
          "url": {
            "description": "Profile URL.",
            "type": [
              "string",
              "null"
            ]
          },
          "verified": {
            "description": "Platform verification badge.",
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "handle",
          "name",
          "url",
          "bio",
          "avatar_url",
          "verified",
          "followers_count",
          "following_count",
          "posts_count",
          "created_at",
          "platform"
        ],
        "type": "object"
      },
      "UserEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/User"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a User."
      },
      "UserPage": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/User"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or unsupported.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "UserPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/UserPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a UserPage."
      },
      "WalletAsset": {
        "additionalProperties": false,
        "description": "One token position of a wallet.",
        "properties": {
          "balance": {
            "description": "Decimal-adjusted balance (1.5 = one and a half tokens).",
            "type": [
              "number",
              "null"
            ]
          },
          "balance_raw": {
            "description": "Balance in the smallest unit exactly as the chain reports it (decimal or hex string), for callers that need full precision.",
            "type": [
              "string",
              "null"
            ]
          },
          "chain": {
            "description": "Chain slug the position lives on.",
            "type": "string"
          },
          "price_usd": {
            "description": "Current token price in USD when the provider attaches one.",
            "type": [
              "number",
              "null"
            ]
          },
          "token": {
            "properties": {
              "address": {
                "description": "Token contract address; null for the chain's native coin.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "decimals": {
                "description": "Token decimals when reported.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "logo_url": {
                "description": "Logo image URL.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Token name.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "symbol": {
                "description": "Ticker symbol.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "address",
              "symbol",
              "name",
              "decimals",
              "logo_url"
            ],
            "type": "object"
          },
          "value_usd": {
            "description": "Position value in USD when the provider computes it.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "chain",
          "token",
          "balance",
          "balance_raw",
          "price_usd",
          "value_usd"
        ],
        "type": "object"
      },
      "WalletAssetPage": {
        "additionalProperties": false,
        "description": "One page of wallet positions.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/WalletAsset"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when exhausted or the provider cannot page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "WalletAssetPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WalletAssetPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a WalletAssetPage."
      },
      "WebPage": {
        "additionalProperties": false,
        "description": "One fetched web page reduced to readable text, normalized across scrapers.",
        "properties": {
          "content_type": {
            "description": "MIME type of the fetched document (text/html, application/pdf) when the scraper reports it.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Meta description / summary line when the page has one.",
            "type": [
              "string",
              "null"
            ]
          },
          "final_url": {
            "description": "URL after redirects as reported by the scraper; null when the scraper does not report it.",
            "type": [
              "string",
              "null"
            ]
          },
          "format": {
            "description": "Format of `text` as delivered by the scraper.",
            "enum": [
              "markdown",
              "text",
              "html"
            ],
            "type": "string"
          },
          "lang": {
            "description": "BCP 47 language tag of the page when the scraper reports one.",
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "description": "Publish time of the page when the scraper extracts one (article meta tags), RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "status_code": {
            "description": "HTTP status the target site answered with, when the scraper reports it.",
            "type": [
              "integer",
              "null"
            ]
          },
          "text": {
            "description": "Main content of the page in the requested format (markdown or plain text). Boilerplate (navigation, footers) is removed where the scraper supports it.",
            "type": "string"
          },
          "title": {
            "description": "Page title (document title or og:title).",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "The URL that was requested (echoed from the input).",
            "type": "string"
          }
        },
        "required": [
          "url",
          "final_url",
          "title",
          "description",
          "text",
          "format",
          "lang",
          "published_at",
          "status_code",
          "content_type"
        ],
        "type": "object"
      },
      "WebPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a WebPage."
      },
      "WebResult": {
        "additionalProperties": false,
        "description": "One web search result.",
        "properties": {
          "published_at": {
            "description": "Publish date when the engine reports one, RFC 3339 UTC.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "site": {
            "description": "Hostname of the result without a leading www.",
            "type": [
              "string",
              "null"
            ]
          },
          "snippet": {
            "description": "Text snippet / description.",
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "description": "Result title.",
            "type": "string"
          },
          "url": {
            "description": "Result URL.",
            "type": "string"
          }
        },
        "required": [
          "title",
          "url",
          "snippet",
          "site",
          "published_at"
        ],
        "type": "object"
      },
      "WebResultPage": {
        "additionalProperties": false,
        "description": "One page of web search results.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/WebResult"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page; null when the provider does not page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "type": "object"
      },
      "WebResultPageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebResultPage"
              }
            },
            "type": "object"
          }
        ],
        "description": "Success envelope whose data is a WebResultPage."
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "AgentKey API key (ak_…).",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Fixed, versioned, provider-independent methods over AgentKey's upstream catalog. Each method has a stable name, input schema and output schema; the server picks the upstream provider, fails over, normalizes fields and refunds failed attempts. Every response names the provider that served it, the credits charged and every attempt made.",
    "title": "AgentKey Scenario Methods",
    "version": "2"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v2/ops": {
      "get": {
        "description": "The method catalog. No authentication required.",
        "operationId": "listOps",
        "parameters": [
          {
            "description": "Filter by domain.",
            "in": "query",
            "name": "domain",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by platform slug.",
            "in": "query",
            "name": "platform",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by action, e.g. post.search.",
            "in": "query",
            "name": "action",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Include deprecated methods.",
            "in": "query",
            "name": "include_deprecated",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catalog"
                }
              }
            },
            "description": "Catalog"
          }
        },
        "summary": "List scenario methods",
        "tags": [
          "catalog"
        ]
      }
    },
    "/v2/ops/academic.paper.get": {
      "post": {
        "description": "Paper details by arXiv id (2307.12307, optionally with a version suffix), arxiv.org / alphaxiv.org abs or pdf URL, or AMiner paper id (24 hex chars, from academic.paper.search). arXiv papers come from alphaXiv's public API with title, abstract, authors, date and links; AMiner adds DOI, venue and citation count for its own ids. DOIs are not resolved.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "academic_paper_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "arXiv id (1706.03762), arxiv.org / alphaxiv.org abs or pdf URL, or AMiner paper id (24 hex chars).",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaperEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one paper by arXiv id, arXiv URL or AMiner id. Returns a normalized Paper.",
        "tags": [
          "academic"
        ],
        "x-action": "paper.get",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "aminer",
          "alphaxiv-api"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/academic.paper.search": {
      "post": {
        "description": "Keyword search over Google Scholar (via Serper) and AMiner; the server picks the source and fails over. sort=recent / citations routes to AMiner, which can order that way.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "academic_paper_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of papers to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Topic, title words or free-text question.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "relevance",
                    "description": "relevance = best match; recent = newest first; citations = most cited first.",
                    "enum": [
                      "relevance",
                      "recent",
                      "citations"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaperPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search scholarly papers by keyword. Returns a normalized Paper page.",
        "tags": [
          "academic"
        ],
        "x-action": "paper.search",
        "x-draft-bindings": [
          "alphaxiv"
        ],
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "serper",
          "aminer",
          "alphaxiv"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/business.company.funding": {
      "post": {
        "description": "Funding rounds of one company by the id from business.company.search / business.company.get: a Crunchbase permalink / uuid (Crunchbase, primary) or a RootData project id (digits; RootData, crypto projects). The server routes on the id form.\n\nFixed price: 10 credits per successful call, whichever provider serves it.",
        "operationId": "business_company_funding",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Crunchbase organization permalink / uuid, or RootData project id (digits).",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of rounds to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FundingRoundPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the funding rounds a company raised, newest first. Returns a normalized FundingRound page.",
        "tags": [
          "business"
        ],
        "x-action": "company.funding",
        "x-price-credits": 10,
        "x-pricing": "fixed",
        "x-providers": [
          "crunchbase",
          "rootdata"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/business.company.get": {
      "post": {
        "description": "Fetch a company by the id returned from business.company.search: a RootData project id (digits), a token contract address (0x…, resolved by RootData) or a Crunchbase organization permalink / uuid. The server routes on the id form; profile page URLs are not accepted yet.\n\nFixed price: 2.9 credits per successful call, whichever provider serves it.",
        "operationId": "business_company_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "RootData project id (digits), token contract address (0x + 40 hex) or Crunchbase organization permalink / uuid.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one company profile by provider id. Returns a normalized Company.",
        "tags": [
          "business"
        ],
        "x-action": "company.get",
        "x-price-credits": 2.9,
        "x-pricing": "fixed",
        "x-providers": [
          "rootdata",
          "crunchbase"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/business.company.search": {
      "post": {
        "description": "Name / keyword search over business-data providers. RootData (crypto projects and funds, plus many non-crypto companies) is tried first, Crunchbase is the fallback. Company.id is provider-scoped (RootData digits, Crunchbase permalink) and routes business.company.get / business.company.funding to the same provider.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "business_company_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of results to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Company name or keyword (on RootData also a token symbol or X handle).",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search companies by name or keyword. Returns a normalized Company page.",
        "tags": [
          "business"
        ],
        "x-action": "company.search",
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "rootdata",
          "crunchbase"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/business.person.get": {
      "post": {
        "description": "Fetch a founder / executive / investor profile by provider id: a RootData people id (digits) or a Crunchbase person permalink / uuid. The server routes on the id form; profile page URLs are not accepted yet.\n\nFixed price: 2.9 credits per successful call, whichever provider serves it.",
        "operationId": "business_person_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "RootData people id (digits) or Crunchbase person permalink / uuid.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one business person profile by provider id. Returns a normalized Person.",
        "tags": [
          "business"
        ],
        "x-action": "person.get",
        "x-price-credits": 2.9,
        "x-pricing": "fixed",
        "x-providers": [
          "rootdata",
          "crunchbase"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.derivatives.snapshot": {
      "post": {
        "description": "Returns the current perpetual-futures snapshot of one base asset (BTC, ETH …) on one exchange: open interest in USD and contracts, funding rate and next settlement, mark and index price. The USDT-quoted perpetual is used.\n\nFixed price: 3.6 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_derivatives_snapshot",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "exchange": {
                    "default": "binance",
                    "description": "Exchange to read the contract from.",
                    "enum": [
                      "binance",
                      "okx",
                      "bybit",
                      "bitget",
                      "htx",
                      "bitfinex",
                      "bitmex",
                      "hyperliquid"
                    ],
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Base asset ticker, e.g. BTC. Case-insensitive.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DerivativesSnapshotEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Open interest and funding of a perpetual contract on one exchange.",
        "tags": [
          "crypto"
        ],
        "x-action": "derivatives.snapshot",
        "x-price-credits": 3.6,
        "x-pricing": "fixed",
        "x-providers": [
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.market.list": {
      "post": {
        "description": "Returns tokens ranked by market cap (default), 24h volume or 24h change, with a USD quote per row. Page with cursor; limit up to 100 per page.\n\nFixed price: 0.6 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_market_list",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of rows to return.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "order": {
                    "default": "desc",
                    "description": "desc = largest / highest first.",
                    "enum": [
                      "desc",
                      "asc"
                    ],
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "market_cap",
                    "description": "Ranking key.",
                    "enum": [
                      "market_cap",
                      "volume_24h",
                      "change_24h"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Ranked list of tokens with price, market cap, 24h volume and 24h change.",
        "tags": [
          "crypto"
        ],
        "x-action": "market.list",
        "x-price-credits": 0.6,
        "x-pricing": "fixed",
        "x-providers": [
          "coinmarketcap",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.news.search": {
      "post": {
        "description": "Searches crypto-native news sources for a keyword (or lists the latest headlines without one) and returns normalized articles: title, url, summary, source, publish time. sort=latest routes to a provider that orders by time.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_news_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "BCP 47 language tag of the articles, e.g. en, zh. Routes to a provider that publishes in that language.",
                    "type": "string"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of articles to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase. Omit it for the latest headlines.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "relevance",
                    "description": "relevance = best match first; latest = newest first.",
                    "enum": [
                      "relevance",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NewsArticlePageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Crypto news articles by keyword, or the latest crypto headlines when no keyword is given.",
        "tags": [
          "crypto"
        ],
        "x-action": "news.search",
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "panews",
          "surf",
          "brave"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.token.holders": {
      "post": {
        "description": "Lists holders of an ERC-20 style token contract on one EVM chain, largest first where the provider ranks them, with balance and (where available) USD value and share of supply. Page with cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_token_holders",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "description": "Token contract address (0x-prefixed hex).",
                    "type": "string"
                  },
                  "chain": {
                    "default": "ethereum",
                    "description": "Chain the contract lives on.",
                    "enum": [
                      "ethereum",
                      "polygon",
                      "bsc",
                      "arbitrum",
                      "optimism",
                      "base",
                      "avalanche"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of holders to return.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenHolderPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Largest holders of a token contract on one chain.",
        "tags": [
          "crypto"
        ],
        "x-action": "token.holders",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "chainbase",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.token.info": {
      "post": {
        "description": "Returns the static profile of one token. Pass symbol (BTC, ETH) for coins and listed tokens, or address + chain for any on-chain token contract. Exactly one of symbol / address is accepted per call.\n\nFixed price: 0.6 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_token_info",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "description": "Token contract address (0x… on EVM chains). Routes to on-chain providers; pair it with chain.",
                    "type": "string"
                  },
                  "chain": {
                    "default": "ethereum",
                    "description": "Chain the contract lives on. Only used with address.",
                    "enum": [
                      "ethereum",
                      "polygon",
                      "bsc",
                      "arbitrum",
                      "optimism",
                      "base",
                      "avalanche"
                    ],
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker symbol (BTC, ETH, UNI). Routes to market-data providers. Case-insensitive.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenInfoEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Profile of one token or crypto project (name, description, website, tags, contracts, supply), by symbol or by contract address.",
        "tags": [
          "crypto"
        ],
        "x-action": "token.info",
        "x-price-credits": 0.6,
        "x-pricing": "fixed",
        "x-providers": [
          "coinmarketcap",
          "chainbase",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.token.price": {
      "post": {
        "description": "Looks up one token's latest USD quote. Pass symbol (BTC, ETH, SOL) for coins and listed tokens, or address + chain for any on-chain token contract. Exactly one of symbol / address is accepted per call.\n\nFixed price: 0.6 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_token_price",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "description": "Token contract address (0x… on EVM chains). Routes to on-chain providers; pair it with chain.",
                    "type": "string"
                  },
                  "chain": {
                    "default": "ethereum",
                    "description": "Chain the contract lives on. Only used with address.",
                    "enum": [
                      "ethereum",
                      "polygon",
                      "bsc",
                      "arbitrum",
                      "optimism",
                      "base",
                      "avalanche"
                    ],
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker symbol (BTC, ETH, USDC). Routes to market-data providers. Case-insensitive.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenPriceEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current price and 24h market figures of one token, by ticker symbol or by contract address.",
        "tags": [
          "crypto"
        ],
        "x-action": "token.price",
        "x-price-credits": 0.6,
        "x-pricing": "fixed",
        "x-providers": [
          "coinmarketcap",
          "chainbase",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.wallet.assets": {
      "post": {
        "description": "Lists the token positions of a wallet on one EVM chain with balance and, where the provider attaches them, USD price and value. Page with cursor. The chain's native coin may be excluded by the provider (see unsupported_fields and the method notes).\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_wallet_assets",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "description": "Wallet address (0x-prefixed hex). ENS names are not resolved.",
                    "type": "string"
                  },
                  "chain": {
                    "default": "ethereum",
                    "description": "Chain to read positions on.",
                    "enum": [
                      "ethereum",
                      "polygon",
                      "bsc",
                      "arbitrum",
                      "optimism",
                      "base",
                      "avalanche"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of positions to return.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletAssetPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Token balances held by a wallet address on one chain.",
        "tags": [
          "crypto"
        ],
        "x-action": "wallet.assets",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "chainbase",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/crypto.wallet.transactions": {
      "post": {
        "description": "Lists the transactions sent or received by a wallet on one EVM chain: hash, block, time, from/to, native value and fee, status. Page with cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "crypto_wallet_transactions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "address": {
                    "description": "Wallet address (0x-prefixed hex). ENS names are not resolved.",
                    "type": "string"
                  },
                  "chain": {
                    "default": "ethereum",
                    "description": "Chain to read transactions on.",
                    "enum": [
                      "ethereum",
                      "polygon",
                      "bsc",
                      "arbitrum",
                      "optimism",
                      "base",
                      "avalanche"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of transactions to return.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Recent transactions of a wallet address on one chain, newest first.",
        "tags": [
          "crypto"
        ],
        "x-action": "wallet.transactions",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "chainbase",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.1688.product.get": {
      "post": {
        "description": "Fetch a single product listing on 1688. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_1688_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on 1688 by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/1688"
        ],
        "x-action": "product.get",
        "x-platform": "1688",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.1688.product.search": {
      "post": {
        "description": "Keyword search over product listings on 1688. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_1688_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on 1688 by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/1688"
        ],
        "x-action": "product.search",
        "x-platform": "1688",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.aliexpress.product.get": {
      "post": {
        "description": "Fetch a single product listing on AliExpress. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_aliexpress_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "currency": {
                    "default": "USD",
                    "description": "Kept for symmetry with product.search. The detail endpoint cannot choose a currency, so only the default is accepted.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "locale": {
                    "default": "en_US",
                    "description": "Kept for symmetry with product.search. The detail endpoint cannot choose a language, so only the default is accepted.",
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "region": {
                    "default": "US",
                    "description": "Ship-to country, ISO 3166-1 alpha-2. US reads the US site; any other country reads AliExpress's global site.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on AliExpress by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/aliexpress"
        ],
        "x-action": "product.get",
        "x-platform": "aliexpress",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.aliexpress.product.search": {
      "post": {
        "description": "Keyword search over product listings on AliExpress. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_aliexpress_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "currency": {
                    "default": "USD",
                    "description": "ISO 4217 currency the prices are quoted in.",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "locale": {
                    "default": "en_US",
                    "description": "Locale of titles and attributes (en_US, es_ES, zh_CN, ru_RU …).",
                    "type": "string"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "region": {
                    "default": "US",
                    "description": "Ship-to country, ISO 3166-1 alpha-2 (selects the regional catalogue and shipping).",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on AliExpress by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/aliexpress"
        ],
        "x-action": "product.search",
        "x-platform": "aliexpress",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.amazon.product.get": {
      "post": {
        "description": "Fetch a single product listing on Amazon. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_amazon_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "default": "US",
                    "description": "Amazon marketplace the ASIN is listed on, ISO 3166-1 alpha-2.",
                    "enum": [
                      "US",
                      "AU",
                      "BR",
                      "CA",
                      "CN",
                      "FR",
                      "DE",
                      "IN",
                      "IT",
                      "MX",
                      "NL",
                      "SG",
                      "ES",
                      "TR",
                      "AE",
                      "GB",
                      "JP",
                      "SA",
                      "PL",
                      "SE",
                      "BE",
                      "EG",
                      "ZA",
                      "IE"
                    ],
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on Amazon by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/amazon"
        ],
        "x-action": "product.get",
        "x-platform": "amazon",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.amazon.product.rank": {
      "post": {
        "description": "The platform's own best-seller or trending ranking on Amazon. Pass a category when the platform ranks per category. Normalized to the Product object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_amazon_product_rank",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "category": {
                    "description": "Required on Amazon. Either the Best Sellers category path as in amazon.com/Best-Sellers-…/zgbs/\u003cpath\u003e (electronics, toys-and-games, electronics/172456 …) or a numeric browse-node id (172282) for the category product listing sorted by best sellers.",
                    "type": "string"
                  },
                  "country": {
                    "default": "US",
                    "description": "Amazon marketplace, ISO 3166-1 alpha-2.",
                    "enum": [
                      "US",
                      "AU",
                      "BR",
                      "CA",
                      "CN",
                      "FR",
                      "DE",
                      "IN",
                      "IT",
                      "MX",
                      "NL",
                      "SG",
                      "ES",
                      "TR",
                      "AE",
                      "GB",
                      "JP",
                      "SA",
                      "PL",
                      "SE",
                      "BE",
                      "EG",
                      "ZA",
                      "IE"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Best-selling / trending product listings on Amazon, optionally within a category. Returns a normalized Product page.",
        "tags": [
          "ecommerce/amazon"
        ],
        "x-action": "product.rank",
        "x-platform": "amazon",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.amazon.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on Amazon, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_amazon_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "default": "US",
                    "description": "Amazon marketplace the ASIN is listed on, ISO 3166-1 alpha-2.",
                    "enum": [
                      "US",
                      "AU",
                      "BR",
                      "CA",
                      "CN",
                      "FR",
                      "DE",
                      "IN",
                      "IT",
                      "MX",
                      "NL",
                      "SG",
                      "ES",
                      "TR",
                      "AE",
                      "GB",
                      "JP",
                      "SA",
                      "PL",
                      "SE",
                      "BE",
                      "EG",
                      "ZA",
                      "IE"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "Keep only reviews of this kind when the platform can filter.",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a Amazon product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/amazon"
        ],
        "x-action": "product.reviews",
        "x-platform": "amazon",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.amazon.product.search": {
      "post": {
        "description": "Keyword search over product listings on Amazon. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_amazon_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "condition": {
                    "default": "all",
                    "description": "Product condition filter.",
                    "enum": [
                      "all",
                      "new",
                      "used",
                      "renewed",
                      "collectible"
                    ],
                    "type": "string"
                  },
                  "country": {
                    "default": "US",
                    "description": "Amazon marketplace, ISO 3166-1 alpha-2 (US = amazon.com, GB = amazon.co.uk, DE = amazon.de …).",
                    "enum": [
                      "US",
                      "AU",
                      "BR",
                      "CA",
                      "CN",
                      "FR",
                      "DE",
                      "IN",
                      "IT",
                      "MX",
                      "NL",
                      "SG",
                      "ES",
                      "TR",
                      "AE",
                      "GB",
                      "JP",
                      "SA",
                      "PL",
                      "SE",
                      "BE",
                      "EG",
                      "ZA",
                      "IE"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "deals": {
                    "default": "none",
                    "description": "Restrict to discounted listings (all_discounts) or Today's Deals (todays_deals).",
                    "enum": [
                      "none",
                      "all_discounts",
                      "todays_deals"
                    ],
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "prime_only": {
                    "default": false,
                    "description": "Only Prime-eligible listings.",
                    "type": "boolean"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on Amazon by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/amazon"
        ],
        "x-action": "product.search",
        "x-platform": "amazon",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.douyin_shop.product.get": {
      "post": {
        "description": "Fetch a single product listing on Douyin Shop. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_douyin_shop_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on Douyin Shop by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/douyin_shop"
        ],
        "x-action": "product.get",
        "x-platform": "douyin_shop",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.douyin_shop.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on Douyin Shop, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_douyin_shop_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "Keep only reviews of this kind when the platform can filter.",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a Douyin Shop product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/douyin_shop"
        ],
        "x-action": "product.reviews",
        "x-platform": "douyin_shop",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.douyin_shop.product.search": {
      "post": {
        "description": "Keyword search over product listings on Douyin Shop. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_douyin_shop_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on Douyin Shop by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/douyin_shop"
        ],
        "x-action": "product.search",
        "x-platform": "douyin_shop",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.douyin_shop.shop.products": {
      "post": {
        "description": "Listings of one storefront on Douyin Shop, by shop ID / username or shop page URL. Normalized to the Product object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_douyin_shop_shop_products",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native shop ID / username or the shop page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the shop's default ordering; latest = newest listings first; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the product listings of a Douyin Shop shop. Returns a normalized Product page.",
        "tags": [
          "ecommerce/douyin_shop"
        ],
        "x-action": "shop.products",
        "x-platform": "douyin_shop",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.jd.product.get": {
      "post": {
        "description": "Fetch a single product listing on JD.com. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_jd_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on JD.com by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/jd"
        ],
        "x-action": "product.get",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "jd",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.jd.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on JD.com, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_jd_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "Keep only reviews of this kind when the platform can filter.",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a JD.com product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/jd"
        ],
        "x-action": "product.reviews",
        "x-platform": "jd",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.jd.product.search": {
      "post": {
        "description": "Keyword search over product listings on JD.com. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_jd_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on JD.com by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/jd"
        ],
        "x-action": "product.search",
        "x-platform": "jd",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.jd.shop.products": {
      "post": {
        "description": "Listings of one storefront on JD.com, by shop ID / username or shop page URL. Normalized to the Product object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_jd_shop_products",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native shop ID / username or the shop page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the shop's default ordering; latest = newest listings first; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the product listings of a JD.com shop. Returns a normalized Product page.",
        "tags": [
          "ecommerce/jd"
        ],
        "x-action": "shop.products",
        "x-platform": "jd",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.shopee.product.get": {
      "post": {
        "description": "Fetch a single product listing on Shopee. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_shopee_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "site": {
                    "default": "TW",
                    "description": "Shopee marketplace site the item is listed on: TW = Taiwan, ID = Indonesia, TH = Thailand.",
                    "enum": [
                      "TW",
                      "ID",
                      "TH"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on Shopee by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/shopee"
        ],
        "x-action": "product.get",
        "x-platform": "shopee",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.shopee.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on Shopee, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_shopee_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "Keep only reviews of this kind when the platform can filter.",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "site": {
                    "default": "TW",
                    "description": "Shopee marketplace site the item is listed on: TW = Taiwan, ID = Indonesia, TH = Thailand.",
                    "enum": [
                      "TW",
                      "ID",
                      "TH"
                    ],
                    "type": "string"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a Shopee product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/shopee"
        ],
        "x-action": "product.reviews",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "shopee",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.shopee.product.search": {
      "post": {
        "description": "Keyword search over product listings on Shopee. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_shopee_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "site": {
                    "default": "TW",
                    "description": "Shopee marketplace site: TW = Taiwan, ID = Indonesia, TH = Thailand (the only sites the upstream exposes).",
                    "enum": [
                      "TW",
                      "ID",
                      "TH"
                    ],
                    "type": "string"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on Shopee by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/shopee"
        ],
        "x-action": "product.search",
        "x-platform": "shopee",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.shopee.shop.get": {
      "post": {
        "description": "Fetch one storefront on Shopee by its platform-native shop ID, username or shop page URL. Routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_shopee_shop_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Shop username (the shopee.\u003ctld\u003e/\u003cusername\u003e page) or that page URL; a numeric shop id or a shopee.\u003ctld\u003e/shop/\u003cid\u003e URL routes to the SEO endpoint.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "site": {
                    "default": "TW",
                    "description": "Shopee marketplace site of the shop: TW = Taiwan, ID = Indonesia, TH = Thailand.",
                    "enum": [
                      "TW",
                      "ID",
                      "TH"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShopEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a Shopee shop / seller profile by ID or URL. Returns a normalized Shop.",
        "tags": [
          "ecommerce/shopee"
        ],
        "x-action": "shop.get",
        "x-draft-bindings": [
          "justoneapi",
          "justoneapi",
          "justoneapi"
        ],
        "x-platform": "shopee",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.shopee.shop.products": {
      "post": {
        "description": "Listings of one storefront on Shopee, by shop ID / username or shop page URL. Normalized to the Product object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_shopee_shop_products",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Shop username (the shopee.\u003ctld\u003e/\u003cusername\u003e page) or that page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "site": {
                    "default": "TW",
                    "description": "Shopee marketplace site of the shop: TW = Taiwan, ID = Indonesia, TH = Thailand.",
                    "enum": [
                      "TW",
                      "ID",
                      "TH"
                    ],
                    "type": "string"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the shop's default ordering; latest = newest listings first; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the product listings of a Shopee shop. Returns a normalized Product page.",
        "tags": [
          "ecommerce/shopee"
        ],
        "x-action": "shop.products",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "shopee",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.taobao.product.get": {
      "post": {
        "description": "Fetch a single product listing on Taobao / Tmall. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_taobao_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on Taobao / Tmall by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/taobao"
        ],
        "x-action": "product.get",
        "x-platform": "taobao",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.taobao.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on Taobao / Tmall, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_taobao_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "Keep only reviews of this kind when the platform can filter.",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a Taobao / Tmall product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/taobao"
        ],
        "x-action": "product.reviews",
        "x-platform": "taobao",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.taobao.product.search": {
      "post": {
        "description": "Keyword search over product listings on Taobao / Tmall. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_taobao_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  },
                  "tmall": {
                    "default": false,
                    "description": "true = only Tmall listings (search V1 filter).",
                    "type": "boolean"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on Taobao / Tmall by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/taobao"
        ],
        "x-action": "product.search",
        "x-platform": "taobao",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.taobao.shop.products": {
      "post": {
        "description": "Listings of one storefront on Taobao / Tmall, by shop ID / username or shop page URL. Normalized to the Product object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_taobao_shop_products",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native shop ID / username or the shop page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the shop's default ordering; latest = newest listings first; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the product listings of a Taobao / Tmall shop. Returns a normalized Product page.",
        "tags": [
          "ecommerce/taobao"
        ],
        "x-action": "shop.products",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "taobao",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.tiktok_shop.product.get": {
      "post": {
        "description": "Fetch a single product listing on TikTok Shop. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_tiktok_shop_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Product id, a /product/\u003cid\u003e or /view/product/\u003cid\u003e URL, ?product_id=, or the shop.tiktok.com/\u003ccc\u003e/pdp/\u003cslug\u003e/\u003cid\u003e page the cards link to.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "region": {
                    "default": "US",
                    "description": "TikTok Shop market the product is listed in (ISO 3166-1 alpha-2).",
                    "enum": [
                      "US",
                      "GB",
                      "SG",
                      "MY",
                      "PH",
                      "TH",
                      "VN",
                      "ID"
                    ],
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on TikTok Shop by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/tiktok_shop"
        ],
        "x-action": "product.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "tiktok_shop",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.tiktok_shop.product.rank": {
      "post": {
        "description": "The platform's own best-seller or trending ranking on TikTok Shop. Pass a category when the platform ranks per category. Normalized to the Product object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_tiktok_shop_product_rank",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "category": {
                    "description": "Numeric TikTok Shop category id (required on TikTok Shop: the upstream lists products per category only; e.g. 601152 Beauty \u0026 Personal Care, 601739 Phones \u0026 Electronics).",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "region": {
                    "default": "US",
                    "description": "TikTok Shop market (ISO 3166-1 alpha-2).",
                    "enum": [
                      "US",
                      "GB",
                      "SG",
                      "MY",
                      "PH",
                      "TH",
                      "VN",
                      "ID"
                    ],
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Best-selling / trending product listings on TikTok Shop, optionally within a category. Returns a normalized Product page.",
        "tags": [
          "ecommerce/tiktok_shop"
        ],
        "x-action": "product.rank",
        "x-platform": "tiktok_shop",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.tiktok_shop.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on TikTok Shop, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_tiktok_shop_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "all; positive = 5-star only; negative = 1-star only; with_images = reviews carrying photos or video (the upstream filters by exact star).",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Product id, a /product/\u003cid\u003e or /view/product/\u003cid\u003e URL, ?product_id=, or the shop.tiktok.com/\u003ccc\u003e/pdp/\u003cslug\u003e/\u003cid\u003e page the cards link to.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "region": {
                    "default": "US",
                    "description": "TikTok Shop market the product is listed in (ISO 3166-1 alpha-2).",
                    "enum": [
                      "US",
                      "GB",
                      "SG",
                      "MY",
                      "PH",
                      "TH",
                      "VN",
                      "ID"
                    ],
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a TikTok Shop product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/tiktok_shop"
        ],
        "x-action": "product.reviews",
        "x-platform": "tiktok_shop",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.tiktok_shop.product.search": {
      "post": {
        "description": "Keyword search over product listings on TikTok Shop. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_tiktok_shop_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "region": {
                    "default": "US",
                    "description": "TikTok Shop market (ISO 3166-1 alpha-2). TikHub serves US/SG/MY/PH/TH/VN/ID/JP/MX, JustOneAPI US/GB/FR/SG/MY/PH/TH/VN/ID; the server routes by region.",
                    "enum": [
                      "US",
                      "GB",
                      "FR",
                      "SG",
                      "MY",
                      "PH",
                      "TH",
                      "VN",
                      "ID",
                      "JP",
                      "MX"
                    ],
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on TikTok Shop by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/tiktok_shop"
        ],
        "x-action": "product.search",
        "x-platform": "tiktok_shop",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.tiktok_shop.shop.products": {
      "post": {
        "description": "Listings of one storefront on TikTok Shop, by shop ID / username or shop page URL. Normalized to the Product object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_tiktok_shop_shop_products",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Numeric TikTok Shop seller id (seller_id of a product card) or the store page URL shop.tiktok.com/\u003ccc\u003e/store/\u003cslug\u003e/\u003cseller_id\u003e.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "region": {
                    "default": "US",
                    "description": "TikTok Shop market of the seller (ISO 3166-1 alpha-2).",
                    "enum": [
                      "US",
                      "GB",
                      "SG",
                      "MY",
                      "PH",
                      "TH",
                      "VN",
                      "ID"
                    ],
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the shop's default ordering; latest = newest listings first; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the product listings of a TikTok Shop shop. Returns a normalized Product page.",
        "tags": [
          "ecommerce/tiktok_shop"
        ],
        "x-action": "shop.products",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "tiktok_shop",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.xianyu.product.get": {
      "post": {
        "description": "Fetch a single product listing on Xianyu / Goofish. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_xianyu_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on Xianyu / Goofish by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/xianyu"
        ],
        "x-action": "product.get",
        "x-platform": "xianyu",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.xianyu.product.search": {
      "post": {
        "description": "Keyword search over product listings on Xianyu / Goofish. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_xianyu_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on Xianyu / Goofish by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/xianyu"
        ],
        "x-action": "product.search",
        "x-platform": "xianyu",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.xiaohongshu_shop.product.get": {
      "post": {
        "description": "Fetch a single product listing on Xiaohongshu Shop. Pass either the platform-native product ID or the product page URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_xiaohongshu_shop_product_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one product listing on Xiaohongshu Shop by ID or URL. Returns a normalized Product.",
        "tags": [
          "ecommerce/xiaohongshu_shop"
        ],
        "x-action": "product.get",
        "x-platform": "xiaohongshu_shop",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.xiaohongshu_shop.product.reviews": {
      "post": {
        "description": "Buyer reviews of one product listing on Xiaohongshu Shop, by product ID or URL. Normalized to the Review object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_xiaohongshu_shop_product_reviews",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "filter": {
                    "default": "all",
                    "description": "Keep only reviews of this kind when the platform can filter.",
                    "enum": [
                      "all",
                      "positive",
                      "negative",
                      "with_images"
                    ],
                    "type": "string"
                  },
                  "id_or_url": {
                    "description": "Platform-native product ID or the full product page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of reviews to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most helpful / the platform's default ordering.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReviewPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List buyer reviews of a Xiaohongshu Shop product. Returns a normalized Review page.",
        "tags": [
          "ecommerce/xiaohongshu_shop"
        ],
        "x-action": "product.reviews",
        "x-platform": "xiaohongshu_shop",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/ecommerce.xiaohongshu_shop.product.search": {
      "post": {
        "description": "Keyword search over product listings on Xiaohongshu Shop. Results are normalized to the Product object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "ecommerce_xiaohongshu_shop_product_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of products to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "price_max": {
                    "description": "Highest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Lowest selling price to include, in the platform's currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general = the platform's default ranking; sales = best selling first; price_asc / price_desc = by selling price.",
                    "enum": [
                      "general",
                      "latest",
                      "sales",
                      "price_asc",
                      "price_desc"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search product listings on Xiaohongshu Shop by keyword. Returns a normalized Product page.",
        "tags": [
          "ecommerce/xiaohongshu_shop"
        ],
        "x-action": "product.search",
        "x-platform": "xiaohongshu_shop",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.company.profile": {
      "post": {
        "description": "Symbol forms as in finance.quote (AAPL, 0700.HK, 600519.SH). A-share profiles fall back to Tushare in Chinese.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_company_profile",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, 0700.HK, 600519.SH.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyProfileEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Company profile (name, exchange, sector, industry, description, website, market cap, employees) for a ticker. Returns a normalized CompanyProfile.",
        "tags": [
          "finance"
        ],
        "x-action": "company.profile",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "yfinance",
          "finnhub",
          "tushare",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.earnings": {
      "post": {
        "description": "Symbol forms as in finance.quote. US symbols are served by Finnhub (up to 40 quarters), others by yfinance (last 4 quarters); AlphaVantage is the US fallback and the only source of report dates. Revenue is not supplied by the current providers.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_earnings",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 8,
                    "description": "Maximum number of periods to return.",
                    "maximum": 40,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, 0700.HK.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EarningsPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Historical quarterly earnings — reported EPS, consensus estimate and surprise. Returns a normalized Earnings page, most recent first.",
        "tags": [
          "finance"
        ],
        "x-action": "earnings",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "finnhub",
          "yfinance",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.estimates": {
      "post": {
        "description": "Symbol forms as in finance.quote. yfinance fills both the recommendation counts and the per-horizon estimates; Finnhub (US fallback) fills only the recommendation counts, so periods is null there.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_estimates",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, 0700.HK.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimatesEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Analyst consensus for a company — EPS / revenue estimates per horizon and the buy / hold / sell split. Returns a normalized Estimates object.",
        "tags": [
          "finance"
        ],
        "x-action": "estimates",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "yfinance",
          "finnhub",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.filings.get": {
      "post": {
        "description": "Give the primary document URL on www.sec.gov (the url field of a finance.filings.search result) and the section id: 10-K items 1, 1A, 1B, 1C, 2 … 15; 10-Q parts part1item1 … part2item6; 8-K items 1-1 … 9-1. One section per call; the filing metadata fields stay null.\n\nFixed price: 0.5 credits per successful call, whichever provider serves it.",
        "operationId": "finance_filings_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "format": {
                    "default": "text",
                    "description": "Return the section as plain text or as the original HTML.",
                    "enum": [
                      "text",
                      "html"
                    ],
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "section": {
                    "description": "Section id: 10-K item (1A = Risk Factors, 7 = MD\u0026A), 10-Q part/item (part1item2 = MD\u0026A), or 8-K item (2-2 = Results of Operations).",
                    "enum": [
                      "1",
                      "1A",
                      "1B",
                      "1C",
                      "2",
                      "3",
                      "4",
                      "5",
                      "6",
                      "7",
                      "7A",
                      "8",
                      "9",
                      "9A",
                      "9B",
                      "9C",
                      "10",
                      "11",
                      "12",
                      "13",
                      "14",
                      "15",
                      "part1item1",
                      "part1item2",
                      "part1item3",
                      "part1item4",
                      "part2item1",
                      "part2item1a",
                      "part2item2",
                      "part2item3",
                      "part2item4",
                      "part2item5",
                      "part2item6",
                      "1-1",
                      "1-2",
                      "1-3",
                      "1-4",
                      "1-5",
                      "2-1",
                      "2-2",
                      "2-3",
                      "2-4",
                      "2-5",
                      "2-6",
                      "3-1",
                      "3-2",
                      "3-3",
                      "4-1",
                      "4-2",
                      "5-1",
                      "5-2",
                      "5-3",
                      "5-4",
                      "5-5",
                      "5-6",
                      "5-7",
                      "5-8",
                      "6-1",
                      "6-2",
                      "6-3",
                      "6-4",
                      "6-5",
                      "6-6",
                      "6-10",
                      "7-1",
                      "8-1",
                      "9-1",
                      "signature"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "description": "Primary document URL on www.sec.gov (…/Archives/edgar/data/\u003ccik\u003e/\u003caccession\u003e/\u003cdoc\u003e.htm).",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "section"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilingEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Extract one named section (Risk Factors, MD\u0026A, Business …) of a 10-K / 10-Q / 8-K filing as plain text or HTML. Returns a Filing with text and sections filled.",
        "tags": [
          "finance"
        ],
        "x-action": "filings.get",
        "x-price-credits": 0.5,
        "x-pricing": "fixed",
        "x-providers": [
          "secapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.filings.search": {
      "post": {
        "description": "Give a symbol or cik (optionally form_type, start, end) to list a company's filings, or a query to full-text search every filing since 2001 (combine with cik, form_type, start, end). Results are normalized to Filing; text and sections stay null here — fetch one document with finance.filings.get.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_filings_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cik": {
                    "description": "Filer CIK, with or without zero padding (320193).",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "end": {
                    "description": "Latest filing date, YYYY-MM-DD.",
                    "format": "date",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "form_type": {
                    "description": "Form type, exact and uppercase: 10-K, 10-Q, 8-K, 4, DEF 14A, S-1.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of filings to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Full-text search phrase (climate risk, \"supply chain\" AND China). Routes to the SEC full-text engine; combine with cik rather than symbol.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "start": {
                    "description": "Earliest filing date, YYYY-MM-DD.",
                    "format": "date",
                    "type": "string"
                  },
                  "symbol": {
                    "description": "Filer ticker (AAPL).",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilingPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search SEC EDGAR filings by ticker / CIK, form type, date window or full text. Returns a normalized Filing page, most recent first.",
        "tags": [
          "finance"
        ],
        "x-action": "filings.search",
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "finnhub",
          "sec",
          "secapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.financials": {
      "post": {
        "description": "One statement per call (statement=income|balance|cashflow), annual or quarterly. Line items are normalized to a fixed vocabulary (revenue, net_income, total_assets, operating_cash_flow …); a line the vendor does not report is null. A-shares come from Tushare (CNY), US filers from Finnhub (SEC XBRL facts; quarterly rows are 10-Q year-to-date figures) and AlphaVantage (single quarters).\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_financials",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 4,
                    "description": "Maximum number of periods to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "period": {
                    "default": "annual",
                    "description": "Reporting frequency (quarterly = single-quarter figures where the vendor distinguishes them, year-to-date where it does not).",
                    "enum": [
                      "annual",
                      "quarterly"
                    ],
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "statement": {
                    "default": "income",
                    "description": "Which statement to return.",
                    "enum": [
                      "income",
                      "balance",
                      "cashflow"
                    ],
                    "type": "string"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, 600519.SH.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FinancialStatementPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Annual or quarterly income statement, balance sheet or cash flow with normalized line items. Returns a FinancialStatement page, most recent period first.",
        "tags": [
          "finance"
        ],
        "x-action": "financials",
        "x-draft-bindings": [
          "yfinance",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "tushare",
          "finnhub",
          "yfinance",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.macro.series": {
      "post": {
        "description": "Pick a series and a country (ISO alpha-2, default US). interval=auto takes the series' native frequency; an explicit interval routes to a provider that reports it. maturity applies to treasury_yield only. Verified for China (cpi, inflation, gdp, pmi, money_supply) and the US (every series but pmi / money_supply); World Bank and Eurostat series wait on network / engine fixes.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_macro_series",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "default": "US",
                    "description": "ISO 3166-1 alpha-2 of the economy (US, CN, DE, JP).",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "interval": {
                    "default": "auto",
                    "description": "Reporting frequency; auto = the series' native frequency at the provider.",
                    "enum": [
                      "auto",
                      "daily",
                      "weekly",
                      "monthly",
                      "quarterly",
                      "semiannual",
                      "annual"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "default": 24,
                    "description": "Maximum number of observations to return.",
                    "maximum": 200,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "maturity": {
                    "default": "10year",
                    "description": "Bond maturity for treasury_yield.",
                    "enum": [
                      "3month",
                      "2year",
                      "5year",
                      "7year",
                      "10year",
                      "30year"
                    ],
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "series": {
                    "description": "cpi = price index level; inflation = CPI change in percent year on year; gdp = output in the vendor's unit; unemployment = rate in percent; policy_rate = central bank rate; treasury_yield = government bond yield; retail_sales, payrolls, pmi, money_supply as the national statistics office publishes them.",
                    "enum": [
                      "cpi",
                      "inflation",
                      "gdp",
                      "unemployment",
                      "policy_rate",
                      "treasury_yield",
                      "retail_sales",
                      "payrolls",
                      "pmi",
                      "money_supply"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "series"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeriesPointPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Macroeconomic series (CPI, inflation, GDP, unemployment, policy rate, treasury yield, retail sales, payrolls, PMI, money supply) by country. Returns a normalized SeriesPoint page, most recent first.",
        "tags": [
          "finance"
        ],
        "x-action": "macro.series",
        "x-draft-bindings": [
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "alphavantage",
          "worldbank",
          "eurostat"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "tushare",
          "alphavantage",
          "worldbank",
          "eurostat"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.news": {
      "post": {
        "description": "symbol lists a company's news — the last seven days by default, or the start … end window when both are given; category alone lists the latest market news. Articles are normalized to NewsArticle with the tagged tickers; lang is not supplied by the current provider.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_news",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "category": {
                    "default": "general",
                    "description": "Market news category when no symbol is given.",
                    "enum": [
                      "general",
                      "forex",
                      "crypto",
                      "merger"
                    ],
                    "type": "string"
                  },
                  "end": {
                    "description": "Latest publish date, YYYY-MM-DD.",
                    "format": "date",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of articles to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "start": {
                    "description": "Earliest publish date, YYYY-MM-DD (give start and end together; default the last seven days).",
                    "format": "date",
                    "type": "string"
                  },
                  "symbol": {
                    "description": "Ticker to filter by (AAPL). Omit for market-wide news.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NewsArticlePageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Latest news for a ticker (optionally within a date window) or a market category (general, forex, crypto, merger). Returns a normalized NewsArticle page.",
        "tags": [
          "finance"
        ],
        "x-action": "news",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "finnhub",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.ownership": {
      "post": {
        "description": "holder_type=institution lists holders with shares and, where reported, value / percent: A-shares via Tushare's top-10 lists, US symbols via SEC 13F filings (one row per reporting manager, newest filing first, 10 per page); holder_type=insider lists recent US insider transactions (shares after the trade, signed change, transaction date).\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_ownership",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "holder_type": {
                    "default": "institution",
                    "description": "Which holder population to list.",
                    "enum": [
                      "institution",
                      "insider"
                    ],
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of holdings to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, 600519.SH.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OwnershipPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Institutional holders or insider transactions for a company. Returns a normalized Holding page.",
        "tags": [
          "finance"
        ],
        "x-action": "ownership",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "finnhub",
          "tushare",
          "secapi",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.price.history": {
      "post": {
        "description": "Historical bars by interval (1d, 1wk, 1mo) with an optional start / end window. Symbol forms as in finance.quote. A-shares (600519.SH, daily / weekly / monthly) and Hong Kong daily bars (0700.HK) come from Tushare, most recent first, with or without a window; every other market needs start (end optional) and comes from yfinance in chronological order, limit keeping the earliest bars of the window.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_price_history",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "end": {
                    "description": "Latest bar date, YYYY-MM-DD (inclusive); default today.",
                    "format": "date",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "interval": {
                    "default": "1d",
                    "description": "Bar size.",
                    "enum": [
                      "1d",
                      "1wk",
                      "1mo"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "default": 100,
                    "description": "Maximum number of bars to return.",
                    "maximum": 500,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "start": {
                    "description": "Earliest bar date, YYYY-MM-DD. Required for every market except A-shares and Hong Kong daily bars.",
                    "format": "date",
                    "type": "string"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, 0700.HK, 600519.SH, 000001.SZ.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CandlePageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Daily, weekly or monthly OHLCV bars for a stock, ETF or index. Returns a normalized Candle page.",
        "tags": [
          "finance"
        ],
        "x-action": "price.history",
        "x-draft-bindings": [
          "alphavantage",
          "alphavantage",
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "tushare",
          "yfinance",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.quote": {
      "post": {
        "description": "Pass the symbol in the quoting vendor's form: AAPL, 0700.HK (Yahoo style), 600519.SH or 600519.SS, 000001.SZ. US symbols are served by yfinance / Finnhub / AlphaVantage, Hong Kong and A-shares by yfinance / Tushare.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_quote",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "symbol": {
                    "description": "Ticker: AAPL, MSFT, 0700.HK, 600519.SH, 000001.SZ.",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Latest quote (price, change, OHLC, volume, market cap) for a stock, ETF or index. Returns a normalized Quote.",
        "tags": [
          "finance"
        ],
        "x-action": "quote",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "yfinance",
          "finnhub",
          "tushare",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/finance.symbol.search": {
      "post": {
        "description": "Free-text symbol lookup (apple, tencent, 600519.SS) plus exact A-share lookups by code (600519.SH) or Chinese name (贵州茅台). Results are normalized to Symbol; symbol is in the quoting vendor's own form and can be passed to the other finance methods unchanged.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "finance_symbol_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of matches to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Company name, keyword, ISIN / CUSIP, ticker fragment, or an exact A-share code / Chinese name.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SymbolPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search tickers by company name, keyword or code across global exchanges. Returns a normalized Symbol page.",
        "tags": [
          "finance"
        ],
        "x-action": "symbol.search",
        "x-draft-bindings": [
          "alphavantage"
        ],
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "yfinance",
          "finnhub",
          "tushare",
          "alphavantage"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/jobs.get": {
      "post": {
        "description": "Full posting for one JSearch job id (the id returned by jobs.search for every country but CN). Liepin ids have no detail endpoint in the registry.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "jobs_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "default": "US",
                    "description": "ISO 3166-1 alpha-2 country the posting was searched in.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id": {
                    "description": "JSearch job id as returned by jobs.search.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one job posting by the id from jobs.search. Returns a normalized Job.",
        "tags": [
          "jobs"
        ],
        "x-action": "get",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "jsearch"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/jobs.search": {
      "post": {
        "description": "Keyword job search. country=CN routes to Liepin (Chinese job board, Chinese keywords); every other country to JSearch (Google for Jobs aggregate). Filters a provider cannot express skip that provider instead of being dropped.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "jobs_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "default": "US",
                    "description": "ISO 3166-1 alpha-2 country of the job market. CN routes to Liepin; every other country to JSearch.",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "employment_type": {
                    "description": "Restrict to one employment type.",
                    "enum": [
                      "full_time",
                      "part_time",
                      "contract",
                      "internship"
                    ],
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of results to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "location": {
                    "description": "City or region to search in, e.g. San Francisco, CA / 上海.",
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Job title / keywords, e.g. software engineer, 软件工程师.",
                    "type": "string"
                  },
                  "remote": {
                    "default": false,
                    "description": "Only remote / work-from-home jobs.",
                    "type": "boolean"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Only postings published within this window.",
                    "enum": [
                      "day",
                      "week",
                      "month",
                      "all"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search job postings by keyword and location. Returns a normalized Job page.",
        "tags": [
          "jobs"
        ],
        "x-action": "search",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "jsearch",
          "liepin"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.post.comments": {
      "post": {
        "description": "Top-level comments on one public bilibili post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a bilibili post. Returns a normalized Comment page.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "post.comments",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.post.get": {
      "post": {
        "description": "Fetch a single public post on bilibili. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on bilibili by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "post.get",
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.post.search": {
      "post": {
        "description": "Keyword search over public posts on bilibili. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest (publish date), popular (most played).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on bilibili by keyword. Returns a normalized Post page.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "post.search",
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.trending": {
      "post": {
        "description": "What is trending on bilibili right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on bilibili. Returns a normalized Topic page.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "trending",
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.user.get": {
      "post": {
        "description": "One public bilibili profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public bilibili user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "user.get",
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.user.posts": {
      "post": {
        "description": "Public posts of one bilibili user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a bilibili user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "user.posts",
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.bilibili.user.search": {
      "post": {
        "description": "Keyword search over public bilibili accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_bilibili_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public bilibili users by keyword. Returns a normalized User page.",
        "tags": [
          "social/bilibili"
        ],
        "x-action": "user.search",
        "x-platform": "bilibili",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.link.resolve": {
      "post": {
        "description": "Turns a Douyin share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a Douyin share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "link.resolve",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.post.comments": {
      "post": {
        "description": "Top-level comments on one public Douyin post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Douyin post. Returns a normalized Comment page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "post.comments",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.post.get": {
      "post": {
        "description": "Fetch a single public post on Douyin. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Douyin by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "post.get",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.post.search": {
      "post": {
        "description": "Keyword search over public posts on Douyin. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "content_type": {
                    "default": "all",
                    "description": "Restrict to videos or image posts.",
                    "enum": [
                      "all",
                      "video",
                      "image"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest, popular (most liked).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Publish-time window.",
                    "enum": [
                      "all",
                      "day",
                      "week",
                      "half_year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Douyin by keyword. Returns a normalized Post page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "post.search",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.topic.posts": {
      "post": {
        "description": "Posts under one Douyin topic by topic ID or topic page URL. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_topic_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native topic ID or the topic page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "hot",
                    "description": "hot = most engaged first; latest = newest first.",
                    "enum": [
                      "hot",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List posts under a Douyin topic, hashtag or board. Returns a normalized Post page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "topic.posts",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.topic.search": {
      "post": {
        "description": "Keyword search over Douyin topics / hashtags / challenges, giving the IDs that topic.posts takes. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_topic_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword to search topics for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search Douyin topics or hashtags by keyword. Returns a normalized Topic page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "topic.search",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.trending": {
      "post": {
        "description": "What is trending on Douyin right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on Douyin. Returns a normalized Topic page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "trending",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.user.get": {
      "post": {
        "description": "One public Douyin profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Douyin user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "user.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.user.posts": {
      "post": {
        "description": "Public posts of one Douyin user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Douyin user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "user.posts",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.douyin.user.search": {
      "post": {
        "description": "Keyword search over public Douyin accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_douyin_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Douyin users by keyword. Returns a normalized User page.",
        "tags": [
          "social/douyin"
        ],
        "x-action": "user.search",
        "x-platform": "douyin",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.link.resolve": {
      "post": {
        "description": "Turns a Instagram share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a Instagram share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "link.resolve",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.post.comments": {
      "post": {
        "description": "Top-level comments on one public Instagram post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Instagram post. Returns a normalized Comment page.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "post.comments",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.post.get": {
      "post": {
        "description": "Fetch a single public post on Instagram. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Instagram by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "post.get",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.post.search": {
      "post": {
        "description": "Keyword search over public posts on Instagram. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 1.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Instagram by keyword. Returns a normalized Post page.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "post.search",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "instagram",
        "x-price-credits": 1.2,
        "x-pricing": "fixed",
        "x-providers": [
          "redfox",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.topic.posts": {
      "post": {
        "description": "Posts under one Instagram hashtag by name or hashtag page URL. Normalized to the Post object; page with next_cursor. sort=hot (the default) is served by a single provider route with no failover; sort=latest has two further fallbacks (the GraphQL hashtag feeds are recent-only), so prefer latest when availability matters more than ranking.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_topic_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native topic ID or the topic page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "hot",
                    "description": "hot = most engaged first; latest = newest first.",
                    "enum": [
                      "hot",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List posts under a Instagram topic, hashtag or board. Returns a normalized Post page.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "topic.posts",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.user.get": {
      "post": {
        "description": "One public Instagram profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Instagram user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "user.get",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.user.posts": {
      "post": {
        "description": "Public posts of one Instagram user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Instagram user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "user.posts",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.instagram.user.search": {
      "post": {
        "description": "Keyword search over public Instagram accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_instagram_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Instagram users by keyword. Returns a normalized User page.",
        "tags": [
          "social/instagram"
        ],
        "x-action": "user.search",
        "x-platform": "instagram",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.link.resolve": {
      "post": {
        "description": "Turns a Kuaishou share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a Kuaishou share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "link.resolve",
        "x-draft-bindings": [
          "tikhub",
          "justoneapi"
        ],
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.post.comments": {
      "post": {
        "description": "Top-level comments on one public Kuaishou post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Kuaishou post. Returns a normalized Comment page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "post.comments",
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.post.get": {
      "post": {
        "description": "Fetch a single public post on Kuaishou. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Kuaishou by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "post.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.post.search": {
      "post": {
        "description": "Keyword search over public posts on Kuaishou. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (comprehensive), latest, popular (most liked).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Publish-time window.",
                    "enum": [
                      "all",
                      "day",
                      "week",
                      "month"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Kuaishou by keyword. Returns a normalized Post page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "post.search",
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.topic.posts": {
      "post": {
        "description": "Posts under one Kuaishou topic by topic ID or topic page URL. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_topic_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native topic ID or the topic page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "hot",
                    "description": "hot = most engaged first; latest = newest first.",
                    "enum": [
                      "hot",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List posts under a Kuaishou topic, hashtag or board. Returns a normalized Post page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "topic.posts",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.topic.search": {
      "post": {
        "description": "Keyword search over Kuaishou topics / hashtags / challenges, giving the IDs that topic.posts takes. Normalized to the Topic object.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_topic_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword to search topics for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search Kuaishou topics or hashtags by keyword. Returns a normalized Topic page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "topic.search",
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.trending": {
      "post": {
        "description": "What is trending on Kuaishou right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on Kuaishou. Returns a normalized Topic page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "trending",
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.user.get": {
      "post": {
        "description": "One public Kuaishou profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Kuaishou user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "user.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.user.posts": {
      "post": {
        "description": "Public posts of one Kuaishou user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Kuaishou user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "user.posts",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.kuaishou.user.search": {
      "post": {
        "description": "Keyword search over public Kuaishou accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_kuaishou_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Kuaishou users by keyword. Returns a normalized User page.",
        "tags": [
          "social/kuaishou"
        ],
        "x-action": "user.search",
        "x-platform": "kuaishou",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.linkedin.post.comments": {
      "post": {
        "description": "Top-level comments on one public LinkedIn post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.8 credits per successful call, whichever provider serves it.",
        "operationId": "social_linkedin_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a LinkedIn post. Returns a normalized Comment page.",
        "tags": [
          "social/linkedin"
        ],
        "x-action": "post.comments",
        "x-draft-bindings": [
          "tikhub",
          "justoneapi"
        ],
        "x-platform": "linkedin",
        "x-price-credits": 0.8,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.linkedin.post.get": {
      "post": {
        "description": "Fetch a single public post on LinkedIn. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.8 credits per successful call, whichever provider serves it.",
        "operationId": "social_linkedin_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on LinkedIn by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/linkedin"
        ],
        "x-action": "post.get",
        "x-platform": "linkedin",
        "x-price-credits": 0.8,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.linkedin.user.get": {
      "post": {
        "description": "One public LinkedIn profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.8 credits per successful call, whichever provider serves it.",
        "operationId": "social_linkedin_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public LinkedIn user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/linkedin"
        ],
        "x-action": "user.get",
        "x-platform": "linkedin",
        "x-price-credits": 0.8,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.linkedin.user.posts": {
      "post": {
        "description": "Public posts of one LinkedIn user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.8 credits per successful call, whichever provider serves it.",
        "operationId": "social_linkedin_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a LinkedIn user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/linkedin"
        ],
        "x-action": "user.posts",
        "x-draft-bindings": [
          "tikhub",
          "tikhub",
          "justoneapi"
        ],
        "x-platform": "linkedin",
        "x-price-credits": 0.8,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.post.comments": {
      "post": {
        "description": "Top-level comments on one public Reddit post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Reddit post. Returns a normalized Comment page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "post.comments",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.post.get": {
      "post": {
        "description": "Fetch a single public post on Reddit. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Reddit by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "post.get",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.post.search": {
      "post": {
        "description": "Keyword search over public posts on Reddit. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest (new), popular (top).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Post-time window.",
                    "enum": [
                      "all",
                      "hour",
                      "day",
                      "week",
                      "month",
                      "year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Reddit by keyword. Returns a normalized Post page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "post.search",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.topic.posts": {
      "post": {
        "description": "Posts under one Reddit topic by topic ID or topic page URL. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_topic_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native topic ID or the topic page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "hot",
                    "description": "hot = most engaged first; latest = newest first.",
                    "enum": [
                      "hot",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List posts under a Reddit topic, hashtag or board. Returns a normalized Post page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "topic.posts",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.topic.search": {
      "post": {
        "description": "Keyword search over Reddit topics / hashtags / challenges, giving the IDs that topic.posts takes. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_topic_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword to search topics for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search Reddit topics or hashtags by keyword. Returns a normalized Topic page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "topic.search",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.trending": {
      "post": {
        "description": "What is trending on Reddit right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on Reddit. Returns a normalized Topic page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "trending",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.user.get": {
      "post": {
        "description": "One public Reddit profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Reddit user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "user.get",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.user.posts": {
      "post": {
        "description": "Public posts of one Reddit user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Reddit user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "user.posts",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.reddit.user.search": {
      "post": {
        "description": "Keyword search over public Reddit accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_reddit_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Reddit users by keyword. Returns a normalized User page.",
        "tags": [
          "social/reddit"
        ],
        "x-action": "user.search",
        "x-platform": "reddit",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.link.resolve": {
      "post": {
        "description": "Turns a TikTok share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a TikTok share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "link.resolve",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.post.comments": {
      "post": {
        "description": "Top-level comments on one public TikTok post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a TikTok post. Returns a normalized Comment page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "post.comments",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.post.get": {
      "post": {
        "description": "Fetch a single public post on TikTok. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on TikTok by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "post.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.post.search": {
      "post": {
        "description": "Keyword search over public posts on TikTok. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 region to search in (default US).",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest, popular (most liked).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Publish-time window.",
                    "enum": [
                      "all",
                      "day",
                      "week",
                      "month",
                      "half_year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on TikTok by keyword. Returns a normalized Post page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "post.search",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.topic.posts": {
      "post": {
        "description": "Posts under one TikTok topic by topic ID or topic page URL. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_topic_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native topic ID or the topic page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "hot",
                    "description": "hot = most engaged first; latest = newest first.",
                    "enum": [
                      "hot",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List posts under a TikTok topic, hashtag or board. Returns a normalized Post page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "topic.posts",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.topic.search": {
      "post": {
        "description": "Keyword search over TikTok topics / hashtags / challenges, giving the IDs that topic.posts takes. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_topic_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword to search topics for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search TikTok topics or hashtags by keyword. Returns a normalized Topic page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "topic.search",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.trending": {
      "post": {
        "description": "What is trending on TikTok right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on TikTok. Returns a normalized Topic page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "trending",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.user.get": {
      "post": {
        "description": "One public TikTok profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public TikTok user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "user.get",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.user.posts": {
      "post": {
        "description": "Public posts of one TikTok user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a TikTok user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "user.posts",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.tiktok.user.search": {
      "post": {
        "description": "Keyword search over public TikTok accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_tiktok_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public TikTok users by keyword. Returns a normalized User page.",
        "tags": [
          "social/tiktok"
        ],
        "x-action": "user.search",
        "x-platform": "tiktok",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.link.resolve": {
      "post": {
        "description": "Turns a WeChat Channels share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a WeChat Channels share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "link.resolve",
        "x-draft-bindings": [
          "tikhub",
          "redfox"
        ],
        "x-platform": "wechat_channels",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.post.comments": {
      "post": {
        "description": "Top-level comments on one public WeChat Channels post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a WeChat Channels post. Returns a normalized Comment page.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "post.comments",
        "x-draft-bindings": [
          "tikhub",
          "justoneapi"
        ],
        "x-platform": "wechat_channels",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.post.get": {
      "post": {
        "description": "Fetch a single public post on WeChat Channels. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on WeChat Channels by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "post.get",
        "x-draft-bindings": [
          "tikhub",
          "redfox",
          "redfox"
        ],
        "x-platform": "wechat_channels",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.post.search": {
      "post": {
        "description": "Keyword search over public posts on WeChat Channels. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest, popular (most liked).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Publish-time window.",
                    "enum": [
                      "all",
                      "day",
                      "week",
                      "half_year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on WeChat Channels by keyword. Returns a normalized Post page.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "post.search",
        "x-draft-bindings": [
          "redfox"
        ],
        "x-platform": "wechat_channels",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.user.get": {
      "post": {
        "description": "One public WeChat Channels profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public WeChat Channels user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "user.get",
        "x-draft-bindings": [
          "tikhub",
          "tikhub"
        ],
        "x-platform": "wechat_channels",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.user.posts": {
      "post": {
        "description": "Public posts of one WeChat Channels user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a WeChat Channels user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "user.posts",
        "x-draft-bindings": [
          "tikhub",
          "justoneapi"
        ],
        "x-platform": "wechat_channels",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_channels.user.search": {
      "post": {
        "description": "Keyword search over public WeChat Channels accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_channels_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public WeChat Channels users by keyword. Returns a normalized User page.",
        "tags": [
          "social/wechat_channels"
        ],
        "x-action": "user.search",
        "x-platform": "wechat_channels",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_mp.post.comments": {
      "post": {
        "description": "Top-level comments on one public WeChat Official Accounts post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_mp_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a WeChat Official Accounts post. Returns a normalized Comment page.",
        "tags": [
          "social/wechat_mp"
        ],
        "x-action": "post.comments",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "wechat_mp",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_mp.post.get": {
      "post": {
        "description": "Fetch a single public post on WeChat Official Accounts. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_mp_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on WeChat Official Accounts by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/wechat_mp"
        ],
        "x-action": "post.get",
        "x-platform": "wechat_mp",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_mp.post.search": {
      "post": {
        "description": "Keyword search over public posts on WeChat Official Accounts. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_mp_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest, popular (most engaged).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on WeChat Official Accounts by keyword. Returns a normalized Post page.",
        "tags": [
          "social/wechat_mp"
        ],
        "x-action": "post.search",
        "x-platform": "wechat_mp",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_mp.user.get": {
      "post": {
        "description": "One public WeChat Official Accounts profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_mp_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public WeChat Official Accounts user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/wechat_mp"
        ],
        "x-action": "user.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "wechat_mp",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_mp.user.posts": {
      "post": {
        "description": "Public posts of one WeChat Official Accounts user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_mp_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a WeChat Official Accounts user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/wechat_mp"
        ],
        "x-action": "user.posts",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "wechat_mp",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.wechat_mp.user.search": {
      "post": {
        "description": "Keyword search over public WeChat Official Accounts accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_wechat_mp_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public WeChat Official Accounts users by keyword. Returns a normalized User page.",
        "tags": [
          "social/wechat_mp"
        ],
        "x-action": "user.search",
        "x-platform": "wechat_mp",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.post.comments": {
      "post": {
        "description": "Top-level comments on one public Weibo post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Weibo post. Returns a normalized Comment page.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "post.comments",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.post.get": {
      "post": {
        "description": "Fetch a single public post on Weibo. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Weibo by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "post.get",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.post.search": {
      "post": {
        "description": "Keyword search over public posts on Weibo. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "content_type": {
                    "default": "all",
                    "description": "Restrict to posts with images or videos.",
                    "enum": [
                      "all",
                      "image",
                      "video"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (comprehensive), latest (real-time), popular (hot).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Weibo by keyword. Returns a normalized Post page.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "post.search",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.topic.search": {
      "post": {
        "description": "Keyword search over Weibo topics / hashtags / challenges, giving the IDs that topic.posts takes. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_topic_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword to search topics for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search Weibo topics or hashtags by keyword. Returns a normalized Topic page.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "topic.search",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.trending": {
      "post": {
        "description": "What is trending on Weibo right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on Weibo. Returns a normalized Topic page.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "trending",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.user.get": {
      "post": {
        "description": "One public Weibo profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Weibo user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "user.get",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.user.posts": {
      "post": {
        "description": "Public posts of one Weibo user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Weibo user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "user.posts",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.weibo.user.search": {
      "post": {
        "description": "Keyword search over public Weibo accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_weibo_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Weibo users by keyword. Returns a normalized User page.",
        "tags": [
          "social/weibo"
        ],
        "x-action": "user.search",
        "x-platform": "weibo",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.post.comments": {
      "post": {
        "description": "Top-level comments on one public X (Twitter) post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a X (Twitter) post. Returns a normalized Comment page.",
        "tags": [
          "social/x"
        ],
        "x-action": "post.comments",
        "x-platform": "x",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "sorsa"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.post.get": {
      "post": {
        "description": "Fetch a single public post on X (Twitter). Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 1 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on X (Twitter) by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/x"
        ],
        "x-action": "post.get",
        "x-platform": "x",
        "x-price-credits": 1,
        "x-pricing": "fixed",
        "x-providers": [
          "sorsa",
          "tikhub"
        ],
        "x-since": "2026-10-12",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.post.search": {
      "post": {
        "description": "Keyword search over public posts on X (Twitter). Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 1 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Search query. X advanced operators work: from:user, to:user, since:YYYY-MM-DD, until:YYYY-MM-DD, \"exact phrase\", #hashtag, filter:images.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = most recent first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on X (Twitter) by keyword. Returns a normalized Post page.",
        "tags": [
          "social/x"
        ],
        "x-action": "post.search",
        "x-platform": "x",
        "x-price-credits": 1,
        "x-pricing": "fixed",
        "x-providers": [
          "sorsa",
          "tikhub"
        ],
        "x-since": "2026-10-12",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.trending": {
      "post": {
        "description": "What is trending on X (Twitter) right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on X (Twitter). Returns a normalized Topic page.",
        "tags": [
          "social/x"
        ],
        "x-action": "trending",
        "x-platform": "x",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "sorsa"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.user.get": {
      "post": {
        "description": "One public X (Twitter) profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public X (Twitter) user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/x"
        ],
        "x-action": "user.get",
        "x-platform": "x",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "sorsa"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.user.posts": {
      "post": {
        "description": "Public posts of one X (Twitter) user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a X (Twitter) user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/x"
        ],
        "x-action": "user.posts",
        "x-platform": "x",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "sorsa"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.x.user.search": {
      "post": {
        "description": "Keyword search over public X (Twitter) accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 1 credits per successful call, whichever provider serves it.",
        "operationId": "social_x_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public X (Twitter) users by keyword. Returns a normalized User page.",
        "tags": [
          "social/x"
        ],
        "x-action": "user.search",
        "x-platform": "x",
        "x-price-credits": 1,
        "x-pricing": "fixed",
        "x-providers": [
          "sorsa"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.link.resolve": {
      "post": {
        "description": "Turns a Xiaohongshu (RedNote) share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a Xiaohongshu (RedNote) share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "link.resolve",
        "x-draft-bindings": [
          "justoneapi"
        ],
        "x-platform": "xiaohongshu",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.post.comments": {
      "post": {
        "description": "Top-level comments on one public Xiaohongshu (RedNote) post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Xiaohongshu (RedNote) post. Returns a normalized Comment page.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "post.comments",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.post.get": {
      "post": {
        "description": "Fetch a single public post on Xiaohongshu (RedNote). Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Xiaohongshu (RedNote) by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "post.get",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.post.search": {
      "post": {
        "description": "Keyword search over public posts on Xiaohongshu (RedNote). Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "content_type": {
                    "default": "all",
                    "description": "Restrict to video notes or image notes.",
                    "enum": [
                      "all",
                      "video",
                      "image"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "Ranking: general (relevance), latest, popular (most liked), most_commented, most_collected.",
                    "enum": [
                      "general",
                      "latest",
                      "popular",
                      "most_commented",
                      "most_collected"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Publish-time window.",
                    "enum": [
                      "all",
                      "day",
                      "week",
                      "half_year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Xiaohongshu (RedNote) by keyword. Returns a normalized Post page.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "post.search",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote",
          "justoneapi"
        ],
        "x-since": "2026-10-12",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.post.trending": {
      "post": {
        "description": "The platform's current hot / trending POSTS (not topics; see `trending` for topics), optionally for one country. Normalized to the Post object. Added on 2026-10-13 because Xiaohongshu and YouTube publish trending notes / videos rather than topic names.\n\nFixed price: 4.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_post_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Posts trending on Xiaohongshu (RedNote) right now. Returns a normalized Post page.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "post.trending",
        "x-platform": "xiaohongshu",
        "x-price-credits": 4.4,
        "x-pricing": "fixed",
        "x-providers": [
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.topic.posts": {
      "post": {
        "description": "Posts under one Xiaohongshu (RedNote) topic by topic ID or topic page URL. Normalized to the Post object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_topic_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native topic ID or the topic page URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "hot",
                    "description": "hot = most engaged first; latest = newest first.",
                    "enum": [
                      "hot",
                      "latest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List posts under a Xiaohongshu (RedNote) topic, hashtag or board. Returns a normalized Post page.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "topic.posts",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.user.get": {
      "post": {
        "description": "One public Xiaohongshu (RedNote) profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Xiaohongshu (RedNote) user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "user.get",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.user.posts": {
      "post": {
        "description": "Public posts of one Xiaohongshu (RedNote) user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Xiaohongshu (RedNote) user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "user.posts",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.xiaohongshu.user.search": {
      "post": {
        "description": "Keyword search over public Xiaohongshu (RedNote) accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 2 credits per successful call, whichever provider serves it.",
        "operationId": "social_xiaohongshu_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Xiaohongshu (RedNote) users by keyword. Returns a normalized User page.",
        "tags": [
          "social/xiaohongshu"
        ],
        "x-action": "user.search",
        "x-platform": "xiaohongshu",
        "x-price-credits": 2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "rnote",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.link.resolve": {
      "post": {
        "description": "Turns a YouTube share link (app share text, short link, tracking URL) into the canonical target: its kind, platform-native ID and canonical URL. Use it before post.get when all you have is a share link.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_link_resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "The share link or short link.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkTargetEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Resolve a YouTube share link or short link to the post, user or topic it points at.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "link.resolve",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.post.comments": {
      "post": {
        "description": "Top-level comments on one public YouTube post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a YouTube post. Returns a normalized Comment page.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "post.comments",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.post.get": {
      "post": {
        "description": "Fetch a single public post on YouTube. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on YouTube by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "post.get",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.post.search": {
      "post": {
        "description": "Keyword search over public posts on YouTube. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), latest (upload date), popular (view count).",
                    "enum": [
                      "general",
                      "latest",
                      "popular"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Upload-time window.",
                    "enum": [
                      "all",
                      "hour",
                      "day",
                      "week",
                      "month",
                      "year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on YouTube by keyword. Returns a normalized Post page.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "post.search",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi",
          "redfox"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.post.transcript": {
      "post": {
        "description": "Speech-to-text or platform captions for one YouTube video by ID or URL, with timed segments when the provider supplies them.\n\nFixed price: 1.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_post_transcript",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "Preferred transcript language, BCP 47 (e.g. en, zh-Hans); omit for the provider's default.",
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscriptEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Transcript / captions of a YouTube video post. Returns a normalized Transcript.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "post.transcript",
        "x-draft-bindings": [
          "justoneapi",
          "tikhub"
        ],
        "x-platform": "youtube",
        "x-price-credits": 1.2,
        "x-pricing": "fixed",
        "x-providers": [
          "redfox",
          "justoneapi",
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.user.get": {
      "post": {
        "description": "One public YouTube profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public YouTube user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "user.get",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.user.posts": {
      "post": {
        "description": "Public posts of one YouTube user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a YouTube user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "user.posts",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.youtube.user.search": {
      "post": {
        "description": "Keyword search over public YouTube accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.4 credits per successful call, whichever provider serves it.",
        "operationId": "social_youtube_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public YouTube users by keyword. Returns a normalized User page.",
        "tags": [
          "social/youtube"
        ],
        "x-action": "user.search",
        "x-platform": "youtube",
        "x-price-credits": 0.4,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.post.comments": {
      "post": {
        "description": "Top-level comments on one public Zhihu post, by post ID or URL. Normalized to the Comment object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_post_comments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of comments to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "latest",
                    "description": "latest = newest first; top = most engaged first.",
                    "enum": [
                      "latest",
                      "top"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List comments on a Zhihu post. Returns a normalized Comment page.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "post.comments",
        "x-draft-bindings": [
          "tikhub",
          "justoneapi"
        ],
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.post.get": {
      "post": {
        "description": "Fetch a single public post on Zhihu. Pass either the platform-native ID or the post URL; the server extracts the ID and routes to a provider that accepts that input form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_post_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native post ID or the full post URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one public post on Zhihu by ID or URL. Returns a normalized Post.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "post.get",
        "x-draft-bindings": [
          "tikhub"
        ],
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.post.search": {
      "post": {
        "description": "Keyword search over public posts on Zhihu. Results are normalized to the Post object; page with next_cursor. The server picks the provider and fails over; the response names the provider that served it.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_post_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "content_type": {
                    "default": "all",
                    "description": "Restrict to answers or column articles.",
                    "enum": [
                      "all",
                      "answer",
                      "article"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword or phrase to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "general",
                    "description": "general (relevance), popular (most upvoted), latest (newest).",
                    "enum": [
                      "general",
                      "popular",
                      "latest"
                    ],
                    "type": "string"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Publish-time window.",
                    "enum": [
                      "all",
                      "day",
                      "week",
                      "month",
                      "three_months",
                      "half_year",
                      "year"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public posts on Zhihu by keyword. Returns a normalized Post page.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "post.search",
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.topic.search": {
      "post": {
        "description": "Keyword search over Zhihu topics / hashtags / challenges, giving the IDs that topic.posts takes. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_topic_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword to search topics for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search Zhihu topics or hashtags by keyword. Returns a normalized Topic page.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "topic.search",
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.trending": {
      "post": {
        "description": "What is trending on Zhihu right now, optionally for one country. Normalized to the Topic object.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_trending",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code; omit for the platform's global or default list.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of topics to return.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopicPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Current trending topics on Zhihu. Returns a normalized Topic page.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "trending",
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.user.get": {
      "post": {
        "description": "One public Zhihu profile. Accepts the platform-native user ID, the handle, or the profile URL; the server routes to a provider that accepts that form.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_user_get",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch a public Zhihu user profile by ID, handle or profile URL. Returns a normalized User.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "user.get",
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub",
          "justoneapi"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.user.posts": {
      "post": {
        "description": "Public posts of one Zhihu user by ID, handle or profile URL, newest first. Normalized to the Post object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_user_posts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "id_or_url": {
                    "description": "Platform-native user ID, handle (with or without @) or profile URL.",
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of posts to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "id_or_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List a Zhihu user's public posts, newest first. Returns a normalized Post page.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "user.posts",
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/social.zhihu.user.search": {
      "post": {
        "description": "Keyword search over public Zhihu accounts. Normalized to the User object; page with next_cursor.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "social_zhihu_user_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 20,
                    "description": "Maximum number of users to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Keyword, name or handle fragment to search for.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search public Zhihu users by keyword. Returns a normalized User page.",
        "tags": [
          "social/zhihu"
        ],
        "x-action": "user.search",
        "x-platform": "zhihu",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "tikhub"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/travel.flight.search": {
      "post": {
        "description": "One-way or round-trip flight offers between two IATA airport codes, priced for all passengers in the requested currency. Leg times are local airport times without a zone; stops counts the connections of the outbound journey.\n\nFixed price: 0.3 credits per successful call, whichever provider serves it.",
        "operationId": "travel_flight_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "adults": {
                    "default": 1,
                    "description": "Number of adult passengers.",
                    "maximum": 9,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "cabin_class": {
                    "default": "economy",
                    "description": "Cabin class.",
                    "enum": [
                      "economy",
                      "premium_economy",
                      "business",
                      "first"
                    ],
                    "type": "string"
                  },
                  "currency": {
                    "default": "USD",
                    "description": "ISO 4217 currency for prices.",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "depart_date": {
                    "description": "Departure date, YYYY-MM-DD.",
                    "type": "string"
                  },
                  "destination": {
                    "description": "Arrival airport IATA code, e.g. LHR.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of offers to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "max_stops": {
                    "description": "Maximum number of stops; omit for any.",
                    "enum": [
                      0,
                      1,
                      2
                    ],
                    "type": "integer"
                  },
                  "origin": {
                    "description": "Departure airport IATA code, e.g. JFK.",
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "return_date": {
                    "description": "Return date for a round trip, YYYY-MM-DD; omit for one-way.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "sort": {
                    "default": "best",
                    "description": "Result ordering.",
                    "enum": [
                      "best",
                      "cheapest",
                      "fastest"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "origin",
                  "destination",
                  "depart_date"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightOfferPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search flight offers between two airports for given dates. Returns a normalized FlightOffer page.",
        "tags": [
          "travel"
        ],
        "x-action": "flight.search",
        "x-price-credits": 0.3,
        "x-pricing": "fixed",
        "x-providers": [
          "booking"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/travel.hotel.search": {
      "post": {
        "description": "Hotels available around lat / lon for the check-in / check-out dates, priced for the whole stay in the requested currency. City names and destination ids are not resolved — geocode first; pass radius_km to stay inside a city.\n\nFixed price: 0.3 credits per successful call, whichever provider serves it.",
        "operationId": "travel_hotel_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "adults": {
                    "default": 2,
                    "description": "Number of adult guests.",
                    "maximum": 30,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "checkin": {
                    "description": "Check-in date, YYYY-MM-DD.",
                    "type": "string"
                  },
                  "checkout": {
                    "description": "Check-out date, YYYY-MM-DD.",
                    "type": "string"
                  },
                  "currency": {
                    "default": "USD",
                    "description": "ISO 4217 currency for prices.",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "Booking language code for names, e.g. en-us, zh-cn.",
                    "type": "string"
                  },
                  "lat": {
                    "description": "Latitude of the search centre, decimal degrees.",
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of hotels to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "lon": {
                    "description": "Longitude of the search centre, decimal degrees.",
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "price_max": {
                    "description": "Maximum total price filter, in the requested currency.",
                    "type": "number"
                  },
                  "price_min": {
                    "description": "Minimum total price filter, in the requested currency.",
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "radius_km": {
                    "description": "Search radius around the point, km (the provider default is very wide).",
                    "type": "number"
                  },
                  "rooms": {
                    "default": 1,
                    "description": "Number of rooms.",
                    "maximum": 30,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "lat",
                  "lon",
                  "checkin",
                  "checkout"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HotelPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search hotels around a coordinate for given dates and guests. Returns a normalized Hotel page.",
        "tags": [
          "travel"
        ],
        "x-action": "hotel.search",
        "x-price-credits": 0.3,
        "x-pricing": "fixed",
        "x-providers": [
          "booking"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/travel.location.search": {
      "post": {
        "description": "Resolves a city / region / airport name to the provider id that travel.hotel.search (kind=hotel: destination id) or travel.flight.search (kind=flight: airport or city id such as JFK.AIRPORT) accepts.\n\nFixed price: 0.3 credits per successful call, whichever provider serves it.",
        "operationId": "travel_location_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "kind": {
                    "default": "hotel",
                    "description": "Which search the id is for.",
                    "enum": [
                      "hotel",
                      "flight"
                    ],
                    "type": "string"
                  },
                  "lang": {
                    "description": "Language of the returned names (BCP 47), e.g. en-us, zh-cn.",
                    "type": "string"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of places to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Place or airport name, e.g. New York, Heathrow, Tokyo.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelLocationPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Find hotel destinations or airports by name. Returns a normalized TravelLocation page.",
        "tags": [
          "travel"
        ],
        "x-action": "location.search",
        "x-price-credits": 0.3,
        "x-pricing": "fixed",
        "x-providers": [
          "booking"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/weather.forecast": {
      "post": {
        "description": "3–30 day forecast for a point (lat / lon) or a QWeather LocationID (location_id). City names are not resolved — geocode first. Metric units (°C, mm, km/h); condition / wind texts follow lang (default Chinese).\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "weather_forecast",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "days": {
                    "default": 7,
                    "description": "Forecast length in days (QWeather granularities).",
                    "enum": [
                      3,
                      7,
                      10,
                      15,
                      30
                    ],
                    "type": "integer"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "BCP 47 language for condition / wind texts, e.g. en, zh-Hans; default is the provider's (Chinese).",
                    "type": "string"
                  },
                  "lat": {
                    "description": "Latitude in decimal degrees. Required unless location_id is given.",
                    "maximum": 90,
                    "minimum": -90,
                    "type": "number"
                  },
                  "location_id": {
                    "description": "QWeather LocationID (e.g. 101010100 for Beijing) from the QWeather geo API. Give either lat / lon or location_id, not both.",
                    "type": "string"
                  },
                  "lon": {
                    "description": "Longitude in decimal degrees. Required unless location_id is given.",
                    "maximum": 180,
                    "minimum": -180,
                    "type": "number"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForecastEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Daily weather forecast for a coordinate or QWeather location id. Returns a normalized Forecast.",
        "tags": [
          "weather"
        ],
        "x-action": "forecast",
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "qweather"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/weather.location.search": {
      "post": {
        "description": "Resolves a city / district name to the provider's location id and coordinates, which weather.forecast accepts (location_id, or lat / lon). Optional country narrows the match.\n\nFixed price: 0.1 credits per successful call, whichever provider serves it.",
        "operationId": "weather_location_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code to narrow the match, e.g. CN, GB.",
                    "type": "string"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "Language of the returned names (BCP 47), e.g. en, zh.",
                    "type": "string"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of places to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Place name, e.g. 北京, London, Shanghai Pudong.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeoLocationPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Find places by name for weather lookups. Returns a normalized GeoLocation page.",
        "tags": [
          "weather"
        ],
        "x-action": "location.search",
        "x-price-credits": 0.1,
        "x-pricing": "fixed",
        "x-providers": [
          "qweather"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/web.answer": {
      "post": {
        "description": "Searches the web for the question and returns an engine-written answer plus the source pages it was grounded in (title, url, passage). Not a result list — use web.search for that. include_domains / exclude_domains / time_range route to an engine that supports them.\n\nFixed price: 1.1 credits per successful call, whichever provider serves it.",
        "operationId": "web_answer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code to bias the search, e.g. US, CN.",
                    "type": "string"
                  },
                  "exclude_domains": {
                    "description": "Exclude sources from these domains (routes to an engine that supports it).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_domains": {
                    "description": "Restrict sources to these domains (routes to an engine that supports it).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "BCP 47 language tag for the answer and the sources, e.g. en, zh-Hans.",
                    "type": "string"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "The question, in natural language.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Only ground the answer in pages published within this window.",
                    "enum": [
                      "day",
                      "week",
                      "month",
                      "year",
                      "all"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnswerEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Answer a question from live web search results, with the sources the answer was grounded in.",
        "tags": [
          "web"
        ],
        "x-action": "answer",
        "x-price-credits": 1.1,
        "x-pricing": "fixed",
        "x-providers": [
          "tavily"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/web.scrape": {
      "post": {
        "description": "Fetches a single URL through a scraping provider and returns the main content as markdown (default) or plain text, plus title, description, language, publish time and the target's HTTP status where the provider reports them. format=text routes to a provider that can deliver plain text.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it. When firecrawl serves the call the fixed price is the floor: the provider meters the actual cost (per page / per document) and credits_charged reports it; describe carries the provider's note.",
        "operationId": "web_scrape",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "format": {
                    "default": "markdown",
                    "description": "Format of the returned text. markdown keeps headings, lists and links; text is plain text.",
                    "enum": [
                      "markdown",
                      "text"
                    ],
                    "type": "string"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "url": {
                    "description": "Absolute http(s) URL to fetch.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Fetch one web page and return its readable text (markdown or plain text) with title and basic metadata.",
        "tags": [
          "web"
        ],
        "x-action": "scrape",
        "x-price-credits": 0.2,
        "x-pricing": "fixed_floor_metered",
        "x-providers": [
          "firecrawl",
          "jina",
          "tavily",
          "brightdata",
          "surf"
        ],
        "x-since": "2026-10-13",
        "x-stability": "beta"
      }
    },
    "/v2/ops/web.search": {
      "post": {
        "description": "Keyword search over the web (type=web) or news (type=news). Results are normalized to WebResult; the server picks the engine and fails over. include_domains / exclude_domains route to an engine that supports them.\n\nFixed price: 0.2 credits per successful call, whichever provider serves it.",
        "operationId": "web_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code to bias results, e.g. US, CN.",
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Opaque pagination cursor from the previous response's next_cursor. Send the same query parameters with it.",
                    "type": "string"
                  },
                  "exclude_domains": {
                    "description": "Exclude results from these domains (routes to an engine that supports it).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "fields": {
                    "$ref": "#/components/schemas/FieldsProjection"
                  },
                  "include_domains": {
                    "description": "Restrict results to these domains (routes to an engine that supports it).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "include_raw": {
                    "$ref": "#/components/schemas/IncludeRaw"
                  },
                  "lang": {
                    "description": "BCP 47 language tag for the results language, e.g. en, zh-Hans.",
                    "type": "string"
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of results to return.",
                    "maximum": 20,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/ProviderShorthand"
                  },
                  "query": {
                    "description": "Search query.",
                    "type": "string"
                  },
                  "routing": {
                    "$ref": "#/components/schemas/Routing"
                  },
                  "time_range": {
                    "default": "all",
                    "description": "Only results published within this window.",
                    "enum": [
                      "day",
                      "week",
                      "month",
                      "year",
                      "all"
                    ],
                    "type": "string"
                  },
                  "type": {
                    "default": "web",
                    "description": "Result type. images and videos are planned as non-breaking additions.",
                    "enum": [
                      "web",
                      "news"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebResultPageEnvelope"
                }
              }
            },
            "description": "Success envelope"
          },
          "400": {
            "$ref": "#/components/responses/ValidationError"
          },
          "402": {
            "$ref": "#/components/responses/InsufficientCredits"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "502": {
            "$ref": "#/components/responses/UpstreamFailed"
          },
          "504": {
            "$ref": "#/components/responses/Timeout"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Web or news search across several engines. Returns a normalized result page.",
        "tags": [
          "web"
        ],
        "x-action": "search",
        "x-price-credits": 0.2,
        "x-pricing": "fixed",
        "x-providers": [
          "serper",
          "brave",
          "tavily"
        ],
        "x-since": "2026-10-12",
        "x-stability": "beta"
      }
    },
    "/v2/ops/{op}": {
      "get": {
        "description": "Input/output schemas, bindings with list prices and live health, unsupported fields and examples. No authentication required.",
        "operationId": "describeOp",
        "parameters": [
          {
            "in": "path",
            "name": "op",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MethodDescription"
                }
              }
            },
            "description": "Method description"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Unknown method"
          }
        },
        "summary": "Describe a scenario method",
        "tags": [
          "catalog"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.agentkey.app"
    }
  ]
}