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

# Lookup

> Resolve verification links between Discord and Roblox accounts.

Lookup endpoints tell you which Roblox account a Discord user is linked to in your guild, and the reverse. Results are scoped to your guild: a user must be verified in your guild to appear.

All lookup endpoints read the guild from the `X-Guild-ID` header.

<Info>
  Every endpoint on this page requires the `lookup:read` scope. See [Scopes](/developer-api/introduction#scopes).
</Info>

## Look up by Discord ID

```http theme={null}
GET /lookup/discord/:discordId
```

<ParamField path="discordId" type="string" required>
  The Discord user ID to resolve.
</ParamField>

<ParamField header="X-Guild-ID" type="string" required>
  The guild to look in. Must match your API key's guild.
</ParamField>

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="discord_id" type="string" />

    <ResponseField name="roblox_id" type="number" />

    <ResponseField name="roblox_username" type="string" />

    <ResponseField name="verified" type="boolean" />
  </Expandable>
</ResponseField>

<Note>
  API key responses are limited to these four fields. Extra fields such as `verified_at` and `last_sync` are only returned to dashboard sessions, not to API keys.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.technified.xyz/api/v1/lookup/discord/123456789012345678" \
    -H "X-API-Key: $TECHNIFIED_API_KEY" \
    -H "X-Guild-ID: $GUILD_ID"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "code": 200,
    "message": "User found",
    "data": {
      "discord_id": "123456789012345678",
      "roblox_id": 261,
      "roblox_username": "Shedletsky",
      "verified": true
    }
  }
  ```

  ```json 404 theme={null}
  {
    "status": "error",
    "code": 404,
    "message": "User not found or not verified in this guild",
    "details": { "code": "NOT_FOUND" }
  }
  ```
</ResponseExample>

## Look up by Roblox ID

The reverse direction.

```http theme={null}
GET /lookup/roblox/:robloxId
```

<ParamField path="robloxId" type="number" required>
  The Roblox user ID to resolve.
</ParamField>

<ParamField header="X-Guild-ID" type="string" required>
  The guild to look in.
</ParamField>

The response shape matches [Look up by Discord ID](#look-up-by-discord-id).

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.technified.xyz/api/v1/lookup/roblox/261" \
    -H "X-API-Key: $TECHNIFIED_API_KEY" \
    -H "X-Guild-ID: $GUILD_ID"
  ```
</RequestExample>

## Batch lookup

Resolve up to 25 IDs in one call. Pass either `discord_ids` or `roblox_ids`.

```http theme={null}
POST /lookup/status
```

<ParamField body="guild_id" type="string" required>
  The guild to look in.
</ParamField>

<ParamField body="discord_ids" type="string[]">
  Up to 25 Discord IDs.
</ParamField>

<ParamField body="roblox_ids" type="number[]">
  Up to 25 Roblox IDs.
</ParamField>

<ResponseField name="data.results" type="object">
  A map keyed by the ID you passed. Each value is the link object, or `null` if that user is not verified in the guild.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.technified.xyz/api/v1/lookup/status" \
    -H "X-API-Key: $TECHNIFIED_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "guild_id": "'$GUILD_ID'",
      "discord_ids": ["123456789012345678", "234567890123456789"]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "code": 200,
    "message": "Batch lookup complete",
    "data": {
      "results": {
        "123456789012345678": {
          "discord_id": "123456789012345678",
          "roblox_id": 261,
          "roblox_username": "Shedletsky",
          "verified": true
        },
        "234567890123456789": null
      }
    }
  }
  ```
</ResponseExample>

<Warning>
  Batches are capped at 25 IDs per request to prevent enumeration. A larger list returns `400`.
</Warning>

## Reverse lookup

Given one ID, return the full link record. This is the single-record version of batch lookup.

```http theme={null}
POST /reverse
```

<ParamField body="guild_id" type="string" required />

<ParamField body="discord_id" type="string">
  Provide this or `roblox_id`.
</ParamField>

<ParamField body="roblox_id" type="number">
  Provide this or `discord_id`.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.technified.xyz/api/v1/reverse" \
    -H "X-API-Key: $TECHNIFIED_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "guild_id": "'$GUILD_ID'", "roblox_id": 261 }'
  ```
</RequestExample>
