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

> Answers 'what led to this asset, and where does it lead?'. Takes one asset (by `assetId` or `content`) and returns the assets linked into it (`upstream`: the page that ran the ad, the ad that linked to it, the account that claimed it) and out of it (`downstream`: what it redirects to, links to or claims), followed `depth` hops on each side, as two graphs of assets and typed links. Nodes carry the same id, type, content and status that `/asset/search` returns. Available to organizations the threat graph connections rollout has been turned on for; others receive `FORBIDDEN`.

## Overview

Asset Connections answers two questions about one asset: **what led to it**, and
**where it leads**. ChainPatrol records a link whenever one asset names another in a
scan: an ad's landing page, a post's URL, a redirect, a page's outbound links, a
profile's claimed website, a wallet a page asks victims to pay. This endpoint follows
those links out from the asset you name, a few hops on each side, and returns two
graphs:

* **upstream** - what leads to the asset: the ads and posts that link to it, the pages
  and accounts that published them, the profiles that claim it.
* **downstream** - where the asset leads: what it redirects to, links to, loads, submits
  forms to, claims as its own or asks to be paid at.

Each graph is a list of **assets** and a list of **links** between them. A link reads
as a sentence, `fromAssetId` → `type` → `toAssetId`: `PUBLISHED`, `LINKS_TO`,
`REDIRECTS_TO`, `CLAIMS`, `REPLIES_TO`, `REPOSTS`, `MENTIONS`, `DEPENDS_ON`,
`MEMBER_OF`, `LOADS`, `SUBMITS_TO` or `USES_WALLET`. Assets carry the same `id`,
`type`, `content` and `status` that [Asset Search](https://chainpatrol.com/docs/external-api/asset-search.md)
returns.

> [!NOTE]
>
> Asset Connections is being rolled out one organization at a time. An organization
> API key that is not part of the rollout receives `403` with the message "Asset
> connections are not available for this organization". Contact ChainPatrol to ask
> for access.

## Quick Start

### Authentication

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

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

### Example Request

Name the asset by its content (a URL, domain, address, social profile, …) or by its
ChainPatrol `assetId` — exactly one of the two. `depth` and `limit` are optional.

```bash cURL theme={null}
curl -X POST 'https://app.chainpatrol.io/api/v2/asset/connections' \
  -H 'X-API-KEY: <api-key>' \
  -H 'Content-Type: application/json' \
  -d '{ "content": "your-brand-login.example", "depth": 2 }'
```

```typescript TypeScript theme={null}
const response = await fetch("https://app.chainpatrol.io/api/v2/asset/connections", {
  method: "POST",
  headers: {
    "X-API-KEY": "<api-key>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ content: "your-brand-login.example", depth: 2 }),
});

const { asset, upstream, downstream } = await response.json();
```

```python Python theme={null}
import requests

response = requests.post(
    "https://app.chainpatrol.io/api/v2/asset/connections",
    headers={"X-API-KEY": "<api-key>"},
    json={"content": "your-brand-login.example", "depth": 2},
)
data = response.json()
```

## Request Body

| Field | Type | Required | Description |
| - | - | - | - |
| `assetId` | `number` | One of | ChainPatrol asset ID, as returned by Asset Search or in a previous response's `assets`. |
| `content` | `string` | One of | Asset content: a URL, domain, wallet address, social profile, app listing, etc. Parsed the way Asset Search parses it. |
| `depth` | `number` | No | Hops to follow on each side, `1` to `3`. Default `2`. One hop is the assets directly linked to yours; two also follows their links. |
| `limit` | `number` | No | Links of each type to read per asset on each side, `1` to `100`. Default `10`. Per type, so one redirect still shows behind fifty outbound links. |

## Response

A phishing site promoted by a Meta ad, redirecting to a wallet drainer that links to
the brand's real site:

```json theme={null}
{
  "asset": {
    "id": 4175269,
    "type": "URL",
    "content": "your-brand-login.example",
    "status": "BLOCKED"
  },
  "upstream": {
    "assets": [
      { "id": 4175269, "type": "URL", "content": "your-brand-login.example", "status": "BLOCKED", "hops": 0, "expanded": true, "hasMoreLinks": false, "truncatedLinkTypes": [], "stop": null },
      { "id": 4175301, "type": "META_AD", "content": "facebook.com/ads/library/?id=1499561385379659", "status": "BLOCKED", "hops": 1, "expanded": true, "hasMoreLinks": false, "truncatedLinkTypes": [], "stop": null },
      { "id": 4175298, "type": "FACEBOOK", "content": "facebook.com/brand-support-desk", "status": "UNKNOWN", "hops": 2, "expanded": false, "hasMoreLinks": false, "truncatedLinkTypes": [], "stop": null }
    ],
    "links": [
      { "fromAssetId": 4175301, "type": "LINKS_TO", "toAssetId": 4175269, "firstSeenAt": "2026-11-02T09:14:51.000Z", "lastSeenAt": "2026-11-08T21:40:03.000Z" },
      { "fromAssetId": 4175298, "type": "PUBLISHED", "toAssetId": 4175301, "firstSeenAt": "2026-11-02T09:14:51.000Z", "lastSeenAt": "2026-11-08T21:40:03.000Z" }
    ]
  },
  "downstream": {
    "assets": [
      { "id": 4175269, "type": "URL", "content": "your-brand-login.example", "status": "BLOCKED", "hops": 0, "expanded": true, "hasMoreLinks": false, "truncatedLinkTypes": [], "stop": null },
      { "id": 4175310, "type": "URL", "content": "wallet-drainer.example", "status": "BLOCKED", "hops": 1, "expanded": true, "hasMoreLinks": false, "truncatedLinkTypes": [], "stop": null },
      { "id": 102, "type": "URL", "content": "your-brand.example", "status": "ALLOWED", "hops": 2, "expanded": false, "hasMoreLinks": false, "truncatedLinkTypes": [], "stop": "allowed" }
    ],
    "links": [
      { "fromAssetId": 4175269, "type": "REDIRECTS_TO", "toAssetId": 4175310, "firstSeenAt": "2026-11-02T09:15:07.000Z", "lastSeenAt": "2026-11-08T21:40:12.000Z" },
      { "fromAssetId": 4175310, "type": "LINKS_TO", "toAssetId": 102, "firstSeenAt": "2026-11-02T09:15:07.000Z", "lastSeenAt": "2026-11-08T21:40:12.000Z" }
    ]
  }
}
```

### Top level

| Field | Type | Description |
| - | - | - |
| `asset` | `object` | The asset you named: `id`, `type`, `content`, `status`. |
| `upstream` | `graph` | What leads to the asset. Its `assets` list starts with the asset itself. |
| `downstream` | `graph` | Where the asset leads. Its `assets` list starts with the asset itself. |

### Each asset in a graph

| Field | Type | Description |
| - | - | - |
| `id` | `number` | ChainPatrol asset ID. |
| `type` | `string` | Asset type, e.g. `URL`, `TWITTER`, `META_AD`, `FACEBOOK`, `ADDRESS`. See [Asset Types](https://chainpatrol.com/docs/glossary/asset-types/page.md). |
| `content` | `string` | Asset content. |
| `status` | `string` | `BLOCKED`, `ALLOWED` or `UNKNOWN`. |
| `hops` | `number` | Links between this asset and yours on the path that first reached it. `0` for your asset. |
| `expanded` | `boolean` | Whether this asset's own links on this side were read. `false` past `depth`, past the per-hop cap, or when `stop` is set. |
| `hasMoreLinks` | `boolean` | Whether this asset has more links on this side than `limit` allowed. |
| `truncatedLinkTypes` | `string[]` | The link types it has more of than `limit` allowed. Ask again with this asset's `id` as `assetId` to read them. |
| `stop` | `string \| null` | Why this asset's links were not followed although within `depth`: `parking` (a parking or for-sale page), `furniture` (a platform page every site links to), `allowed` (an asset reviewed and allowed), `allowed-site` (a subdomain of an allowed site). Each of these joins unrelated assets, so the walk shows the asset and stops. |

### Each link in a graph

| Field | Type | Description |
| - | - | - |
| `fromAssetId` | `number` | The asset the link starts from. |
| `type` | `string` | How the two are linked, read as from → type → to. See the list above. |
| `toAssetId` | `number` | The asset the link points to. |
| `firstSeenAt` | `string` | When the link was first observed (ISO 8601, UTC). |
| `lastSeenAt` | `string` | When the link was last observed (ISO 8601, UTC). |

> [!NOTE]
>
> Links are observed relationships read from ChainPatrol's scans. An asset scanned
> before links were recorded, or never scanned, has none. Links read from a scan of
> another organization's own asset (its allowlisted domain, account or app) are left
> out, the same way [Asset Search](https://chainpatrol.com/docs/external-api/asset-search.md) and
> [Get Scan Result](https://chainpatrol.com/docs/external-api/scan-result.md) leave out that organization's scans.

## Walking further

A response is bounded: `depth` hops, `limit` links of each type per asset, and at
most 25 assets expanded per hop. Two fields say where there is more. An asset with
`expanded: false` and no `stop` sat past the bounds; an asset with `hasMoreLinks: true`
had more links of the types in `truncatedLinkTypes` than `limit` allowed. In both cases,
call the endpoint again with that asset's `id` as `assetId` to continue from it.

## Errors

| Status | When |
| - | - |
| `400` | Both or neither of `content` and `assetId` were sent, `depth` is outside `1`–`3`, or `limit` is outside `1`–`100`. |
| `401` | No API key was sent. |
| `403` | The organization is not part of the rollout, or the key is a user key rather than an organization key. |
| `404` | ChainPatrol has no such asset. |

## Related

* [Asset Search](https://chainpatrol.com/docs/external-api/asset-search.md)
* [Get Scan Result](https://chainpatrol.com/docs/external-api/scan-result.md)
* [Asset Types](https://chainpatrol.com/docs/glossary/asset-types/page.md)


## OpenAPI

````yaml POST /asset/connections
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/connections:
    post:
      tags:
        - asset
      summary: Asset connections
      description: >-
        Answers 'what led to this asset, and where does it lead?'. Takes one
        asset (by `assetId` or `content`) and returns the assets linked into it
        (`upstream`: the page that ran the ad, the ad that linked to it, the
        account that claimed it) and out of it (`downstream`: what it redirects
        to, links to or claims), followed `depth` hops on each side, as two
        graphs of assets and typed links. Nodes carry the same id, type, content
        and status that `/asset/search` returns. Available to organizations the
        threat graph connections rollout has been turned on for; others receive
        `FORBIDDEN`.
      operationId: assetConnections
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                assetId:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  description: >-
                    ID of the asset to start from, as returned by
                    `/asset/search`.
                content:
                  type: string
                  minLength: 1
                  description: >-
                    Content of the asset to start from (a URL, domain, social
                    handle, app listing or wallet address), parsed the way
                    `/asset/search` parses it. Pass either `assetId` or
                    `content`.
                depth:
                  type: integer
                  minimum: 1
                  maximum: 3
                  default: 2
                  description: >-
                    How many hops to follow on each side (1 to 3, default 2).
                    One hop is the assets directly linked to the asset; two also
                    follows their links.
                limit:
                  type: integer
                  minimum: 1
                  maximum: 100
                  default: 10
                  description: >-
                    How many links of each type to read per asset on each side
                    (1 to 100, default 10). Per type, so one redirect still
                    shows behind fifty outbound links. `truncatedLinkTypes` on
                    an asset says which types had more.
              description: >-
                Asset connections request body


                What led to an asset and where it leads: the links into it (who
                published,

                linked to, redirected to or claimed it) and out of it, followed
                `depth` hops

                on each side. Links are observed relationships read from scans,
                so an asset

                scanned before links were recorded has none.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  asset:
                    type: object
                    properties:
                      id:
                        type: number
                        description: Asset ID
                      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
                        description: Asset type
                      content:
                        type: string
                        description: Asset content
                      status:
                        type: string
                        enum:
                          - UNKNOWN
                          - ALLOWED
                          - BLOCKED
                        description: Asset status
                    required:
                      - id
                      - type
                      - content
                      - status
                    description: The asset the connections were read from
                  upstream:
                    type: object
                    properties:
                      assets:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: number
                              description: Asset ID
                            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
                              description: Asset type
                            content:
                              type: string
                              description: Asset content
                            status:
                              type: string
                              enum:
                                - UNKNOWN
                                - ALLOWED
                                - BLOCKED
                              description: Asset status
                            hops:
                              type: integer
                              description: >-
                                Links between this asset and the root on the
                                path it was first reached by. 0 for the root
                                itself.
                            expanded:
                              type: boolean
                              description: >-
                                Whether this asset's own links on this side were
                                read. False past `depth`, past the per-hop cap,
                                or when `stop` is set.
                            hasMoreLinks:
                              type: boolean
                              description: >-
                                Whether this asset has more links on this side
                                than `limit` allowed.
                            truncatedLinkTypes:
                              type: array
                              items:
                                type: string
                                enum:
                                  - PUBLISHED
                                  - LINKS_TO
                                  - REDIRECTS_TO
                                  - CLAIMS
                                  - REPLIES_TO
                                  - REPOSTS
                                  - MENTIONS
                                  - DEPENDS_ON
                                  - MEMBER_OF
                                  - LOADS
                                  - SUBMITS_TO
                                  - USES_WALLET
                              description: >-
                                The link types this asset has more of than
                                `limit` allowed. Ask again with this asset as
                                the root to read them.
                            stop:
                              type: string
                              nullable: true
                              enum:
                                - parking
                                - furniture
                                - allowed
                                - allowed-site
                                - null
                              description: >-
                                Why this asset's links were not followed
                                although within `depth`, or null. `parking`: a
                                parking or for-sale page. `furniture`: a
                                platform page every site links to. `allowed`: an
                                asset reviewed and allowed. `allowed-site`: a
                                subdomain of an allowed site. Each of these
                                joins unrelated assets, so the walk shows the
                                asset and stops there.
                          required:
                            - id
                            - type
                            - content
                            - status
                            - hops
                            - expanded
                            - hasMoreLinks
                            - truncatedLinkTypes
                            - stop
                        description: >-
                          The root first (`hops` 0), then each asset in the
                          order it was reached. An asset reached by two paths
                          appears once.
                      links:
                        type: array
                        items:
                          type: object
                          properties:
                            fromAssetId:
                              type: number
                              description: The asset the link starts from
                            type:
                              type: string
                              enum:
                                - PUBLISHED
                                - LINKS_TO
                                - REDIRECTS_TO
                                - CLAIMS
                                - REPLIES_TO
                                - REPOSTS
                                - MENTIONS
                                - DEPENDS_ON
                                - MEMBER_OF
                                - LOADS
                                - SUBMITS_TO
                                - USES_WALLET
                              description: >-
                                How the two assets are linked, read as from →
                                type → to: `PUBLISHED` (an account published a
                                post, ad, video or app), `LINKS_TO`,
                                `REDIRECTS_TO`, `CLAIMS` (names it as its own
                                website, account or contact), `REPLIES_TO`,
                                `REPOSTS`, `MENTIONS`, `DEPENDS_ON`,
                                `MEMBER_OF`, `LOADS`, `SUBMITS_TO`,
                                `USES_WALLET`.
                            toAssetId:
                              type: number
                              description: The asset the link points to
                            firstSeenAt:
                              type: string
                              description: When the link was first observed
                            lastSeenAt:
                              type: string
                              description: When the link was last observed
                          required:
                            - fromAssetId
                            - type
                            - toAssetId
                            - firstSeenAt
                            - lastSeenAt
                        description: The links between the assets listed, grouped by type.
                    required:
                      - assets
                      - links
                    description: >-
                      What leads to the asset: the assets that published, linked
                      to, redirected to or claimed it, and what led to those.
                  downstream:
                    type: object
                    properties:
                      assets:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: number
                              description: Asset ID
                            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
                              description: Asset type
                            content:
                              type: string
                              description: Asset content
                            status:
                              type: string
                              enum:
                                - UNKNOWN
                                - ALLOWED
                                - BLOCKED
                              description: Asset status
                            hops:
                              type: integer
                              description: >-
                                Links between this asset and the root on the
                                path it was first reached by. 0 for the root
                                itself.
                            expanded:
                              type: boolean
                              description: >-
                                Whether this asset's own links on this side were
                                read. False past `depth`, past the per-hop cap,
                                or when `stop` is set.
                            hasMoreLinks:
                              type: boolean
                              description: >-
                                Whether this asset has more links on this side
                                than `limit` allowed.
                            truncatedLinkTypes:
                              type: array
                              items:
                                type: string
                                enum:
                                  - PUBLISHED
                                  - LINKS_TO
                                  - REDIRECTS_TO
                                  - CLAIMS
                                  - REPLIES_TO
                                  - REPOSTS
                                  - MENTIONS
                                  - DEPENDS_ON
                                  - MEMBER_OF
                                  - LOADS
                                  - SUBMITS_TO
                                  - USES_WALLET
                              description: >-
                                The link types this asset has more of than
                                `limit` allowed. Ask again with this asset as
                                the root to read them.
                            stop:
                              type: string
                              nullable: true
                              enum:
                                - parking
                                - furniture
                                - allowed
                                - allowed-site
                                - null
                              description: >-
                                Why this asset's links were not followed
                                although within `depth`, or null. `parking`: a
                                parking or for-sale page. `furniture`: a
                                platform page every site links to. `allowed`: an
                                asset reviewed and allowed. `allowed-site`: a
                                subdomain of an allowed site. Each of these
                                joins unrelated assets, so the walk shows the
                                asset and stops there.
                          required:
                            - id
                            - type
                            - content
                            - status
                            - hops
                            - expanded
                            - hasMoreLinks
                            - truncatedLinkTypes
                            - stop
                        description: >-
                          The root first (`hops` 0), then each asset in the
                          order it was reached. An asset reached by two paths
                          appears once.
                      links:
                        type: array
                        items:
                          type: object
                          properties:
                            fromAssetId:
                              type: number
                              description: The asset the link starts from
                            type:
                              type: string
                              enum:
                                - PUBLISHED
                                - LINKS_TO
                                - REDIRECTS_TO
                                - CLAIMS
                                - REPLIES_TO
                                - REPOSTS
                                - MENTIONS
                                - DEPENDS_ON
                                - MEMBER_OF
                                - LOADS
                                - SUBMITS_TO
                                - USES_WALLET
                              description: >-
                                How the two assets are linked, read as from →
                                type → to: `PUBLISHED` (an account published a
                                post, ad, video or app), `LINKS_TO`,
                                `REDIRECTS_TO`, `CLAIMS` (names it as its own
                                website, account or contact), `REPLIES_TO`,
                                `REPOSTS`, `MENTIONS`, `DEPENDS_ON`,
                                `MEMBER_OF`, `LOADS`, `SUBMITS_TO`,
                                `USES_WALLET`.
                            toAssetId:
                              type: number
                              description: The asset the link points to
                            firstSeenAt:
                              type: string
                              description: When the link was first observed
                            lastSeenAt:
                              type: string
                              description: When the link was last observed
                          required:
                            - fromAssetId
                            - type
                            - toAssetId
                            - firstSeenAt
                            - lastSeenAt
                        description: The links between the assets listed, grouped by type.
                    required:
                      - assets
                      - links
                    description: >-
                      Where the asset leads: what it links to, redirects to or
                      claims, and where those lead.
                required:
                  - asset
                  - upstream
                  - downstream
                description: Asset connections 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.