Contract
{
"type": "object",
"required": [
"item_id",
"comment_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"description": "Number"
},
"cursor": {
"type": "integer",
"default": 0,
"description": "Cursor"
},
"item_id": {
"type": "string",
"examples": [
"7354666303006723354"
],
"description": "Video id"
},
"comment_id": {
"type": "string",
"examples": [
"7354669356632638218"
],
"description": "Comment id"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"comments",
"cursor",
"has_more",
"total"
],
"properties": {
"total": {
"type": "number",
"description": "Total reply count under the queried comment. Observed as 0 on one real fixture despite 8 replies being returned -- do not treat this as an accurate count."
},
"cursor": {
"type": "number",
"description": "Pass back as `cursor` to fetch the next page."
},
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The reply's own comment id (source: cid)."
},
"text": {
"type": "string"
},
"user": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Source: uid."
},
"handle": {
"type": "string",
"description": "The author's public Douyin handle. Empty string when unset (source: unique_id)."
},
"region": {
"type": "string",
"description": "Country code, e.g. 'CN'."
},
"sec_uid": {
"type": "string",
"description": "Douyin's opaque secure user id."
},
"nickname": {
"type": "string",
"description": "The author's public display name."
},
"short_id": {
"type": "string"
}
},
"description": "The reply's author.",
"additionalProperties": false
},
"is_hot": {
"type": "boolean"
},
"video_id": {
"type": "string",
"description": "The video this reply belongs to (source: aweme_id)."
},
"can_share": {
"type": "boolean",
"description": "Not present on every reply observed."
},
"is_hidden": {
"type": "boolean",
"description": "Whether the reply is buried/collapsed by moderation (source: user_buried)."
},
"badge_text": {
"type": "string",
"description": "A badge label Douyin shows next to the reply, e.g. '作者' (author). Empty string when none."
},
"badge_type": {
"type": "number"
},
"created_at": {
"type": "number",
"description": "Unix seconds."
},
"like_count": {
"type": "number",
"description": "Source: digg_count."
},
"can_collect": {
"type": "boolean"
},
"reply_count": {
"type": "number",
"description": "Total replies to this specific reply, when the endpoint reports it (source: comment_reply_total). Absent on every reply in `invalid-comment-id.json`."
},
"author_liked": {
"type": "boolean",
"description": "Whether the video's own author liked this reply (source: is_author_digged)."
},
"nesting_level": {
"type": "number",
"description": "Source: level."
},
"root_comment_id": {
"type": "string",
"description": "The thread's top-level comment id. Present on every reply in `example-video-replies.json`, absent on every reply in `invalid-comment-id.json` -- the endpoint does not always return it, not required."
},
"commenter_region": {
"type": "string",
"description": "Coarse IP-derived region label Douyin itself displays next to the reply (e.g. a Chinese province name, or 'IP未知' when unresolved) -- source: ip_label."
},
"reply_to_user_id": {
"type": "string",
"description": "Public user id of the user this reply is addressed to (source: reply_to_userid)."
},
"parent_comment_id": {
"type": "string",
"description": "The comment id this reply was posted under (source: reply_id)."
},
"reply_to_nickname": {
"type": "string",
"description": "Display name of the user this reply is addressed to. Present only on replies nested under another reply, not on a reply addressed directly to the root comment (source: reply_to_username)."
},
"reply_to_comment_id": {
"type": "string",
"description": "The specific reply this one is addressed to within the thread, when nested more than one level deep (source: reply_to_reply_id). '0' on a reply addressed directly to the root comment."
},
"reply_to_user_sec_id": {
"type": "string",
"description": "Douyin's opaque secure user id for the user this reply is addressed to."
}
},
"additionalProperties": false
},
"description": "The replies to the given comment. Never observed empty in either fixture."
},
"has_more": {
"type": "number",
"description": "Observed as 0 or 1 (not a boolean) on real calls -- truthy/falsy integer."
}
},
"description": "The reply-list record, as returned at routing.responseResultPath ($.output).",
"additionalProperties": false
}Pricing
Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.
Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.
| Charge | Rate |
|---|---|
Per call Flat, regardless of what comes back | $0.0020475 |
- Cost basis
- Not recorded
This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.
- Updated
- Sep 23, 2026
