Run a valid tiktok-data.get_audience_metrics call through the same SDK surface used by every toolkit.

Minimal tool call

ts
import { Eyeball } from "@eyeball/sdk";

const eyeball = new Eyeball({
  apiKey: process.env.EYEBALL_API_KEY!,
  baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});

const output = await eyeball.tools.run(
  "tiktok-data.get_audience_metrics",
  {
  "handle": "example_handle"
},
  { userId: "demo_user" },
);
console.log(output);

The model receives canonical output. Your application retains the execution envelope through tools.execute or the execution APIs when it needs IDs, status, versions, and latency.

Supported canonical tools

ToolPurposeExecutionEffectVersion
tiktok-data.get_audience_metricsRetrieve public or explicitly supported audience and engagement metrics.sync or asyncread1.0.0
tiktok-data.get_commentsList public comments and supported replies for a content item.sync or asyncread1.0.0
tiktok-data.get_live_contentRetrieve current or scheduled public live-content metadata.sync or asyncread1.0.0
tiktok-data.get_postRetrieve one public post, video, clip, short, or media item.sync or asyncread1.0.0
tiktok-data.get_postsList public posts or media published by a creator profile or community.sync or asyncread1.0.0
tiktok-data.get_profileRetrieve a public creator or user profile and visible metrics.sync or asyncread1.0.0
tiktok-data.get_transcriptRetrieve or derive the transcript for a supported public video or audio post.sync or asyncread1.0.0
tiktok-data.get_trending_contentRetrieve a documented public trending feed, hashtag, reel, or short surface.sync or asyncread1.0.0
tiktok-data.search_creatorsSearch or discover public creators where the platform supports it.sync or asyncread1.0.0
tiktok-data.search_postsSearch public content using a platform-supported query.sync or asyncread1.0.0

Only the rows above are implemented. A capability tool omitted by this manifest returns not_supported; eyeball never synthesizes provider parity.

Supported canonical triggers

This manifest does not implement a canonical trigger.

Input and output schemas

