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

# Lookups

> Use v2 lookup endpoints for Discord to Roblox, Roblox to Discord, verification status, and Premium alt detection.

Lookup endpoints are read-only and require API-key authentication.

```http theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Endpoints

| Endpoint                        | Use                                                                                      |
| ------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET /v2/discord`               | Find the linked Roblox account for a Discord user.                                       |
| `GET /v2/roblox`                | Find linked Discord accounts for a Roblox user.                                          |
| `GET /v2/alts`                  | Premium alt detection by Discord ID, Roblox ID, or IP.                                   |
| `GET /v2/verifications/discord` | Read verification status for a Discord user, or redirect public users into verification. |

<Warning>
  Scoped keys require `guildId` so Dock can confirm the bot is in the server and scope results to that guild. Global keys may omit `guildId`.
</Warning>

## Discord to Roblox

```http theme={null}
GET /v2/discord?discordId=123456789012345678&guildId=987654321098765432
```

<ParamField query="discordId" type="string" required>
  Discord user ID to look up.
</ParamField>

<ParamField query="guildId" type="string">
  Required for guild-scoped keys. Used to verify guild membership and scope the lookup.
</ParamField>

<ParamField query="resolved" type="boolean">
  Defaults to `false`. When `true`, returns expanded Roblox profile data and requires Premium.
</ParamField>

```json 200 OK theme={null}
{
  "status": 200,
  "data": {
    "discordId": "123456789012345678",
    "robloxId": "156319135",
    "resolved": {
      "roblox": null,
      "discord": null
    }
  },
  "meta": {
    "requestId": "req_abc123",
    "version": "2.0.0",
    "tier": "free"
  },
  "timestamp": "2026-05-07T00:00:00.000Z"
}
```

## Roblox to Discord

```http theme={null}
GET /v2/roblox?robloxId=156319135&guildId=987654321098765432
```

<ParamField query="robloxId" type="string" required>
  Roblox user ID to look up.
</ParamField>

<ParamField query="guildId" type="string">
  Required for guild-scoped keys. Dock filters linked Discord accounts to members of that guild.
</ParamField>

<ParamField query="resolved" type="boolean">
  Defaults to `false`. When `true`, returns expanded Discord user or guild-member data and requires Premium.
</ParamField>

```json 200 OK theme={null}
{
  "status": 200,
  "data": {
    "robloxId": "156319135",
    "discordIds": ["123456789012345678"],
    "count": 1,
    "resolved": {
      "roblox": null,
      "discord": null
    }
  },
  "meta": {
    "requestId": "req_abc123",
    "version": "2.0.0",
    "tier": "free"
  },
  "timestamp": "2026-05-07T00:00:00.000Z"
}
```

## Resolved data

Use `resolved=true` only when you need display-ready profiles.

<Tabs>
  <Tab title="Roblox profile">
    `GET /v2/discord?resolved=true` can return Roblox username, display name, description, creation date, ban state, verified badge state, avatar URLs, badges, and groups.
  </Tab>

  <Tab title="Discord profile">
    `GET /v2/roblox?resolved=true` can return Discord username, display name, avatar, banner, account creation date, guild nickname, join date, and guild roles.
  </Tab>
</Tabs>

<Note>
  Resolved data is slower than raw mapping data because Dock must hydrate external profile details. Cache responses where appropriate and avoid requesting `resolved=true` by default.
</Note>

## Alt detection

```http theme={null}
GET /v2/alts?discordId=123456789012345678&guildId=987654321098765432
```

<ParamField query="discordId" type="string">
  Discord user ID seed. At least one of `discordId`, `robloxId`, or `ip` is required.
</ParamField>

<ParamField query="robloxId" type="string">
  Roblox user ID seed. At least one of `discordId`, `robloxId`, or `ip` is required.
</ParamField>

<ParamField query="ip" type="string">
  Optional IP seed for authorized detection workflows. Raw IP addresses are not disclosed in customer responses.
</ParamField>

<ParamField query="guildId" type="string">
  Required for scoped keys. Results are filtered to members of that guild.
</ParamField>

<ParamField query="resolved" type="boolean">
  Defaults to `false`. Adds expanded profile objects to matches when available.
</ParamField>

```json 200 OK theme={null}
{
  "status": 200,
  "data": {
    "target": {
      "discordId": "123456789012345678",
      "robloxId": null,
      "guildId": "987654321098765432"
    },
    "matches": [
      {
        "discordId": "222222222222222222",
        "robloxId": "4567890123"
      }
    ],
    "risk": {
      "score": 72,
      "severity": "MEDIUM"
    },
    "summary": {
      "matchCount": 1
    },
    "resolved": false
  },
  "meta": {
    "requestId": "req_abc123",
    "version": "2.0.0",
    "tier": "premium"
  },
  "timestamp": "2026-05-07T00:00:00.000Z"
}
```

<Warning>
  Detection outputs are probabilistic and are not definitive proof of identity or wrongdoing. Review context before taking moderation action.
</Warning>

## Verification status

With API-key auth and a `discordId`, this endpoint returns JSON status.

```http theme={null}
GET /v2/verifications/discord?discordId=123456789012345678&guildId=987654321098765432
```

Without API-key auth, the same route redirects the user into the public verification flow and preserves query parameters such as `pid`, `sid`, and `redirect`.

```json Linked response theme={null}
{
  "status": 200,
  "data": {
    "linked": true,
    "discordId": "123456789012345678",
    "robloxId": "156319135",
    "linkVersion": 2,
    "linkHash": "sha256-link-marker",
    "lastVerifiedAt": "2026-05-07T00:00:00.000Z",
    "resolved": {
      "roblox": null,
      "discord": null
    }
  },
  "meta": {
    "requestId": "req_abc123",
    "version": "2.0.0"
  },
  "timestamp": "2026-05-07T00:00:00.000Z"
}
```
