# Getting Started > Make sure that when you make a request, the Content-Type header is set to application/json. Otherwise an error will be rejected. --- #### Base URL ```http https://api.disq.ink/ ``` ## API Versioning Here are the different versions of the API being available. If the version is not specified in the URL, the latest one will be automatically chosen. | Version | Base URL | Status | | ------- | ----------------------------------------- | --------- | | v1 | {rel="nofollow"} | available | ## Authorization Some requests will have to be made with the Authorization which is none other than your bot API token. This token is given to you on the main site in the bot parameters. If the request requires this Authorization and if it is not present you will receive an error code 401 Unauthorized. ```http Authorization: Bot's API token ``` # Bots ## Bot Information Gather information about a specific bot. ::api-endpoint --- parameters: - name: ID description: ID of the bot you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved bot information example: id: abc123 discordId: "876543210987654321" username: Example Bot avatar: a_1234567890abcdef tagline: A short description of this bot longDescription: A longer description with more details about the bot and its features. prefix: "!" languages: - language: id: en name: English code: en tags: - tag: id: mod name: Moderation slug: moderation owners: - discordId: "123456789012345678" username: owner_username avatar: abcdef1234567890 donator: false links: invite: https://discord.com/oauth2/authorize?client_id=876543210987654321&scope=bot&permissions=0 supportCode: abcdef website: https://example.com github: exampleuser/example-bot vanity: null approved: true analytics: _count: votes: 42 serverCount: - count: 1250 createdAt: 2023-01-15T12:00:00.000Z updatedAt: 2023-05-01T09:30:00.000Z - statusCode: 404 description: Bot not found example: error: status: 404 message: The bot you are looking for does not exist on our website. endpoint: /v1/bots/:id method: get --- :: --- ## Bot Votes Retrieve the people who voted for the bot during the current month. ::api-endpoint --- headers: - name: Authorization description: The bot's API token. required: true type: string parameters: - name: ID description: ID of the bot you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved voter information example: votes: - user: id: usr123 discordId: "123456789012345678" username: user_one avatar: abcdef1234567890 timestamp: 2023-05-01T08:45:12.000Z - user: id: usr456 discordId: "234567890123456789" username: user_two avatar: 1234567890abcdef timestamp: 2023-05-02T10:22:35.000Z - statusCode: 401 description: Unauthorized (missing token) example: error: status: 401 message: Missing 'Authorization' header - statusCode: 403 description: Unauthorized (invalid token) example: error: status: 403 message: An invalid Authorization token was provided. - statusCode: 404 description: Bot not found example: error: status: 404 message: The bot you are looking for does not exist on our website. endpoint: /v1/bots/:id/votes method: get --- :: --- ## Bot Stats Update your bot's statistics on our website. ::api-endpoint --- body: - name: serverCount description: The amount of servers the bot is in. required: false type: string - name: shards description: An array of numbers containing the amount of servers the bot is in per shard. required: false type: string headers: - name: Authorization description: The bot's API token. required: true type: string - name: Content-Type description: application/json required: true type: string parameters: - name: ID description: ID of the bot you are looking for. required: true type: string responses: - statusCode: 200 description: Stats updated successfully example: status: 200 message: Successfully updated your bot stats. - statusCode: 400 description: Bad request (invalid data) example: error: status: 400 message: One or more shards have invalid server counts (must be between 1-3000) - statusCode: 401 description: Unauthorized (missing token) example: error: status: 401 message: Missing 'Authorization' header - statusCode: 403 description: Unauthorized (invalid token) example: error: status: 403 message: An invalid Authorization token was provided. - statusCode: 404 description: Bot not found example: error: status: 404 message: The bot you are looking for does not exist on our website. endpoint: /v1/bots/:id method: post --- :: # Users ## User Information Retrieve information about a specific user. ::api-endpoint --- parameters: - name: ID description: ID of user you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved user information example: discordId: "987654321098765432" username: example_user avatar: https://cdn.discord.com/avatars/987654321098765432/a_1234567890abcdef.png biography: This is an example user biography. contributor: false donator: false links: - type: GITHUB value: exampleuser - statusCode: 404 description: User not found example: status: 404 message: The user you are looking for does not exist on our website. endpoint: /v1/users/:id method: get --- :: # LLMs.txt ## What is LLMs.txt? LLMs.txt is a structured documentation format for large language models (LLMs). DisQ exposes LLMs.txt files so AI tools can reliably reference the public API: base URL, versioning, authorization header usage, and currently documented endpoints for Users and Bots. These files are optimized for AI consumption and contain structured information about endpoints and usage patterns already present in the DisQ documentation. ## Available routes We provide LLMs.txt routes to help AI tools access our documentation: - `/llms.txt` – Structured overview of the API (base URL, versioning, auth header requirement, key endpoints) - `/llms-full.txt` – Expanded reference with full endpoint examples and field structures ## Choosing the Right File ::note{icon="i-lucide-info"} **Most users should start with /llms.txt** – it contains the essential DisQ API information suitable for standard LLM context windows. Use `/llms-full.txt` when you need the extended endpoint examples. :: ## Important usage notes ::warning{icon="i-lucide-alert-triangle"} **@-symbol must be typed manually** – When using tools like Cursor or Windsurf, type the `@` symbol by hand in the chat interface. Copy‑pasting can prevent the tool from detecting it as a context reference. :: ## Usage with AI Tools ### Cursor Reference the DisQ LLMs.txt URLs so the AI can ground answers in the documented API. #### How to use: 1. Mention the LLMs.txt URLs when asking about an endpoint or request format 2. Add the URLs to project context using `@docs` (e.g. `@docs https://docs.disq.ink/llms.txt`) [Read more about Cursor Web and Docs Search](https://docs.cursor.com/en/context/@-symbols/@-docs){rel="nofollow"} ### Windsurf Windsurf can pull in the DisQ LLMs.txt files for API‑aware assistance. #### Using LLMs.txt with Windsurf: - Use `@docs` to reference the LLMs.txt URLs - Optionally add workspace rules pointing to them [Read more about Windsurf Web and Docs Search](https://docs.windsurf.com/windsurf/cascade/web-search){rel="nofollow"} ### Other AI Tools Any AI tool that supports LLMs.txt can use these routes to better understand the DisQ API. #### Prompt examples (ChatGPT, Claude, etc.) - "Using DisQ API documentation from {rel="nofollow"}: show how to fetch a user via GET /v1/users/\:id" - "From {rel="nofollow"}: outline the JSON body for updating bot stats with POST /v1/bots/\:id" # Users ## User Information Retrieve information about a specific user. ::api-endpoint --- parameters: - name: ID description: ID of user you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved user information example: discordId: "987654321098765432" username: example_user avatar: https://cdn.discord.com/avatars/987654321098765432/a_1234567890abcdef.png biography: This is an example user biography. contributor: false donator: false links: - type: GITHUB value: exampleuser - statusCode: 404 description: User not found example: status: 404 message: The user you are looking for does not exist on our website. endpoint: /v1/users/:id method: get --- :: # Bots ## Bot Information Gather information about a specific bot. ::api-endpoint --- parameters: - name: ID description: ID of the bot you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved bot information example: id: abc123 discordId: "876543210987654321" username: Example Bot avatar: a_1234567890abcdef tagline: A short description of this bot longDescription: A longer description with more details about the bot and its features. prefix: "!" languages: - language: id: en name: English code: en tags: - tag: id: mod name: Moderation slug: moderation owners: - discordId: "123456789012345678" username: owner_username avatar: abcdef1234567890 donator: false links: invite: https://discord.com/oauth2/authorize?client_id=876543210987654321&scope=bot&permissions=0 supportCode: abcdef website: https://example.com github: exampleuser/example-bot vanity: null approved: true analytics: _count: votes: 42 serverCount: - count: 1250 createdAt: 2023-01-15T12:00:00.000Z updatedAt: 2023-05-01T09:30:00.000Z - statusCode: 404 description: Bot not found example: error: status: 404 message: The bot you are looking for does not exist on our website. endpoint: /v1/bots/:id method: get --- :: --- ## Bot Votes Retrieve the people who voted for the bot during the current month. ::api-endpoint --- headers: - name: Authorization description: The bot's API token. required: true type: string parameters: - name: ID description: ID of the bot you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved voter information example: votes: - user: id: usr123 discordId: "123456789012345678" username: user_one avatar: abcdef1234567890 timestamp: 2023-05-01T08:45:12.000Z - user: id: usr456 discordId: "234567890123456789" username: user_two avatar: 1234567890abcdef timestamp: 2023-05-02T10:22:35.000Z - statusCode: 401 description: Unauthorized (missing token) example: error: status: 401 message: Missing 'Authorization' header - statusCode: 403 description: Unauthorized (invalid token) example: error: status: 403 message: An invalid Authorization token was provided. - statusCode: 404 description: Bot not found example: error: status: 404 message: The bot you are looking for does not exist on our website. endpoint: /v1/bots/:id/votes method: get --- :: --- ## Bot Stats Update your bot's statistics on our website. ::api-endpoint --- body: - name: serverCount description: The amount of servers the bot is in. required: false type: string - name: shards description: An array of numbers containing the amount of servers the bot is in per shard. required: false type: string headers: - name: Authorization description: The bot's API token. required: true type: string - name: Content-Type description: application/json required: true type: string parameters: - name: ID description: ID of the bot you are looking for. required: true type: string responses: - statusCode: 200 description: Stats updated successfully example: status: 200 message: Successfully updated your bot stats. - statusCode: 400 description: Bad request (invalid data) example: error: status: 400 message: One or more shards have invalid server counts (must be between 1-3000) - statusCode: 401 description: Unauthorized (missing token) example: error: status: 401 message: Missing 'Authorization' header - statusCode: 403 description: Unauthorized (invalid token) example: error: status: 403 message: An invalid Authorization token was provided. - statusCode: 404 description: Bot not found example: error: status: 404 message: The bot you are looking for does not exist on our website. endpoint: /v1/bots/:id method: post --- :: # Users ::api-endpoint --- parameters: - name: ID description: ID of user you are looking for. required: true type: string responses: - statusCode: 200 description: Successfully retrieved user information example: discordId: "987654321098765432" username: example_user avatar: https://cdn.discord.com/avatars/987654321098765432/a_1234567890abcdef.png biography: This is an example user biography. contributor: false donator: false links: - type: GITHUB value: exampleuser - statusCode: 404 description: User not found example: status: 404 message: The user you are looking for does not exist on our website. description: Retrieve information about a specific user. endpoint: /v1/users/:id method: get name: User --- :: # LLMs.txt > How to get AI tools like Cursor, Windsurf, GitHub Copilot, ChatGPT, and Claude to understand the DisQ API (base URL, versioning, authentication, and available endpoints). ## What is LLMs.txt? LLMs.txt is a structured documentation format for large language models (LLMs). DisQ exposes LLMs.txt files so AI tools can reliably reference the public API: base URL, versioning, authorization header usage, and currently documented endpoints for Users and Bots. These files are optimized for AI consumption and contain structured information about endpoints and usage patterns already present in the DisQ documentation. ## Available routes We provide LLMs.txt routes to help AI tools access our documentation: - **/llms.txt** – Structured overview of the API (base URL, versioning, auth header requirement, key endpoints) - **/llms-full.txt** – Expanded reference with full endpoint examples and field structures ## Choosing the Right File ::note{icon="i-lucide-info"} **Most users should start with /llms.txt** – it contains the essential DisQ API information suitable for standard LLM context windows. Use `/llms-full.txt` when you need the extended endpoint examples. :: ## Important usage notes ::warning{icon="i-lucide-alert-triangle"} **@-symbol must be typed manually** – When using tools like Cursor or Windsurf, type the `@` symbol by hand in the chat interface. Copy‑pasting can prevent the tool from detecting it as a context reference. :: ## Usage with AI Tools ### Cursor Reference the DisQ LLMs.txt URLs so the AI can ground answers in the documented API. #### How to use: 1. Mention the LLMs.txt URLs when asking about an endpoint or request format 2. Add the URLs to project context using `@docs` (e.g. `@docs https://docs.disq.ink/llms.txt`) [Read more about Cursor Web and Docs Search](https://docs.cursor.com/en/context/@-symbols/@-docs){rel="nofollow"} ### Windsurf Windsurf can pull in the DisQ LLMs.txt files for API‑aware assistance. #### Using LLMs.txt with Windsurf: - Use `@docs` to reference the LLMs.txt URLs - Optionally add workspace rules pointing to them [Read more about Windsurf Web and Docs Search](https://docs.windsurf.com/windsurf/cascade/web-search){rel="nofollow"} ### Other AI Tools Any AI tool that supports LLMs.txt can use these routes to better understand the DisQ API. #### Prompt examples (ChatGPT, Claude, etc.) - "Using DisQ API documentation from {rel="nofollow"}: show how to fetch a user via GET /v1/users/\:id" - "From {rel="nofollow"}: outline the JSON body for updating bot stats with POST /v1/bots/\:id"