Skip to main content
GET
List organization threats

Overview

List every asset reported for your organization, by your team or by ChainPatrol, with where each one stands: still under investigation, escalated to you, blocked or allowed, and how far its takedown has got. Use it to keep a threat-intel platform, SIEM or ticketing system in step with ChainPatrol. Page through it once for a backfill, then poll with updatedSince and upsert each row on id. To list only confirmed threats blocked in a date range, use /threats/list. To list unconfirmed detections, use /detection/list.

Quick Start

Authentication

Include your API key in the X-API-KEY header. Organization API keys resolve the organization from the key, so slug is optional for them.

Example Request

Query Parameters

Lifecycle states

state sums up each asset’s reports and the decision on it: A decision on the asset wins over open reports: once it is blocked or allowed, state stays there even if someone reports it again. An asset that was escalated, decided and then reported again goes back to investigating. The timestamps on each threat:
  • firstReportedAt: the first report for your organization.
  • escalatedAt: the first time the asset was escalated to your organization, or null if it never was.
  • blockedAt: when the asset was blocked, or null.
  • takedown: null until a takedown is opened. submittedAt is the first time it was filed with a provider, and completedAt the first time it was completed. If the site comes back, the takedown reopens: status goes back to IN_PROGRESS while completedAt keeps the first completion. Watch status to catch re-emergence.
  • updatedAt: the latest change to the asset, its reports or its takedown. This is the value updatedSince compares against.

Polling for changes

  1. Backfill. Call without updatedSince and follow next_page until it is null. Note the time you started.
  2. Poll. Send updatedSince set a few minutes before the start of your last successful sync, and follow next_page until it is null, keeping the same updatedSince on every page. Upsert each threat on id.
  3. Advance. Use the start time of this sync as the watermark for the next one.
Overlap your windows by a few minutes. A change written while a request is running can otherwise fall between two polls. The overlap re-sends a few threats you already have, which an upsert absorbs.
Pages are ordered by asset id, ascending, and the cursor is the last id returned, so assets reported mid-sync land on later pages instead of shifting earlier ones. A page can hold fewer than per_page threats while next_page is still set; keep going until next_page is null.

Authorizations

X-API-KEY
string
header
required

Your API key. This is required by most endpoints to access our API programatically. Reach out to us at support@chainpatrol.io to get an API key for your use.

Query Parameters

slug
string
updatedSince
string
assetType
enum<string>
Available options:
URL,
PAGE,
ADDRESS,
DISCORD,
LINKEDIN,
TWITTER,
FACEBOOK,
YOUTUBE,
REDDIT,
TELEGRAM,
GOOGLE_APP_STORE,
APPLE_APP_STORE,
AMAZON_APP_STORE,
MICROSOFT_APP_STORE,
TIKTOK,
INSTAGRAM,
THREADS,
MEDIUM,
CHROME_WEB_STORE,
MOZILLA_ADDONS,
OPERA_ADDONS,
EMAIL,
PATREON,
OPENSEA,
FARCASTER,
IPFS,
GOOGLE_FORM,
WHATSAPP,
DISCORD_USER,
QUORA,
GITHUB,
TEACHABLE,
SUBSTACK,
DEBANK,
TAWK_TO,
JOTFORM,
PRIMAL,
BLUESKY,
SNAPCHAT,
DESO,
PINTEREST,
FLICKR,
GALXE,
VELOG,
NPM,
PYPI,
HEX,
DOCKER_HUB,
VOCAL_MEDIA,
TECKFINE,
TENDERLY,
HACKMD,
ETSY,
ZAZZLE,
BASENAME,
BILIBILI_TV,
VIMEO,
DAILYMOTION,
PHONE_NUMBER,
SLACK,
CALENDLY,
NGROK,
RARIBLE,
RUST_PACKAGE,
FLATHUB,
VIDLII,
VEVIOZ,
ISSUU,
SOUNDCLOUD,
ZAPPER,
REDNOTE,
SAMSUNG_APP_STORE,
HUAWEI_APP_STORE,
XIAOMI_APP_STORE,
TENCENT_APP_STORE,
OPPO_APP_STORE,
VIVO_APP_STORE,
F_DROID,
GOOGLE_AD,
BING_AD,
TWITCH,
BEHANCE,
ZORA,
META_AD,
SIGNAL,
DEVIANTART,
BANDCAMP,
ARCHIVE_ORG,
FIVE_HUNDRED_PX,
LUMA,
SMARTMONEYMATCH,
APK_GOLD,
GLASSDOOR,
PUMP_FUN,
TUMBLR,
MASTODON
per_page
integer
default:100

The number of threats to return per page (max 1000)

Required range: 1 <= x <= 1000
next_page
string | null

Cursor for fetching the next page of results

Response

Successful response

Successful operation

threats
object[]
required
next_page
string | null

Cursor for fetching the next page of results, or null on the last page. Drain it to null before advancing your updatedSince watermark — see updatedAt.