> ## Documentation Index
> Fetch the complete documentation index at: https://chainpatrol.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Asset Search

> Search for an asset by content or ID and get its status, associated reports, and takedown details

## Overview

The Asset Search endpoint returns a single result with four main parts:

* **asset** - The matched asset: its `id`, `content`, `type`, `status`, `watchStatus`, and timestamps (`createdAt`, `updatedAt`).
* **reports** - List of reports linked to the asset, each with `id`, `title`, `status`, and `createdAt`.
* **takedown** - Takedown metadata (`id`, `status`, timestamps) plus a **tasks** array. Each task has `type`, `status`, `retractionStatus`, the associated `takedownProvider` name, submission/retraction timestamps, and an optional `externalId` for the provider's tracking ID. [Learn more about takedown tasks](../general/concepts#takedown-tasks).
* **blockedBy** - List of platforms currently consuming (blocking) the asset. Each entry has a `consumer` slug (e.g. `metamask`, `google-safe-browsing`, `quad9`), the platform's display `name`, and a `consumedAt` timestamp indicating when the platform started blocking the asset.

## Quick Start

### Authentication

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

```bash theme={null}
X-API-KEY: <api-key>
```


## OpenAPI

````yaml POST /asset/search
openapi: 3.0.3
info:
  title: ChainPatrol External API - OpenAPI 3.0
  description: ChainPatrol External API documentation
  version: 2.0.0
servers:
  - url: https://app.chainpatrol.io/api/v2
security: []
tags:
  - name: asset
  - name: report
  - name: dark-web
externalDocs:
  url: https://chainpatrol.com/docs