tiktok-data.get_audience_metrics

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_audience_metrics:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public profile selector.",
  "additionalProperties": false,
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public creator or channel handle.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_audience_metrics:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public audience and engagement metrics.",
  "additionalProperties": false,
  "required": [
    "metrics"
  ],
  "properties": {
    "metrics": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "platform",
        "handle",
        "followers",
        "averageViews",
        "engagementRate",
        "audienceCountries"
      ],
      "properties": {
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "handle": {
          "type": "string",
          "description": "Public creator or channel handle.",
          "minLength": 1
        },
        "followers": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible follower count."
        },
        "averageViews": {
          "type": "number",
          "minimum": 0,
          "description": "Provider-supported average view count."
        },
        "engagementRate": {
          "type": "number",
          "minimum": 0,
          "description": "Provider-supported engagement ratio."
        },
        "audienceCountries": {
          "type": "array",
          "description": "Country shares explicitly supported by the provider.",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "country",
              "percentage"
            ],
            "properties": {
              "country": {
                "type": "string",
                "description": "Country code.",
                "minLength": 1
              },
              "percentage": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Audience percentage."
              }
            }
          }
        }
      }
    }
  }
}
tiktok-data.get_comments

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_comments:1.0.0:tiktok-data",
  "type": "object",
  "description": "Provider content identifier or public URL.",
  "additionalProperties": false,
  "properties": {
    "postId": {
      "type": "string",
      "description": "Provider identifier of the content item.",
      "minLength": 1
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public content URL."
    }
  },
  "anyOf": [
    {
      "required": [
        "postId"
      ],
      "properties": {
        "postId": {
          "type": "string",
          "description": "Provider identifier of the content item.",
          "minLength": 1
        }
      }
    },
    {
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        }
      }
    }
  ]
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_comments:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public comments for the selected content item.",
  "additionalProperties": false,
  "required": [
    "comments"
  ],
  "properties": {
    "comments": {
      "type": "array",
      "description": "Public comments.",
      "items": {
        "type": "object",
        "description": "A normalized public content comment.",
        "additionalProperties": false,
        "required": [
          "commentId",
          "platform",
          "postId",
          "authorHandle",
          "text",
          "likes",
          "createdAt"
        ],
        "properties": {
          "commentId": {
            "type": "string",
            "description": "Provider identifier of the comment.",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "description": "Social platform represented by the result.",
            "minLength": 1
          },
          "postId": {
            "type": "string",
            "description": "Provider identifier of the parent content item.",
            "minLength": 1
          },
          "authorHandle": {
            "type": "string",
            "description": "Public handle of the comment author.",
            "minLength": 1
          },
          "text": {
            "type": "string",
            "description": "Visible comment text.",
            "minLength": 1
          },
          "likes": {
            "type": "integer",
            "minimum": 0,
            "description": "Visible like count."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Comment publication timestamp."
          }
        }
      }
    },
    "nextPageToken": {
      "type": "string",
      "description": "Opaque token to request the next page of comments; absent when the result is complete.",
      "minLength": 1
    }
  }
}
tiktok-data.get_live_content

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_live_content:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public live-profile selector.",
  "additionalProperties": false,
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public creator or channel handle.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_live_content:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Current or scheduled live-content metadata.",
  "additionalProperties": false,
  "required": [
    "live"
  ],
  "properties": {
    "live": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "platform",
        "handle",
        "isLive",
        "title",
        "viewerCount"
      ],
      "properties": {
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "handle": {
          "type": "string",
          "description": "Public creator or channel handle.",
          "minLength": 1
        },
        "isLive": {
          "type": "boolean",
          "description": "Whether content is live now."
        },
        "title": {
          "type": "string",
          "description": "Live-content title.",
          "minLength": 1
        },
        "scheduledStart": {
          "type": "string",
          "format": "date-time",
          "description": "Scheduled start timestamp."
        },
        "viewerCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible concurrent viewer count."
        }
      }
    }
  }
}
tiktok-data.get_post

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_post:1.0.0:tiktok-data",
  "type": "object",
  "description": "Provider content identifier or public URL.",
  "additionalProperties": false,
  "properties": {
    "postId": {
      "type": "string",
      "description": "Provider identifier of the content item.",
      "minLength": 1
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public content URL."
    }
  },
  "anyOf": [
    {
      "required": [
        "postId"
      ],
      "properties": {
        "postId": {
          "type": "string",
          "description": "Provider identifier of the content item.",
          "minLength": 1
        }
      }
    },
    {
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        }
      }
    }
  ]
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_post:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Requested public content item.",
  "additionalProperties": false,
  "required": [
    "post"
  ],
  "properties": {
    "post": {
      "type": "object",
      "description": "A normalized public post, video, short, clip, or media item.",
      "additionalProperties": false,
      "required": [
        "postId",
        "platform",
        "authorHandle",
        "url",
        "text",
        "mediaType",
        "createdAt",
        "engagement",
        "hashtags"
      ],
      "properties": {
        "postId": {
          "type": "string",
          "description": "Provider identifier of the content item.",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "authorHandle": {
          "type": "string",
          "description": "Public handle of the content author.",
          "minLength": 1
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        },
        "text": {
          "type": "string",
          "description": "Visible caption or text content."
        },
        "mediaType": {
          "type": "string",
          "enum": [
            "image",
            "video",
            "text",
            "clip"
          ],
          "description": "Normalized public content kind."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Content publication timestamp."
        },
        "durationSeconds": {
          "type": "number",
          "minimum": 0,
          "description": "Media duration in seconds when available."
        },
        "engagement": {
          "type": "object",
          "description": "Public engagement counters for one content item.",
          "additionalProperties": false,
          "required": [
            "likes",
            "comments",
            "shares",
            "views"
          ],
          "properties": {
            "likes": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible like count."
            },
            "comments": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible comment count."
            },
            "shares": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible share count."
            },
            "views": {
              "type": "integer",
              "minimum": 0,
              "description": "Visible view count."
            }
          }
        },
        "hashtags": {
          "type": "array",
          "description": "Hashtags attached to the content.",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}
tiktok-data.get_posts

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_posts:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public profile and pagination selectors.",
  "additionalProperties": false,
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public profile or community handle.",
      "minLength": 1
    },
    "pageSize": {
      "type": "integer",
      "description": "Maximum number of posts to return in one page.",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    },
    "pageToken": {
      "type": "string",
      "description": "Opaque continuation token from a previous post page.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_posts:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "One page of public content.",
  "additionalProperties": false,
  "required": [
    "posts"
  ],
  "properties": {
    "posts": {
      "type": "array",
      "description": "Public content items.",
      "items": {
        "type": "object",
        "description": "A normalized public post, video, short, clip, or media item.",
        "additionalProperties": false,
        "required": [
          "postId",
          "platform",
          "authorHandle",
          "url",
          "text",
          "mediaType",
          "createdAt",
          "engagement",
          "hashtags"
        ],
        "properties": {
          "postId": {
            "type": "string",
            "description": "Provider identifier of the content item.",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "description": "Social platform represented by the result.",
            "minLength": 1
          },
          "authorHandle": {
            "type": "string",
            "description": "Public handle of the content author.",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Public content URL."
          },
          "text": {
            "type": "string",
            "description": "Visible caption or text content."
          },
          "mediaType": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "text",
              "clip"
            ],
            "description": "Normalized public content kind."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Content publication timestamp."
          },
          "durationSeconds": {
            "type": "number",
            "minimum": 0,
            "description": "Media duration in seconds when available."
          },
          "engagement": {
            "type": "object",
            "description": "Public engagement counters for one content item.",
            "additionalProperties": false,
            "required": [
              "likes",
              "comments",
              "shares",
              "views"
            ],
            "properties": {
              "likes": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible like count."
              },
              "comments": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible comment count."
              },
              "shares": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible share count."
              },
              "views": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible view count."
              }
            }
          },
          "hashtags": {
            "type": "array",
            "description": "Hashtags attached to the content.",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "nextPageToken": {
      "type": "string",
      "description": "Opaque token to request the next page of posts; absent when the result is complete.",
      "minLength": 1
    }
  }
}
tiktok-data.get_profile

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_profile:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public profile selector.",
  "additionalProperties": false,
  "required": [
    "handle"
  ],
  "properties": {
    "handle": {
      "type": "string",
      "description": "Public profile handle or username.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_profile:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Requested public profile.",
  "additionalProperties": false,
  "required": [
    "profile"
  ],
  "properties": {
    "profile": {
      "type": "object",
      "description": "A normalized public creator, user, channel, or community profile.",
      "additionalProperties": false,
      "required": [
        "profileId",
        "platform",
        "handle",
        "displayName",
        "verified",
        "followers",
        "following",
        "totalPosts"
      ],
      "properties": {
        "profileId": {
          "type": "string",
          "description": "Provider identifier of the public profile.",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "handle": {
          "type": "string",
          "description": "Platform handle, username, channel name, or community name.",
          "minLength": 1
        },
        "displayName": {
          "type": "string",
          "description": "Public display name.",
          "minLength": 1
        },
        "bio": {
          "type": "string",
          "description": "Public biography or description."
        },
        "verified": {
          "type": "boolean",
          "description": "Whether the profile is verified."
        },
        "followers": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible follower or subscriber count."
        },
        "following": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible following count."
        },
        "totalPosts": {
          "type": "integer",
          "minimum": 0,
          "description": "Visible total public post count."
        },
        "profileUrl": {
          "type": "string",
          "format": "uri",
          "description": "Public profile URL."
        },
        "avatarUrl": {
          "type": "string",
          "format": "uri",
          "description": "Public avatar URL."
        },
        "channelId": {
          "type": "string",
          "description": "Platform channel identifier when distinct from the profile ID."
        }
      }
    }
  }
}
tiktok-data.get_transcript

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_transcript:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public content URL to transcribe.",
  "additionalProperties": false,
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public content URL."
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_transcript:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Transcript for the selected public content.",
  "additionalProperties": false,
  "required": [
    "transcript"
  ],
  "properties": {
    "transcript": {
      "type": "object",
      "description": "A normalized transcript for public video or audio content.",
      "additionalProperties": false,
      "required": [
        "transcriptId",
        "platform",
        "postId",
        "url",
        "language",
        "text",
        "segments"
      ],
      "properties": {
        "transcriptId": {
          "type": "string",
          "description": "Provider identifier of the transcript.",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "description": "Social platform represented by the result.",
          "minLength": 1
        },
        "postId": {
          "type": "string",
          "description": "Provider identifier of the transcribed content item.",
          "minLength": 1
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Public content URL."
        },
        "language": {
          "type": "string",
          "description": "Transcript language code.",
          "minLength": 1
        },
        "text": {
          "type": "string",
          "description": "Complete transcript text.",
          "minLength": 1
        },
        "segments": {
          "type": "array",
          "description": "Timestamped transcript segments.",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "startSeconds",
              "endSeconds",
              "text"
            ],
            "properties": {
              "startSeconds": {
                "type": "number",
                "minimum": 0,
                "description": "Segment start in seconds."
              },
              "endSeconds": {
                "type": "number",
                "minimum": 0,
                "description": "Segment end in seconds."
              },
              "text": {
                "type": "string",
                "description": "Segment text.",
                "minLength": 1
              }
            }
          }
        }
      }
    }
  }
}
tiktok-data.get_trending_content

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_trending_content:1.0.0:tiktok-data",
  "type": "object",
  "description": "Optional result limit.",
  "additionalProperties": false,
  "properties": {
    "pageSize": {
      "type": "integer",
      "description": "Maximum number of trending posts to return in one page.",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:get_trending_content:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Documented public trending content.",
  "additionalProperties": false,
  "required": [
    "posts"
  ],
  "properties": {
    "posts": {
      "type": "array",
      "description": "Trending content items.",
      "items": {
        "type": "object",
        "description": "A normalized public post, video, short, clip, or media item.",
        "additionalProperties": false,
        "required": [
          "postId",
          "platform",
          "authorHandle",
          "url",
          "text",
          "mediaType",
          "createdAt",
          "engagement",
          "hashtags"
        ],
        "properties": {
          "postId": {
            "type": "string",
            "description": "Provider identifier of the content item.",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "description": "Social platform represented by the result.",
            "minLength": 1
          },
          "authorHandle": {
            "type": "string",
            "description": "Public handle of the content author.",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Public content URL."
          },
          "text": {
            "type": "string",
            "description": "Visible caption or text content."
          },
          "mediaType": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "text",
              "clip"
            ],
            "description": "Normalized public content kind."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Content publication timestamp."
          },
          "durationSeconds": {
            "type": "number",
            "minimum": 0,
            "description": "Media duration in seconds when available."
          },
          "engagement": {
            "type": "object",
            "description": "Public engagement counters for one content item.",
            "additionalProperties": false,
            "required": [
              "likes",
              "comments",
              "shares",
              "views"
            ],
            "properties": {
              "likes": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible like count."
              },
              "comments": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible comment count."
              },
              "shares": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible share count."
              },
              "views": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible view count."
              }
            }
          },
          "hashtags": {
            "type": "array",
            "description": "Hashtags attached to the content.",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}
