## GET /openapi/v1/people/info

One person from RootData: their roles at the assets and exchanges we list, their X counts and
the projects they invested in. Their written profile is not part of this response.

### Query parameters

| Parameter | Type | Notes |
|:--|:--|:--|
| `id` | integer | **Required.** The person's id, from `/people` or a team endpoint |

### Response

```json
{
  "code": 0,
  "message": "success",
  "message_key": "SUCCESS",
  "result": {
    "id": 1024,
    "name": "Jane Doe",
    "avatar_url": "https://public.rootdata.com/images/jane.jpg",
    "social_links": [
      { "type": "x", "url": "https://x.com/janedoe" }
    ],
    "relations": [
      {
        "asset_id": 4521,
        "exchange_id": null,
        "name": "Uniswap",
        "logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/7083.png",
        "position": "Co-founder, CEO",
        "status": "active"
      },
      {
        "asset_id": null,
        "exchange_id": 118,
        "name": "Binance",
        "logo": "https://s2.coinmarketcap.com/static/img/exchanges/64x64/270.png",
        "position": "Advisor",
        "status": "resigned"
      }
    ],
    "stats": { "x_followers": 120000, "x_following": 310 },
    "investments": [
      { "name": "Uniswap", "logo": "https://public.rootdata.com/images/uniswap.jpg", "asset_id": 4521, "exchange_id": null },
      { "name": "Stealth Labs", "logo": "", "asset_id": null, "exchange_id": null }
    ],
    "source": { "name": "RootData", "data_time": "2026-10-01T08:00:00Z" }
  }
}
```

#### Fields

| Field | Type | Notes |
|:--|:--|:--|
| `id`, `name` | number, string | |
| `avatar_url` | string | **Empty string** when there is none |
| `social_links` | array | As on [`/assets/team`](#get-openapiv1assetsteam) |
| `relations` | array | The person's roles, **one item per asset or exchange**. `[]` when there are none |
| `relations[].asset_id`, `relations[].exchange_id` | number or `null` | Where the role is: **exactly one of the two is a number**, the other is `null`. `asset_id` is the id `/assets` takes; `exchange_id` the id `/exchanges` takes |
| `relations[].name` | string | The asset's or exchange's name |
| `relations[].logo` | string | **Empty string** when there is none |
| `relations[].position` | string or `null` | As on `/assets/team`: a current role shows only the titles held now, a former one every title held, joined with `", "` |
| `relations[].status` | string | `active` when the person holds any role there now, otherwise `resigned` |
| `stats.x_followers`, `stats.x_following` | number or `null` | The person's X counts. `null` when RootData gives none |
| `investments` | array | Projects the person invested in. `[]` when there are none |
| `investments[].name` | string | |
| `investments[].logo` | string | **Empty string** when there is none |
| `investments[].asset_id`, `investments[].exchange_id` | number or `null` | The asset or exchange the project is, when we list it — at most one of the two. **Both `null`** for a project we list as neither; the investment is still returned |
| `source.name` | string | Always `"RootData"` |
| `source.data_time` | string or `null` | When we fetched the RootData data behind `stats` and `investments`, RFC3339 UTC. `null` for a person whose details we have not fetched yet |

**Order.** `relations`: current ones first, then former ones; within each, the order in which
we first recorded a role there. `investments`: RootData's order.

A project that is both an asset's and an exchange's is listed as the asset, in `relations` and
in `investments` alike. Exchanges are the centralized ones `/exchanges` lists.

### Examples

```bash
# One person
curl -H "X-Api-Key: <your-api-key>" \
  "https://open-api.coinworldcap.com/openapi/v1/people/info?id=1024"
```

| HTTP status | `code` | When |
|:--|:--|:--|
| 400 | 40000 | `id` missing, or not a positive integer |
| 404 | 40400 | No person with that `id` |

The other errors are in [Errors](#errors).