paths:
  /asset/search:
    post:
      tags:
        - asset
      summary: Search asset
      description: >-
        Search for an asset by content or ID and get its status, associated
        reports, and takedown details
      operationId: assetSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  description: Asset content to search for (URL, domain, address, etc.)
                assetId:
                  type: integer
                  description: Asset ID to search for
                assetIds:
                  type: array
                  items:
                    type: integer
                  maxItems: 100
                  description: >-
                    Multiple asset IDs to search for in bulk, at most 100.
                    Capped at 10 when `includeEnrichments` is set.
                includeEnrichments:
                  type: boolean
                  default: false
                  description: >-
                    When true, the asset's 10 most recent scans also carry their
                    enrichments, including the `browser_capture` entry whose
                    `screenshotUrl` and `domUrl` point at the captured page. Off
                    by default, and bounded to 10 scans when on, because
                    enrichment payloads are large. Older scans are still listed,
                    just without the `enrichments` field.
              description: Asset search request body
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  asset:
                    type: object
                    nullable: true
                    properties:
                      id:
                        type: number
                      content:
                        type: string
                      type:
                        type: string
                        enum:
                          - 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
                      status:
                        type: string
                        enum:
                          - UNKNOWN
                          - ALLOWED
                          - BLOCKED
                      watchStatus:
                        type: string
                        enum:
                          - ENABLED
                          - DISABLED
                      livenessStatus:
                        type: string
                        nullable: true
                        enum:
                          - UNKNOWN
                          - ALIVE
                          - DEAD
                          - null
                      blockedAt:
                        type: string
                        nullable: true
                      createdAt:
                        type: string
                      updatedAt:
                        type: string
                    required:
                      - id
                      - content
                      - type
                      - status
                      - watchStatus
                      - livenessStatus
                      - blockedAt
                      - createdAt
                      - updatedAt
                  reports:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        title:
                          type: string
                          nullable: true
                        status:
                          type: string
                          enum:
                            - TODO
                            - IN_PROGRESS
                            - CLOSED
                        createdAt:
                          type: string
                        reportedByCustomer:
                          type: boolean
                          description: >-
                            Whether the report counts as the organization's own
                            submission. These are decided by ChainPatrol review
                            alone and never enter the organization's approval
                            queue.
                        proposals:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: number
                                description: Proposal ID
                              status:
                                type: string
                                enum:
                                  - UNKNOWN
                                  - ALLOWED
                                  - BLOCKED
                                description: >-
                                  The status the proposal asks to set on the
                                  asset
                              reviewStatus:
                                type: string
                                enum:
                                  - PENDING
                                  - APPROVED
                                  - REJECTED
                                description: >-
                                  Where the proposal stands: `PENDING`,
                                  `APPROVED` or `REJECTED`
                              createdAt:
                                type: string
                                description: When the proposal was created
                              reviews:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: number
                                      description: Review ID
                                    decision:
                                      type: string
                                      enum:
                                        - APPROVE
                                        - REJECT
                                        - SKIP
                                        - ESCALATE
                                      description: The decision this review made
                                    escalationTarget:
                                      type: string
                                      nullable: true
                                      enum:
                                        - CUSTOMER
                                        - TEAM
                                        - null
                                      description: >-
                                        Who an `ESCALATE` decision handed the
                                        proposal to: `CUSTOMER` (the
                                        organization's admins) or `TEAM`
                                        (ChainPatrol). `null` for other
                                        decisions.
                                    label:
                                      type: string
                                      nullable: true
                                      description: >-
                                        Review label, e.g. `Targeting Org
                                        Users`. `null` when none was set.
                                    reviewer:
                                      type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum:
                                            - STAFF
                                            - CUSTOMER
                                            - AUTOMATION
                                          description: >-
                                            Who made the decision. `STAFF` is
                                            ChainPatrol staff, `CUSTOMER` is a user
                                            of a customer organization, `AUTOMATION`
                                            is a ChainPatrol system account
                                            (auto-approvals, automated escalations).
                                        name:
                                          type: string
                                          description: >-
                                            Display name, masked as in the
                                            ChainPatrol app: staff and automation
                                            read "ChainPatrol Team", and a customer
                                            user outside your organization reads
                                            "CUSTOMER". ChainPatrol staff callers
                                            see real names.
                                        role:
                                          type: string
                                          nullable: true
                                          enum:
                                            - SUPERUSER
                                            - SYSTEM
                                            - CUSTOMER
                                            - SUPPORT
                                            - REVIEWER
                                            - REPORTER
                                            - MANAGER
                                            - READ_ONLY
                                            - null
                                          description: >-
                                            The reviewer's exact role, e.g.
                                            `SUPERUSER` or `SUPPORT`. Returned to
                                            ChainPatrol staff callers only; `null`
                                            for everyone else.
                                      required:
                                        - kind
                                        - name
                                        - role
                                    createdAt:
                                      type: string
                                      description: When the review was made
                                  required:
                                    - id
                                    - decision
                                    - escalationTarget
                                    - label
                                    - reviewer
                                    - createdAt
                                description: >-
                                  The proposal's reviews, oldest first, matching
                                  the review lines of the asset's activity feed
                                  in the app. Reviews that were later revoked
                                  are left out.
                            required:
                              - id
                              - status
                              - reviewStatus
                              - createdAt
                              - reviews
                          description: >-
                            This report's proposals for the searched asset, with
                            their reviews
                      required:
                        - id
                        - title
                        - status
                        - createdAt
                        - reportedByCustomer
                        - proposals
                  scans:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        createdAt:
                          type: string
                          description: When the asset scan was created
                        enrichments:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: number
                                description: Enrichment ID
                              type:
                                type: string
                                description: >-
                                  Enrichment kind, e.g. `browser_capture`,
                                  `dns`, `content_and_metadata`, `threat_intel`,
                                  `phone_lookup`.
                              source:
                                type: string
                                description: >-
                                  Which provider produced the enrichment, in the
                                  stored lower-case form, e.g. `whois`,
                                  `urlscan`, `rdap`, `chainpatrol_browser`,
                                  `x_api`.
                              status:
                                type: string
                                enum:
                                  - PENDING
                                  - IN_PROGRESS
                                  - COMPLETED
                                  - FAILED
                                description: >-
                                  Enrichment status: `PENDING`, `IN_PROGRESS`,
                                  `COMPLETED` or `FAILED`.
                              output:
                                nullable: true
                                description: >-
                                  Provider payload. Shape varies by `type`;
                                  `browser_capture` carries `screenshotUrl` and
                                  `domUrl`.
                              createdAt:
                                type: string
                                description: When the enrichment was created
                              files:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: number
                                      description: File ID
                                    type:
                                      type: string
                                      enum:
                                        - SCREENSHOT
                                        - PROFILE_IMAGE
                                      description: >-
                                        What the file holds. `PROFILE_IMAGE` is
                                        the account's avatar as it looked when
                                        scanned; `SCREENSHOT` is a captured
                                        page.
                                    url:
                                      type: string
                                      description: >-
                                        Fetchable URL on ChainPatrol's CDN.
                                        Unlike the platform URLs inside
                                        `output`, this copy is ours and stays
                                        reachable after the account is removed —
                                        use it whenever you need the image to
                                        keep loading.
                                    fileName:
                                      type: string
                                      nullable: true
                                      description: >-
                                        Original file name, when one was
                                        recorded.
                                    mimeType:
                                      type: string
                                      description: Media type, e.g. `image/jpg`.
                                    sizeBytes:
                                      type: integer
                                      description: File size in bytes.
                                    createdAt:
                                      type: string
                                      description: When the file was stored.
                                  required:
                                    - id
                                    - type
                                    - url
                                    - fileName
                                    - mimeType
                                    - sizeBytes
                                    - createdAt
                                description: >-
                                  Media ChainPatrol re-hosted for this
                                  enrichment, newest first. Empty when nothing
                                  was stored — the upload is best-effort, so an
                                  enrichment can carry a `profile_image_url` in
                                  `output` without a mirrored file here.
                            required:
                              - id
                              - type
                              - source
                              - status
                              - createdAt
                              - files
                          description: >-
                            Scan enrichments. Present when `includeEnrichments`
                            was set and this is one of the asset's 10 most
                            recent scans; absent otherwise. An empty array means
                            the scan genuinely has no enrichments — absent means
                            they were not fetched for it.
                      required:
                        - id
                        - createdAt
                  takedown:
                    type: object
                    nullable: true
                    properties:
                      id:
                        type: number
                      status:
                        type: string
                        enum:
                          - TODO
                          - IN_PROGRESS
                          - COMPLETED
                          - CANCELLED
                          - PENDING_RETRACTION
                          - RETRACTION_SENT
                          - RETRACTED
                          - PENDING_INPUT
                          - PENDING_EVIDENCE
                      createdAt:
                        type: string
                      updatedAt:
                        type: string
                      tasks:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: number
                            type:
                              type: string
                              enum:
                                - HOSTING_PROVIDER
                                - DOMAIN_REGISTRAR
                                - TLD_REGISTRAR
                                - TWITTER
                                - MEDIUM_EMAIL
                                - MEDIUM_UI
                                - TELEGRAM_UI
                                - TELEGRAM_EMAIL
                                - NET_BEACON
                                - GOOGLE_ADS
                                - GOOGLE_APP_STORE
                                - WATCH_TOWER
                                - GOOGLE_WORKSPACE
                                - YOUMAIL
                                - META_IP_REPORT
                            status:
                              type: string
                              enum:
                                - TODO
                                - SUBMITTED
                                - APPROVED
                                - REJECTED
                                - STALE
                                - CANCELLED
                                - PENDING_INPUT
                            retractionStatus:
                              type: string
                              enum:
                                - NOT_RETRACTED
                                - RETRACTION_PENDING
                                - RETRACTION_SENT
                                - RETRACTION_CONFIRMED
                                - RETRACTION_REJECTED
                                - RETRACTION_NOT_NEEDED
                            externalId:
                              type: string
                              nullable: true
                            submittedAt:
                              type: string
                              nullable: true
                            retractedAt:
                              type: string
                              nullable: true
                            lastResponseAt:
                              type: string
                              nullable: true
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                            takedownProvider:
                              type: object
                              nullable: true
                              properties:
                                name:
                                  type: string
                              required:
                                - name
                          required:
                            - id
                            - type
                            - status
                            - retractionStatus
                            - externalId
                            - submittedAt
                            - retractedAt
                            - lastResponseAt
                            - createdAt
                            - updatedAt
                            - takedownProvider
                    required:
                      - id
                      - status
                      - createdAt
                      - updatedAt
                      - tasks
                  blockedBy:
                    type: array
                    items:
                      type: object
                      properties:
                        consumer:
                          type: string
                          description: Organization slug of the consuming platform
                        name:
                          type: string
                          nullable: true
                          description: Display name of the consuming organization
                        consumedAt:
                          type: string
                          description: When the asset was consumed by this platform
                      required:
                        - consumer
                        - name
                        - consumedAt
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        asset:
                          type: object
                          nullable: true
                          properties:
                            id:
                              type: number
                            content:
                              type: string
                            type:
                              type: string
                              enum:
                                - 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
                            status:
                              type: string
                              enum:
                                - UNKNOWN
                                - ALLOWED
                                - BLOCKED
                            watchStatus:
                              type: string
                              enum:
                                - ENABLED
                                - DISABLED
                            livenessStatus:
                              type: string
                              nullable: true
                              enum:
                                - UNKNOWN
                                - ALIVE
                                - DEAD
                                - null
                            blockedAt:
                              type: string
                              nullable: true
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                            - id
                            - content
                            - type
                            - status
                            - watchStatus
                            - livenessStatus
                            - blockedAt
                            - createdAt
                            - updatedAt
                        reports:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: number
                              title:
                                type: string
                                nullable: true
                              status:
                                type: string
                                enum:
                                  - TODO
                                  - IN_PROGRESS
                                  - CLOSED
                              createdAt:
                                type: string
                              reportedByCustomer:
                                type: boolean
                                description: >-
                                  Whether the report counts as the
                                  organization's own submission. These are
                                  decided by ChainPatrol review alone and never
                                  enter the organization's approval queue.
                              proposals:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: number
                                      description: Proposal ID
                                    status:
                                      type: string
                                      enum:
                                        - UNKNOWN
                                        - ALLOWED
                                        - BLOCKED
                                      description: >-
                                        The status the proposal asks to set on
                                        the asset
                                    reviewStatus:
                                      type: string
                                      enum:
                                        - PENDING
                                        - APPROVED
                                        - REJECTED
                                      description: >-
                                        Where the proposal stands: `PENDING`,
                                        `APPROVED` or `REJECTED`
                                    createdAt:
                                      type: string
                                      description: When the proposal was created
                                    reviews:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: number
                                            description: Review ID
                                          decision:
                                            type: string
                                            enum:
                                              - APPROVE
                                              - REJECT
                                              - SKIP
                                              - ESCALATE
                                            description: The decision this review made
                                          escalationTarget:
                                            type: string
                                            nullable: true
                                            enum:
                                              - CUSTOMER
                                              - TEAM
                                              - null
                                            description: >-
                                              Who an `ESCALATE` decision handed the
                                              proposal to: `CUSTOMER` (the
                                              organization's admins) or `TEAM`
                                              (ChainPatrol). `null` for other
                                              decisions.
                                          label:
                                            type: string
                                            nullable: true
                                            description: >-
                                              Review label, e.g. `Targeting Org
                                              Users`. `null` when none was set.
                                          reviewer:
                                            type: object
                                            properties:
                                              kind:
                                                type: string
                                                enum:
                                                  - STAFF
                                                  - CUSTOMER
                                                  - AUTOMATION
                                                description: >-
                                                  Who made the decision. `STAFF` is
                                                  ChainPatrol staff, `CUSTOMER` is a user
                                                  of a customer organization, `AUTOMATION`
                                                  is a ChainPatrol system account
                                                  (auto-approvals, automated escalations).
                                              name:
                                                type: string
                                                description: >-
                                                  Display name, masked as in the
                                                  ChainPatrol app: staff and automation
                                                  read "ChainPatrol Team", and a customer
                                                  user outside your organization reads
                                                  "CUSTOMER". ChainPatrol staff callers
                                                  see real names.
                                              role:
                                                type: string
                                                nullable: true
                                                enum:
                                                  - SUPERUSER
                                                  - SYSTEM
                                                  - CUSTOMER
                                                  - SUPPORT
                                                  - REVIEWER
                                                  - REPORTER
                                                  - MANAGER
                                                  - READ_ONLY
                                                  - null
                                                description: >-
                                                  The reviewer's exact role, e.g.
                                                  `SUPERUSER` or `SUPPORT`. Returned to
                                                  ChainPatrol staff callers only; `null`
                                                  for everyone else.
                                            required:
                                              - kind
                                              - name
                                              - role
                                          createdAt:
                                            type: string
                                            description: When the review was made
                                        required:
                                          - id
                                          - decision
                                          - escalationTarget
                                          - label
                                          - reviewer
                                          - createdAt
                                      description: >-
                                        The proposal's reviews, oldest first,
                                        matching the review lines of the asset's
                                        activity feed in the app. Reviews that
                                        were later revoked are left out.
                                  required:
                                    - id
                                    - status
                                    - reviewStatus
                                    - createdAt
                                    - reviews
                                description: >-
                                  This report's proposals for the searched
                                  asset, with their reviews
                            required:
                              - id
                              - title
                              - status
                              - createdAt
                              - reportedByCustomer
                              - proposals
                        scans:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: number
                              createdAt:
                                type: string
                                description: When the asset scan was created
                              enrichments:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: number
                                      description: Enrichment ID
                                    type:
                                      type: string
                                      description: >-
                                        Enrichment kind, e.g. `browser_capture`,
                                        `dns`, `content_and_metadata`,
                                        `threat_intel`, `phone_lookup`.
                                    source:
                                      type: string
                                      description: >-
                                        Which provider produced the enrichment,
                                        in the stored lower-case form, e.g.
                                        `whois`, `urlscan`, `rdap`,
                                        `chainpatrol_browser`, `x_api`.
                                    status:
                                      type: string
                                      enum:
                                        - PENDING
                                        - IN_PROGRESS
                                        - COMPLETED
                                        - FAILED
                                      description: >-
                                        Enrichment status: `PENDING`,
                                        `IN_PROGRESS`, `COMPLETED` or `FAILED`.
                                    output:
                                      nullable: true
                                      description: >-
                                        Provider payload. Shape varies by
                                        `type`; `browser_capture` carries
                                        `screenshotUrl` and `domUrl`.
                                    createdAt:
                                      type: string
                                      description: When the enrichment was created
                                    files:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: number
                                            description: File ID
                                          type:
                                            type: string
                                            enum:
                                              - SCREENSHOT
                                              - PROFILE_IMAGE
                                            description: >-
                                              What the file holds. `PROFILE_IMAGE` is
                                              the account's avatar as it looked when
                                              scanned; `SCREENSHOT` is a captured
                                              page.
                                          url:
                                            type: string
                                            description: >-
                                              Fetchable URL on ChainPatrol's CDN.
                                              Unlike the platform URLs inside
                                              `output`, this copy is ours and stays
                                              reachable after the account is removed —
                                              use it whenever you need the image to
                                              keep loading.
                                          fileName:
                                            type: string
                                            nullable: true
                                            description: >-
                                              Original file name, when one was
                                              recorded.
                                          mimeType:
                                            type: string
                                            description: Media type, e.g. `image/jpg`.
                                          sizeBytes:
                                            type: integer
                                            description: File size in bytes.
                                          createdAt:
                                            type: string
                                            description: When the file was stored.
                                        required:
                                          - id
                                          - type
                                          - url
                                          - fileName
                                          - mimeType
                                          - sizeBytes
                                          - createdAt
                                      description: >-
                                        Media ChainPatrol re-hosted for this
                                        enrichment, newest first. Empty when
                                        nothing was stored — the upload is
                                        best-effort, so an enrichment can carry
                                        a `profile_image_url` in `output`
                                        without a mirrored file here.
                                  required:
                                    - id
                                    - type
                                    - source
                                    - status
                                    - createdAt
                                    - files
                                description: >-
                                  Scan enrichments. Present when
                                  `includeEnrichments` was set and this is one
                                  of the asset's 10 most recent scans; absent
                                  otherwise. An empty array means the scan
                                  genuinely has no enrichments — absent means
                                  they were not fetched for it.
                            required:
                              - id
                              - createdAt
                        takedown:
                          type: object
                          nullable: true
                          properties:
                            id:
                              type: number
                            status:
                              type: string
                              enum:
                                - TODO
                                - IN_PROGRESS
                                - COMPLETED
                                - CANCELLED
                                - PENDING_RETRACTION
                                - RETRACTION_SENT
                                - RETRACTED
                                - PENDING_INPUT
                                - PENDING_EVIDENCE
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                            tasks:
                              type: array
                              items:
                                type: object
                                properties:
                                  id:
                                    type: number
                                  type:
                                    type: string
                                    enum:
                                      - HOSTING_PROVIDER
                                      - DOMAIN_REGISTRAR
                                      - TLD_REGISTRAR
                                      - TWITTER
                                      - MEDIUM_EMAIL
                                      - MEDIUM_UI
                                      - TELEGRAM_UI
                                      - TELEGRAM_EMAIL
                                      - NET_BEACON
                                      - GOOGLE_ADS
                                      - GOOGLE_APP_STORE
                                      - WATCH_TOWER
                                      - GOOGLE_WORKSPACE
                                      - YOUMAIL
                                      - META_IP_REPORT
                                  status:
                                    type: string
                                    enum:
                                      - TODO
                                      - SUBMITTED
                                      - APPROVED
                                      - REJECTED
                                      - STALE
                                      - CANCELLED
                                      - PENDING_INPUT
                                  retractionStatus:
                                    type: string
                                    enum:
                                      - NOT_RETRACTED
                                      - RETRACTION_PENDING
                                      - RETRACTION_SENT
                                      - RETRACTION_CONFIRMED
                                      - RETRACTION_REJECTED
                                      - RETRACTION_NOT_NEEDED
                                  externalId:
                                    type: string
                                    nullable: true
                                  submittedAt:
                                    type: string
                                    nullable: true
                                  retractedAt:
                                    type: string
                                    nullable: true
                                  lastResponseAt:
                                    type: string
                                    nullable: true
                                  createdAt:
                                    type: string
                                  updatedAt:
                                    type: string
                                  takedownProvider:
                                    type: object
                                    nullable: true
                                    properties:
                                      name:
                                        type: string
                                    required:
                                      - name
                                required:
                                  - id
                                  - type
                                  - status
                                  - retractionStatus
                                  - externalId
                                  - submittedAt
                                  - retractedAt
                                  - lastResponseAt
                                  - createdAt
                                  - updatedAt
                                  - takedownProvider
                          required:
                            - id
                            - status
                            - createdAt
                            - updatedAt
                            - tasks
                        blockedBy:
                          type: array
                          items:
                            type: object
                            properties:
                              consumer:
                                type: string
                                description: Organization slug of the consuming platform
                              name:
                                type: string
                                nullable: true
                                description: Display name of the consuming organization
                              consumedAt:
                                type: string
                                description: When the asset was consumed by this platform
                            required:
                              - consumer
                              - name
                              - consumedAt
                      required:
                        - asset
                        - reports
                        - scans
                        - takedown
                        - blockedBy
                required:
                  - asset
                  - reports
                  - scans
                  - takedown
                  - blockedBy
                description: Asset search response body
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.BAD_REQUEST'
        '401':
          description: Authorization not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.UNAUTHORIZED'
        '403':
          description: Insufficient access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.FORBIDDEN'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.INTERNAL_SERVER_ERROR'
      security:
        - ApiKey: []
components:
  schemas:
    error.BAD_REQUEST:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Invalid input data
        code:
          type: string
          description: The error code
          example: BAD_REQUEST
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Invalid input data error (400)
      description: The error information
      example:
        code: BAD_REQUEST
        message: Invalid input data
        issues: []
    error.UNAUTHORIZED:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Authorization not provided
        code:
          type: string
          description: The error code
          example: UNAUTHORIZED
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Authorization not provided error (401)
      description: The error information
      example:
        code: UNAUTHORIZED
        message: Authorization not provided
        issues: []
    error.FORBIDDEN:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Insufficient access
        code:
          type: string
          description: The error code
          example: FORBIDDEN
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Insufficient access error (403)
      description: The error information
      example:
        code: FORBIDDEN
        message: Insufficient access
        issues: []
    error.INTERNAL_SERVER_ERROR:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Internal server error
        code:
          type: string
          description: The error code
          example: INTERNAL_SERVER_ERROR
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Internal server error error (500)
      description: The error information
      example:
        code: INTERNAL_SERVER_ERROR
        message: Internal server error
        issues: []
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-KEY
      description: >-
        Your API key. This is required by most endpoints to access our API
        programatically. Reach out to us at
        [support@chainpatrol.io](mailto:support@chainpatrol.io?subject=Re:%20API%20Key%20for%20SDK&body=Company:%20%0AName:%20%0APurpose:%20)
        to get an API key for your use.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.