tiktok-data.search_creators

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:search_creators:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public creator search query.",
  "additionalProperties": false,
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Platform-supported creator query.",
      "minLength": 1
    },
    "pageSize": {
      "type": "integer",
      "description": "Maximum number of matching creators to return in one page.",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    },
    "pageToken": {
      "type": "string",
      "description": "Opaque continuation token from a previous matching creator page.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:search_creators:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public creators matching the query.",
  "additionalProperties": false,
  "required": [
    "profiles"
  ],
  "properties": {
    "profiles": {
      "type": "array",
      "description": "Matching public profiles.",
      "items": {
        "type": "object",
        "description": "A normalized public creator, user, channel, or community profile.",
        "additionalProperties": false,
        "required": [
          "profileId",
          "platform",
          "handle",
          "displayName",
          "verified",
          "followers",
          "following",
          "totalPosts"
        ],
        "properties": {
          "profileId": {
            "type": "string",
            "description": "Provider identifier of the public profile.",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "description": "Social platform represented by the result.",
            "minLength": 1
          },
          "handle": {
            "type": "string",
            "description": "Platform handle, username, channel name, or community name.",
            "minLength": 1
          },
          "displayName": {
            "type": "string",
            "description": "Public display name.",
            "minLength": 1
          },
          "bio": {
            "type": "string",
            "description": "Public biography or description."
          },
          "verified": {
            "type": "boolean",
            "description": "Whether the profile is verified."
          },
          "followers": {
            "type": "integer",
            "minimum": 0,
            "description": "Visible follower or subscriber count."
          },
          "following": {
            "type": "integer",
            "minimum": 0,
            "description": "Visible following count."
          },
          "totalPosts": {
            "type": "integer",
            "minimum": 0,
            "description": "Visible total public post count."
          },
          "profileUrl": {
            "type": "string",
            "format": "uri",
            "description": "Public profile URL."
          },
          "avatarUrl": {
            "type": "string",
            "format": "uri",
            "description": "Public avatar URL."
          },
          "channelId": {
            "type": "string",
            "description": "Platform channel identifier when distinct from the profile ID."
          }
        }
      }
    },
    "nextPageToken": {
      "type": "string",
      "description": "Opaque token to request the next page of matching creators; absent when the result is complete.",
      "minLength": 1
    }
  }
}
tiktok-data.search_posts

