Skip to main content
POST
List assets

Quick Start

Authentication

Include your API key in the X-API-KEY header:

Asset Types

type is optional. Omit it to return assets of every asset type on a single pagination cursor:
This is the cheapest way to mirror the full blocklist — one paginated sweep instead of one sweep per member of the AssetType enum. Each returned asset still carries its own type, so you can bucket the results client-side. Supply type to narrow the sweep to a single asset type, exactly as before:
Omit the field entirely to get the full sweep. An explicit "type": null is rejected with a 400, so a client that builds the body from a struct should leave the key out rather than setting it to null.
A single response returns at most 1000 assets, whatever per_page asks for. Larger values are accepted but clamped, so always keep following next_page until it comes back null rather than assuming one page holds everything. Responses are also capped at 4MB.

Sync Strategy and Removals

When using time-based filtering (e.g., fetching only the last 5 minutes of blocklist data), you may miss asset removals from the blocklist. To ensure complete data consistency, use one of these approaches:
  1. Monitor allowlist and unknown list for removals: Check both the allowlist and unknown list endpoints periodically to detect assets that have been removed from the blocklist.
  2. Periodic full sync: Perform a complete sync of the full blocklist at regular intervals (e.g., hourly or daily) to catch any missed changes.
  3. Hybrid approach: Use time-based filtering for frequent updates combined with periodic full syncs for comprehensive coverage.

Why This Matters

Asset status changes can move assets between different lists (blocklist, allowlist, unknown). Time-based queries on a single endpoint may not capture these transitions, potentially leaving your local cache with outdated information about blocked assets that should no longer be blocked.

Soft-Deleted Assets

Assets that ChainPatrol has soft-deleted are excluded from every response, so a mirror built from this endpoint matches ChainPatrol’s own blocklist snapshot. This is a change in behaviour: the endpoint previously returned soft-deleted assets. A mirror built before the change may be holding rows that will never appear again — a full re-sync clears them.

Pagination

To use pagination, include the per_page and next_page parameters in your request:
  • per_page <number>: Items per page. Accepted up to 10000, but a response returns at most 1000 — always follow next_page.
  • next_page <string>: Cursor for the next page of results

Example implementation for pagination:

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.

Body

application/json

List asset request body

With no startDate, this returns every matching asset regardless of age — there is no implicit one-day window. Pass startDate to get a delta instead.

You can also choose a startDate and endDate for the range of asset updates, most timestamp formats should work, we use Luxon for parsing the dates.

type
enum<string>

Asset type to retrieve. Omit the field entirely to retrieve assets of every type in a single paginated sweep; an explicit null is rejected.

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
status
enum<string>
default:BLOCKED

Status of the assets to retrieve

Available options:
UNKNOWN,
ALLOWED,
BLOCKED
startDate
string

The start date to list assets from. This should be in the format YYYY-MM-DD and is inclusive.

endDate
string

The end date to list assets from. This should be in the format YYYY-MM-DD and is inclusive.

per_page
integer
default:100

The number of assets to return per page

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

Cursor for fetching the next page of results

Response

Successful response

Successful operation

assets
object[]
required
next_page
string | null

Cursor for fetching the next page of results