Submit a creator handle for analysis, then retrieve brand-safety flags, traits,
scores, sentiment, and stats. Analyses run asynchronously and complete typically within minutes;
you are notified by a signed webhook and retrieve results by influencer_id.
https://api.katchdata.com/v1/verifiedAuthorization header. No Bearer./v1). Breaking changes ship a new version.Send the credential Katch supplies directly in the Authorization header:
Authorization: <partner credential>
Bearer prefix.Authorization only.401; an invalid credential returns 403.Analyses are asynchronous: you submit, Katch processes, and you collect results once they're ready. There is no job-status polling — drive completion off the webhook.
Start — or transparently reuse — an analysis for a handle on a platform.
| Field | Req | Description |
|---|---|---|
handle | yes | Account handle, with or without @. Max 255 chars. |
platform | yes | instagram, tiktok, youtube, facebook, linkedin, or x. |
influencer_name | opt | Display name. Defaults to the handle. Max 255. |
brand_name | opt | Brand context. Max 255. Required to retrieve sentiment for that brand. |
limit | opt | Post cap for the analysis. 1–5000, default 50. Controls how much history is analyzed (by post count, not date range). |
webhook_url | opt | Public HTTPS completion endpoint. Max 2048. Must resolve to a public IP; no embedded credentials. |
curl --request POST \ "https://api.katchdata.com/v1/verified/analyze" \ --header "Authorization: $KATCH_VERIFIED_API_KEY" \ --header "Content-Type: application/json" \ --data '{ "handle": "creator_handle", "platform": "instagram", "brand_name": "Acme", "limit": 500, "webhook_url": "https://partner.example.com/hook" }'
{
"influencer_id": 123,
"influencer_name": "Creator Name",
"parent_job_id": "123e4567-…-426614174000",
"status": "queued"
}
status becomes already_queued with the existing parent_job_id.
Persist influencer_id; it's how you retrieve results later.When an analysis completes, Katch sends a signed POST to your webhook_url.
Content-Type: application/json X-Katch-Event: analysis_finished X-Katch-Delivery: 123e4567-…-174000 X-Katch-Signature: sha256=<hex>
{
"type": "analysis_finished",
"parent_job_id": "…174000",
"influencer_id": 123,
"has_errors": false,
"count_total": 10,
"count_success": 10,
"count_fail": 0
}
2xx. Failed deliveries retry up to 10 times.parent_job_id.has_errors is true, fetch available results normally.Retrieve results for an influencer you previously submitted. The view selects the projection.
| Parameter | Notes |
|---|---|
influencer_id | ID returned by /analyze. Preferred. One identifier required. |
handle + platform | Used when influencer_id is omitted. platform defaults to instagram. |
view | flags · traits · score · sentiment · stats. Default flags. |
start_date / end_date | Inclusive YYYY-MM-DD publication date filters. |
limit / offset | Pagination for list views. limit 1–1000 (default 100); offset 0–1,000,000. |
{
"influencer_id": 123,
"view": "flags",
"count": 1,
"rows": [ … ]
}
{
"view": "score",
"analyzed_posts": 50,
"brand_safety": {"posts":4,"ratio":.08},
"sales": {"posts":12,"ratio":.24},
"video_quality": {"posts":39,"ratio":.78}
}
{
"view": "stats",
"total_posts": 50,
"earliest_post": "2025-01-15 09:30:00",
"latest_post": "2026-07-01 18:22:10",
"platform_count": 2,
"sponsored_posts": 7
}
ut_id is an integer;
published, earliest_post, and latest_post are datetimes
(YYYY-MM-DD HH:MM:SS); is_sponsored is a boolean.List every influencer analyzed under your credential — the starting point for GET /results
when you don't already hold an influencer_id. Credential-scoped: you see only your own.
| Parameter | Notes |
|---|---|
limit | Page size. Default 50. |
offset | Row offset for pagination. Default 0. |
curl \ --header "Authorization: $KATCH_VERIFIED_API_KEY" \ "https://api.katchdata.com/v1/verified/influencers?limit=50&offset=0"
{
"count": 2,
"rows": [
{ "influencer_id": 298,
"influencer_name": "Coco Lloyd",
"created_at": "2026-07-30 04:12:08",
"last_accessed_at": "2026-07-30 04:12:08" }
]
}
Authorization
header returns 401; an invalid credential returns 403.| Code | Meaning |
|---|---|
400 | Invalid request. |
401 | Missing credential. |
403 | Invalid credential or access not allowed. |
404 | Influencer not found for your credential. |
429 | Rate limited — wait for Retry-After. |
500 / 502 | Transient — retry with backoff. |
500/502 with exponential backoff using the same body. Honor Retry-After on 429. Error bodies use {"error": "…"}.| Environment | Status |
|---|---|
Productionapi.katchdata.com/v1/verified | Available |
| Sandbox | Planned |