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

# Connected accounts

> Discord's own user-profile endpoint turned into bio, pronouns, Nitro since, the pre-pomelo legacy username, mutual servers with our indexer, and every connected account (Steam, Spotify, YouTube, Twitch, GitHub, Reddit, PlayStation, Xbox, Battle.net, Riot, TikTok, …). A 200 or a 404 takes 1 search from your quota.

Everything Discord’s public profile endpoint adds to the basic user object: bio, pronouns, Nitro since, pre-pomelo legacy username, mutual servers with our indexer, and every linked external account (Steam, Spotify, YouTube, Twitch, GitHub, Reddit, PlayStation, Xbox, Battle.net, Riot, TikTok, …). A `200` or a `404` takes **1 search** from your quota.

The same object is in every [search](https://docs.dis.dog/api-reference/endpoints/search.md) for a Discord ID, as `data` of the `connections` module. [About the module →](https://docs.dis.dog/modules/connections.md)

> [!NOTE]
>
> Each Discord ID is cached up to 6 hours. Only accounts the user chose to make visible on their profile appear in `connections`.


## OpenAPI

````yaml GET /v1/connections/{id}
openapi: 3.1.0
info:
  title: dis.dog API
  version: 1.0.0
  description: >-
    Discord OSINT from one key. Look up a Discord ID, a username or an invite
    and get the profile, the servers it has been seen in, its message logs, and
    the linked Roblox and guns.lol accounts. Your access key authenticates both
    the website and this API.


    **Base URL** `https://api.dis.dog`  

    **Auth** send your key as `Authorization: Bearer DD-...` (or `X-API-Key:
    DD-...`).  

    The API is included with the **Hound** and **Alpha** plans. On the free plan
    only `/v1/me` and `/v1/modules` answer; every other endpoint returns `403
    plan_has_no_api`.
servers:
  - url: https://api.dis.dog
security:
  - bearerAuth: []
paths:
  /v1/connections/{id}:
    get:
      tags:
        - Modules
      summary: Connections
      description: >-
        Bio, pronouns, Nitro, the legacy pre-pomelo name, the servers shared
        with our research accounts, and the connected accounts (Steam, Spotify,
        YouTube, Twitch, GitHub, …). Counts as one search.
      parameters:
        - $ref: '#/components/parameters/Id'
      responses:
        '200':
          description: Connections
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connections'
        '400':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
components:
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: A Discord ID (17 to 20 digits).
      schema:
        type: string
        pattern: ^\d{17,20}$
        example: '80351110224678912'
  schemas:
    Connections:
      type: object
      description: >-
        Only answers when a research account shares a server with the user;
        otherwise 404 `not_available`.
      properties:
        bio:
          type:
            - string
            - 'null'
        pronouns:
          type:
            - string
            - 'null'
        legacyUsername:
          type:
            - string
            - 'null'
          example: Nelly#0001
        bannerUrl:
          type:
            - string
            - 'null'
        premiumType:
          type:
            - integer
            - 'null'
          description: 1 Classic, 2 Nitro, 3 Basic.
        premiumSince:
          type:
            - string
            - 'null'
          format: date-time
        mutualGuilds:
          type: array
          description: Servers shared with our research accounts, biggest first.
          items:
            type: object
            properties:
              id:
                type: string
              nick:
                type:
                  - string
                  - 'null'
              name:
                type:
                  - string
                  - 'null'
              iconUrl:
                type:
                  - string
                  - 'null'
              memberCount:
                type:
                  - integer
                  - 'null'
        connections:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                example: steam
              name:
                type: string
              typeName:
                type: string
                example: Steam
              id:
                type:
                  - string
                  - 'null'
              verified:
                type: boolean
              url:
                type:
                  - string
                  - 'null'
    Error:
      type: object
      required:
        - error
      description: >-
        Every error is a flat object with an `error` code. Some add fields (for
        example `retryAfterMs` on `rate_limited`).
      properties:
        error:
          type: string
          example: plan_has_no_api
          enum:
            - invalid_request
            - invalid_id
            - invalid_name
            - invalid_invite
            - unauthorized
            - invalid_api_key
            - plan_has_no_api
            - user_not_found
            - invite_not_found
            - not_available
            - removed_by_owner
            - rate_limited
            - quota_exceeded
            - module_unavailable
            - upstream_unavailable
            - upstream_busy
            - not_found
        retryAfterMs:
          type: integer
          description: 'On `rate_limited`: wait this long before retrying.'
          example: 2000
  responses:
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your access key, `DD-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX`. The same key is
        your website login. Keep it server-side.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.