> ## 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.

# Get Time to Takedown

> Get the median time from takedown start to completion, broken down by asset type, for a date range. Crypto address (ADDRESS) takedowns are left out unless you filter to them: an address is reported on many sites at once and how long its takedown takes depends on how many platforms you want covered. `excludedAssetTypes` in the response lists what was left out.

## Overview

Get the median time from a takedown starting to its completion, for takedowns
completed in a date range: one median pooled across everything in scope (`overall`)
and one per asset type (`byAssetType`).

The clock starts when the takedown first moves to In Progress, or when it was opened
if it never did, and stops the first time it is completed.

```bash theme={null}
curl --request POST \
  --url https://app.chainpatrol.io/api/v2/metrics/takedown-time \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '{
    "slug": "your-org",
    "startDate": "2026-10-01",
    "endDate": "2026-10-31",
    "assetTypeGroups": ["DOMAINS", "SOCIALS"]
  }'
```

## Request Body

| Field | Type | Required | Description |
| - | - | - | - |
| `slug` | `string` | ✅ Yes | Organization slug. |
| `startDate` | `string` | ❌ No | Only takedowns completed on or after this date. A date-only value (`YYYY-MM-DD`) starts at midnight UTC. |
| `endDate` | `string` | ❌ No | Only takedowns completed on or before this date. A date-only value covers the whole day in UTC. |
| `assetTypes` | `AssetType[]` | ❌ No | Only these asset types. Combined with `assetTypeGroups` as a union. |
| `assetTypeGroups` | `string[]` | ❌ No | Only asset types in these groups: `DOMAINS`, `SOCIALS`, `APP_STORES`, `ADS`, `EXTENSIONS`, `CRYPTO`, `EMAIL`, `PACKAGES`, `OTHER`. |
| `brandIds` | `number[]` | ❌ No | Only assets belonging to these brands. |
| `brandType` | `string` | ❌ No | Only brands of this type: `INDIVIDUAL`, `ORGANIZATION` or `PRODUCT`. |
| `blockLabel` | `string` | ❌ No | Only assets blocked with this review label, such as `Brand Impersonation`. |
| `countryCodes` | `string[]` | ❌ No | Only assets scanned from these ISO 3166-1 alpha-2 countries. |

> [!NOTE]
>
> Crypto address (`ADDRESS`) takedowns are left out unless you filter to them with
> `assetTypes` or the `CRYPTO` group. An address is reported on many sites at once,
> and how long that takes depends on how many platforms you want covered, so it would
> skew the median for domains and socials. `excludedAssetTypes` in the response lists
> what was left out.

## Reading the response

* Each median is given in minutes, hours and days. `count` is the number of completed
  takedowns behind it.
* `overall` is the median of every takedown in scope, not a median of the
  per-type medians, so you cannot work it out from `byAssetType`. It is `null` when
  no takedown in scope completed in the range.

For the same median per hosting provider or registrar, use
[`/metrics/takedown-time/by-provider`](https://chainpatrol.com/docs/external-api/metrics-takedown-time-by-provider).
For month-by-month figures, use
[`/metrics/takedown-time/trend`](https://chainpatrol.com/docs/external-api/metrics-takedown-time-trend).


## OpenAPI

````yaml POST /metrics/takedown-time
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:
  /metrics/takedown-time:
    post:
      tags:
        - metrics
      summary: Get organization time-to-takedown metrics
      description: >-
        Get the median time from takedown start to completion, broken down by
        asset type, for a date range. Crypto address (ADDRESS) takedowns are
        left out unless you filter to them: an address is reported on many sites
        at once and how long its takedown takes depends on how many platforms
        you want covered. `excludedAssetTypes` in the response lists what was
        left out.
      operationId: metricsTakedownTime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                slug:
                  type: string
                  minLength: 1
                  description: Organization slug
                startDate:
                  type: string
                  description: >-
                    Only include takedowns completed on or after this date. A
                    date-only value (YYYY-MM-DD) starts at midnight UTC
                endDate:
                  type: string
                  description: >-
                    Only include takedowns completed on or before this date. A
                    date-only value (YYYY-MM-DD) covers the whole day in UTC;
                    pass a full timestamp for a precise cut-off
                blockLabel:
                  type: string
                  description: >-
                    Only include assets blocked with this review label, e.g.
                    "Brand Impersonation", "Employee Impersonation" or
                    "Targeting Org Users"
                brandType:
                  type: string
                  enum:
                    - INDIVIDUAL
                    - ORGANIZATION
                    - PRODUCT
                  description: Only include assets belonging to brands of this type
                countryCodes:
                  type: array
                  items:
                    type: string
                    minLength: 2
                    maxLength: 2
                  description: >-
                    Only include assets scanned from these ISO 3166-1 alpha-2
                    countries
                brandIds:
                  type: array
                  items:
                    type: integer
                    minimum: 0
                    exclusiveMinimum: true
                  description: Only include assets belonging to these brands
                assetTypes:
                  type: array
                  items:
                    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
                  description: >-
                    Only include takedowns of these asset types. Combined with
                    `assetTypeGroups` as a union. When no asset-type filter is
                    given, crypto address (ADDRESS) takedowns are left out: an
                    address is reported on many sites at once and how long its
                    takedown takes depends on how many platforms you want
                    covered, so it would skew the median for domains and
                    socials. Filter to ADDRESS (or the CRYPTO group) to include
                    them.
                assetTypeGroups:
                  type: array
                  items:
                    type: string
                    enum:
                      - DOMAINS
                      - SOCIALS
                      - APP_STORES
                      - ADS
                      - EXTENSIONS
                      - CRYPTO
                      - EMAIL
                      - PACKAGES
                      - OTHER
                  description: >-
                    Only include takedowns whose asset type is in one of these
                    groups — the same groups as the app's asset-type filter,
                    e.g. DOMAINS or SOCIALS. Combined with `assetTypes` as a
                    union
              required:
                - slug
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  overall:
                    type: object
                    nullable: true
                    properties:
                      medianTakedownMinutes:
                        type: number
                      medianTakedownHours:
                        type: number
                      medianTakedownDays:
                        type: number
                      count:
                        type: number
                        description: Number of completed takedowns behind the median
                    required:
                      - medianTakedownMinutes
                      - medianTakedownHours
                      - medianTakedownDays
                      - count
                    description: >-
                      One median pooled across every completed takedown in
                      scope, across all of the selected asset types (or every
                      type but `excludedAssetTypes`). Not derivable from
                      `byAssetType`: a median of medians is not the median. Null
                      when no takedown in scope completed in the range
                  byAssetType:
                    type: array
                    items:
                      type: object
                      properties:
                        medianTakedownMinutes:
                          type: number
                        medianTakedownHours:
                          type: number
                        medianTakedownDays:
                          type: number
                        count:
                          type: number
                          description: Number of completed takedowns behind the median
                        assetType:
                          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
                          description: Asset type the median is computed over
                      required:
                        - medianTakedownMinutes
                        - medianTakedownHours
                        - medianTakedownDays
                        - count
                        - assetType
                    description: >-
                      Median time from takedown start to completion, one entry
                      per asset type, ascending by median
                  excludedAssetTypes:
                    type: array
                    items:
                      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
                    description: >-
                      Asset types left out of this result because no asset-type
                      filter was given. Empty when the result covers exactly the
                      asset types requested
                required:
                  - overall
                  - byAssetType
                  - excludedAssetTypes
        '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.