Input schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:search_posts:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public content search query.",
  "additionalProperties": false,
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Platform-supported public content query.",
      "minLength": 1
    },
    "pageSize": {
      "type": "integer",
      "description": "Maximum number of matching posts to return in one page.",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    },
    "pageToken": {
      "type": "string",
      "description": "Opaque continuation token from a previous matching post page.",
      "minLength": 1
    }
  }
}

Output schema

JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:eyeball:social_media_data:search_posts:output:1.0.0:tiktok-data",
  "type": "object",
  "description": "Public content matching the query.",
  "additionalProperties": false,
  "required": [
    "posts"
  ],
  "properties": {
    "posts": {
      "type": "array",
      "description": "Matching content items.",
      "items": {
        "type": "object",
        "description": "A normalized public post, video, short, clip, or media item.",
        "additionalProperties": false,
        "required": [
          "postId",
          "platform",
          "authorHandle",
          "url",
          "text",
          "mediaType",
          "createdAt",
          "engagement",
          "hashtags"
        ],
        "properties": {
          "postId": {
            "type": "string",
            "description": "Provider identifier of the content item.",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "description": "Social platform represented by the result.",
            "minLength": 1
          },
          "authorHandle": {
            "type": "string",
            "description": "Public handle of the content author.",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Public content URL."
          },
          "text": {
            "type": "string",
            "description": "Visible caption or text content."
          },
          "mediaType": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "text",
              "clip"
            ],
            "description": "Normalized public content kind."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Content publication timestamp."
          },
          "durationSeconds": {
            "type": "number",
            "minimum": 0,
            "description": "Media duration in seconds when available."
          },
          "engagement": {
            "type": "object",
            "description": "Public engagement counters for one content item.",
            "additionalProperties": false,
            "required": [
              "likes",
              "comments",
              "shares",
              "views"
            ],
            "properties": {
              "likes": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible like count."
              },
              "comments": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible comment count."
              },
              "shares": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible share count."
              },
              "views": {
                "type": "integer",
                "minimum": 0,
                "description": "Visible view count."
              }
            }
          },
          "hashtags": {
            "type": "array",
            "description": "Hashtags attached to the content.",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "nextPageToken": {
      "type": "string",
      "description": "Opaque token to request the next page of matching posts; absent when the result is complete.",
      "minLength": 1
    }
  }
}

