Screen a person's public social profiles for adverse posts, with every flag citing its post, for human review.
Reads the recent public posts of a person's own profiles (one per platform: linkedin, twitter, facebook, instagram, threads, tiktok, each a handle or a profile URL) and asks, post by post, whether the author engages in, admits, threatens or promotes each category you screen for: fraud_or_financial_crime, violence_or_threats, hate_or_harassment, drugs, sanctions_or_terror_links, sexual_misconduct, reputational_other (default: all). A separate check keeps posts that report, quote, warn about or condemn what someone else did (news, a scam warning) from counting as the author's conduct, and a severity level (1 minor, 2 serious, 3 severe) is given for every flagged post. Every entry of flags cites its post (platform, post_id, url, published_at, an excerpt) with the probability for each requested category; category_counts counts flagged and uncertain posts per category; requires_review is true when any post is flagged. With name (and optionally employer, city), each profile is first checked against the named person: only profiles judged to be the person's own are screened, the rest are listed in profiles with the identity verdict and are not screened (screen_unconfirmed=true screens possible matches too, never a profile judged to be someone else). These are automated labels for a human reviewer, not a decision: there is no summary, verdict or score about the person, and political opinion, religion, health, sexuality and other personal characteristics are never screened. Public posts only; private accounts return nothing. screen_complete is false when a profile or a post could not be screened, and _warnings says why.
Request
- Base URL: https://www.socialcrawl.dev/v1
- URL: https://www.socialcrawl.dev/v1/prism/adverse-screen
- Auth: API key in header x-api-key
Query parameters
LinkedIn profile URL (linkedin.com/in/...) or the profile slug. (one of: linkedin, twitter, facebook, instagram, threads, tiktok; at least one required)
X (Twitter) handle or profile URL. (one of: linkedin, twitter, facebook, instagram, threads, tiktok; at least one required)
Facebook profile or page URL, or its username. (one of: linkedin, twitter, facebook, instagram, threads, tiktok; at least one required)
Instagram handle or profile URL. (one of: linkedin, twitter, facebook, instagram, threads, tiktok; at least one required)
Threads handle or profile URL. (one of: linkedin, twitter, facebook, instagram, threads, tiktok; at least one required)
TikTok handle or profile URL. (one of: linkedin, twitter, facebook, instagram, threads, tiktok; at least one required)
The person's full name. When set, each profile is checked against it before screening.
Optional current employer, used only for the identity check.
Optional city or country, used only for the identity check.
Comma-separated subset of fraud_or_financial_crime, violence_or_threats, hate_or_harassment, drugs, sanctions_or_terror_links, sexual_misconduct, reputational_other. Default: all. An unknown member is a 400.
Only screen posts published on or after this date (YYYY-MM-DD).
Most recent posts screened per profile, 1 to 100 (default 50). One timeline page is read per profile.
Set true to also screen profiles whose identity is possible or could not be judged. Profiles judged to be someone else are never screened.
Headers
Send no-cache to bypass the response cache and force a live fetch. Billed at the normal endpoint cost; the fresh result is written back to cache for the next caller. Only the no-cache directive triggers this. See the Response Schema guide for details.
Optional UUID that makes the request safely retriable. The key is reserved atomically per account before billing. A concurrent retry receives 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After of 1 second while the original is young, growing to a quarter of the time it has been running (at most 30); a crashed reservation expires after 5 minutes. A replay keeps the cached payload immutable except for billing metadata: credits_used becomes 0, idempotent_replay becomes true, and credits_remaining is refreshed to the current balance. A known current balance appears in both the body and X-Credits-Remaining header; no balance row resolves to 0. On a transient lookup failure, body credits_remaining is null and X-Credits-Remaining is omitted. Completed outcomes expire after 24 hours. If the claim store is unavailable, the request fails closed before billing. GET endpoints do not combine idempotent replay with Server-Sent Events: use Accept: application/json when sending this header. The unsupported key-plus-SSE combination is rejected before billing.
Response
Successful response
Example response
{
"success": true,
"platform": "prism",
"endpoint": "/v1/prism/adverse-screen",
"credits_used": 1,
"credits_remaining": 4999,
"request_id": "req-abc123",
"idempotent_replay": true,
"meta": {
"hint": {
"code": "search_multi",
"message": "You searched \"matcha\" on 3 platforms one call at a time; /v1/search/multi returns each platform's own search rows in one call at the same price per platform, and a platform with no rows is not charged.",
"method": "GET",
"path": "/v1/search/multi?query=matcha&platforms=instagram,tiktok,youtube"
}
}
}Changes
No recorded changes to this operation across all 1 revision of this API.