Skip to main content
GET
List organization reports

Overview

Retrieve security reports for your organization. This endpoint returns full report records — proposals, assets, scans, reporter, and SLA metadata — with filtering and pagination, newest first. The organization is automatically inferred from your API key; if your credentials can reach more than one organization, pass an organization slug in the query to disambiguate.
Use this endpoint to browse or filter existing reports. To check whether a report already exists for a specific set of assets before filing a new one, use POST /reports/search, which looks reports up by asset content in a single batched call and returns a totalCount alongside the (capped) results.

Quick Start

Authentication

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

Example Request

Query Parameters

Response

Success Response

Response Fields

All new fields are additive — existing integrations continue to work unchanged.

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:

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