Authentication

PropertyValue
Auth classapi_key
Required scopesNone
Optional scopesNone
Credential fieldsapiKey

Credentials are resolved inside the executor by CredentialProvider. They never belong in tool input, x_provider, model context, logs, or execution output.

Provider-specific extensions

This manifest declares no provider-specific schema extensions. Use only canonical fields.

Provider differences may appear only under x_provider.tiktok-data and only when the schema above declares them.

Sync and async behavior

All tools are synchronous by nature, but callers may choose mode: "async" to queue them.

Mutations require a stable Idempotency-Key. The TypeScript SDK accepts it as idempotencyKey; it is never part of the JSON request body.

REST example

Bash
curl "$EYEBALL_EXECUTOR_URL/v1/execute" \
  -H "Authorization: Bearer $EYEBALL_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"tool":"tiktok-data.get_audience_metrics","userId":"demo_user","input":{"handle":"example_handle"},"mode":"sync"}'

Mock support

Point EYEBALL_EXECUTOR_URL at a mock-configured executor to run through the real catalog, validation, credential seam, adapter, normalized errors, and execution records with no TikTok via ScrapeCreators account. Mock selection changes the executor endpoint and trusted provider base-URL configuration, never the execute request.

Limitations

  • This page describes the manifest's explicit P0 subset, not every operation offered by the provider.
  • Provider account policy, consent UI, quota details, and current wire compatibility still require a real-provider certification pass.
  • Fields outside the canonical schemas and declared x_provider extensions are rejected.

Versions

ContractVersion
Runtime catalog1.1
Manifest catalog1.0
Manifest schema1.0
Sourcescrapecreators
TierP0
Capabilitiessocial_media_data

Next

Use Testing with mocks to exercise this toolkit before connecting a live provider account.