Skip to main content
GET
List organization reports

Overview

Retrieve security reports for your organization. This endpoint returns all reports submitted for your organization, including details about reported assets, proposals, and their current status. The organization is automatically inferred from your API key.

Quick Start

Authentication

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

Example Request

Query Parameters

The legacy excludeAutomation boolean is deprecated and kept as a backward-compatible alias for reporterKind=human. Prefer reporterKind in new integrations.

Response

Success Response

Response Fields

Pagination

Use the cursor-based pagination to fetch all reports:

Filtering Examples

Filter by Date Range

Get reports from a specific time period:

Filter Only Rejected Reports

Get reports that have rejected proposals:

Combine Filters

Get rejected reports from a specific date range:

Filter by Reporter or Reviewer

Use reporterKind and reviewerKind to separate reports submitted or approved by human users from those handled by ChainPatrol Automation. This is useful for measuring automation performance or exporting only human-driven activity. Get only reports submitted by human reporters:
Get reports that were approved by ChainPatrol Automation:

Filter to Reports Waiting on Customer Approval

Use needsCustomerReview=true to return only reports the organization still has to action — the same queue the organization’s Review page shows. This is useful for building a “reports needing your review” dashboard or exporting the current approval backlog. Pass false to return only reports that are not waiting on the organization. A report counts when it has at least one pending proposal that is the organization’s to action:
  • A proposal that ChainPatrol staff escalated to the organization and the organization has not answered yet, or
  • Any pending proposal on a report the organization submitted itself.
Obligatory Organization Admin Approval does not widen this filter — an untriaged proposal is still ChainPatrol’s to review, and only reaches the organization once staff escalate it.

Error Responses

401 Unauthorized

Returned when the API key is missing, invalid, or doesn’t have organization access:

400 Bad Request

Returned when query parameters are invalid:

Use Cases

Monitor Recent Reports

Track Rejected Reports

Export Reports to CSV

Best Practices

Pagination

  • Use limit=100 for bulk data retrieval to minimize API calls
  • Always check for the cursor field to determine if more results exist
  • Store the cursor if you need to resume pagination later

Date Filtering

  • Always use ISO 8601 format for dates: YYYY-MM-DDTHH:mm:ss.sssZ
  • Include timezone information (typically UTC with Z suffix)
  • Use both startDate and endDate for precise time ranges

Performance

  • Cache report data when appropriate to reduce API calls
  • Use date filters to limit the result set size
  • Consider polling intervals if monitoring for new reports (5-10 minutes recommended)

Notes

  • Organization is automatically determined from your API key
  • All timestamps are in ISO 8601 format with UTC timezone
  • The onlyRejected filter shows reports with at least one rejected proposal, but the report may contain other approved proposals
  • Reports are ordered by creation date (newest first)
  • The cursor is opaque and should not be parsed or modified

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

limit
number
required
Required range: 1 <= x <= 20
cursor
number | null
status
enum<string>
Available options:
TODO,
IN_PROGRESS,
CLOSED
searchQuery
string
reporterQuery
string
reporterKind
enum<string>
Available options:
human,
automation
reviewerKind
enum<string>
Available options:
human,
automation
reviewedByUserId
number | null
startDate
string
endDate
string
updatedAtStartDate
string
updatedAtEndDate
string
registrars
string[]
hasMxRecords
boolean
slug
string
excludeAutomation
boolean
default:false
onlyRejected
boolean
default:false
onlyFavorited
boolean
default:false
reportedByCustomer
boolean
needsCustomerReview
boolean
reviewStatuses
enum<string>[]
Available options:
APPROVE,
REJECT,
SKIP,
ESCALATE
assetTypes
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
brandIds
number[]
countryCodes
string[]
Required string length: 2
sources
enum<string>[]
Available options:
APP,
API,
CANARY_TOKEN,
AUTO_DETECTION,
ASSET_MANAGEMENT

Response

Successful response

reports
object[]
required
nextCursor
number | null
required
totalCount
number
required