Skip to main content
POST
Create a report

Overview

The Report Create endpoint allows you to submit assets (URLs, domains, blockchain addresses, etc.) for review by the ChainPatrol team. This endpoint handles bulk submissions and provides detailed error reporting for validation failures.

Error Responses

422 Unprocessable Content

Returned when the request is syntactically valid but contains validation errors or duplicate assets. This is the most common error type and provides detailed per-asset error information.

Example: Duplicate Assets

Example: Multiple Validation Errors

500 Internal Server Error

Returned for unexpected server conditions, including database errors and other technical failures. The response uses safe, generic messages to avoid exposing internal system details.

Standard Error Response

Database Error Response

Best Practices

Asset Validation

URLs: Include the full protocol (https:// or http://) Domains: Use clean domain names without protocols or paths Blockchain Addresses: Use EIP-155 format for Ethereum addresses Avoid Duplicates: Each asset should appear only once per report

Error Handling

Always check the data.errors array in 422 responses for per-asset details Use the suggestion field in error responses to guide users Implement retry logic for 500 errors with exponential backoff

Performance Tips

Batch multiple assets in a single request when possible Validate asset formats client-side before submission Handle rate limiting appropriately

Troubleshooting

Common Issues

“INVALID_FORMAT” errors: Ensure URLs include protocol (https:// or http://) Verify domain names don’t include protocols or paths Check blockchain address format matches EIP-155 standard “DUPLICATE_ASSETS” errors: Remove duplicate entries from the assets array Check for case sensitivity differences Verify URL normalization (trailing slashes, etc.) “DOMAIN_NOT_ALLOWED” errors: The domain is on ChainPatrol’s ignore list Contact disputes@chainpatrol.io to dispute this decision Consider reporting specific URLs instead of the entire domain “ASSET_ALREADY_CORRECT” errors: The asset already has the status you’re requesting Check the current asset status before reporting No action needed - the asset is already in the desired state

Rate Limiting

The endpoint implements rate limiting to prevent abuse. If you encounter rate limit errors: Implement exponential backoff in your retry logic Consider batching requests to reduce API calls Contact support for higher rate limits if needed

Notes

Error payload shape is stable across 422 errors; check data.errors for per-asset details Provide the organizationSlug and valid assets to minimize 500s caused by invalid state All assets must be valid for the report to be created A report can only be created once per email address for a specific asset For technical issues or questions about error responses, contact support@chainpatrol.io and include the full error response in your request.

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
assets
object[]
required
organizationSlug
string

Organization slug used to identify the organization on ChainPatrol

discordGuildId
string

Discord Guild (Server) ID linked to the organization on ChainPatrol

telegramGroupId
string

Telegram Group ID linked to the organization on ChainPatrol

title
string

Title of the report

Minimum string length: 3
description
string

Description of the report. Supports markdown

contactInfo
string

Optional reporter contact info. If this value is a phone number, include a country code in E.164 format (e.g. +14155552671).

attachmentUrls
string<uri>[]

URLs of images to attach to the report

Link to the external submission (e.g. Telegram message link)

userAgent
string

User agent string from the reporter's browser

referrer
string

Referrer URL from the reporter's browser

rawAssetsInput
string
externalReporter
object

Response

Successful response

id
number
required

ID of the created report

createdAt
string
required

Date the report was created

organization
object | null
required

Organization the report was created for