> **For coding agents and LLMs:** This is one page from the Social Fetch docs (markdown export). For curated orientation and workflow guidance, start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for agent onboarding and crawl rules, use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for the full endpoint list with links to pages like this one, use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt); for one platform's parameters and curls, use [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt); use [`/llms.json`](https://www.socialfetch.dev/llms.json) when you need structured JSON for tool registration.

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/docs/api/v1/discord/servers/serverid/get>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/docs/api/v1/discord/servers/serverid/get.mdx>

## API base URL and authentication

- **API origin (from OpenAPI `servers`):** `https://api.socialfetch.dev`
- **Authentication:** send `x-api-key: sfk_...` on `/v1/**` and `/v2/**` routes unless the operation is explicitly anonymous (check OpenAPI `security`, the [API reference hub](https://www.socialfetch.dev/docs/api.mdx), [`/llms.txt`](https://www.socialfetch.dev/llms.txt), or [`/llms.json`](https://www.socialfetch.dev/llms.json) for each route).
- **OpenAPI JSON:** <https://www.socialfetch.dev/openapi.json>

## Recommended docs entrypoints (this site)

- [Documentation overview](https://www.socialfetch.dev/docs.mdx) — top-level orientation (markdown).
- [Quickstart](https://www.socialfetch.dev/docs/quickstart.mdx) — authenticate with `x-api-key`, validate auth with `whoami`, and understand the JSON envelope.
- [SDK](https://www.socialfetch.dev/docs/sdk.mdx) — official TypeScript SDK guide, including `SocialFetchClient`, `Result`, and `unwrap()`.
- [Capability matrix](https://www.socialfetch.dev/docs/capability-matrix.mdx) — every operation with identifiers, pagination, outcomes, media download, credits, and its SDK method. Generated from OpenAPI, so use it for route selection instead of scanning individual pages.
- [Recipes](https://www.socialfetch.dev/docs/recipes.mdx) — copyable workflows (brand monitoring, transcripts, Ad Library, creator scoring, Reddit research) with credit callouts and SDK examples.
- [Integrations](https://www.socialfetch.dev/docs/integrations.mdx) — MCP for AI clients, n8n verified node, Apify Store Actors, Make custom app, SDK, and REST API connection paths.
- [MCP product page](https://www.socialfetch.dev/mcp) — hosted MCP overview, OAuth, Skills install.
- [MCP integration](https://www.socialfetch.dev/docs/integrations/mcp.mdx) — hosted `/mcp` server, OAuth, Cursor/VS Code/Claude install snippets, 910 endpoint tools, plus docs_search/docs_read for implementation help.
- [n8n integration](https://www.socialfetch.dev/docs/integrations/n8n.mdx) — install `n8n-nodes-socialfetch`, credentials, and workflow examples.
- [Apify integration](https://www.socialfetch.dev/docs/integrations/apify.mdx) — Store Actors under @social-fetch, PPE billing, dataset export, and quick start.
- [Make integration](https://www.socialfetch.dev/docs/integrations/make.mdx) — custom app modules for Make scenarios, API key credentials, and module catalog.
- [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt) — every documented operation with a direct link to that route's agent-readable markdown page (prefer this over parsing OpenAPI).
- [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt) — per-platform endpoint files generated from OpenAPI (parameters, credits, curls).
- [`/agents.txt`](https://www.socialfetch.dev/agents.txt) — agent crawl/onboarding file with capabilities, auth rules, and allowlist.
- [`/llms.json`](https://www.socialfetch.dev/llms.json) — structured machine-readable operation inventory with parameter names, pagination, outcomes, credits, and SDK mapping.
- [API reference hub](https://www.socialfetch.dev/docs/api.mdx) — human-friendly index of operations with links into generated pages.
- [Errors](https://www.socialfetch.dev/docs/errors.mdx) — shared error envelope and HTTP status guidance.
- [Credits](https://www.socialfetch.dev/docs/credits.mdx) — metering, `402`, and planning batch jobs.
- Outcome semantics such as `found`, `not_found`, and `private` are documented in [Errors](https://www.socialfetch.dev/docs/errors.mdx) and on operation pages when present in the OpenAPI contract.

## Markdown docs convention

- Every docs page has a markdown twin: append **`.mdx`** to the docs pathname (for example `/docs/quickstart` → `/docs/quickstart.mdx`).
- Agents that send `Accept: text/markdown` on `/docs/**` HTML URLs may receive markdown directly (same URL, `Vary: Accept`).
- Published blog posts use the same convention: `/blog/{slug}` → `/blog/{slug}.mdx`, or `Accept: text/markdown` on the HTML URL (`Vary: Accept`).

---
# Get Discord server (https://www.socialfetch.dev/docs/api/v1/discord/servers/serverid/get)

## Summary

Get a Discord server's public page with its members, categories, keywords, links and announcements.

**Tags:** `Discord`

## HTTP

- **Method:** GET
- **Path:** `/v1/discord/servers/{serverId}`
- **Base URL:** `https://api.socialfetch.dev`

## Capability summary

- **SDK mapping:** `client.discord.getServer({ serverId: "267624335836053506", include: "widget" })`
- **Accepted identifiers:** `serverId` (path)
- **Pagination:** none
- **Business outcome field:** `data.lookupStatus` with values `found`, `not_found`, `restricted`

## Credits

- **Base:** 1 credit per successful lookup.
- **Maximum on success (200):** 1 credit.
- **Failed requests (`lookup_failed`, `503`):** not charged.
- **Authoritative field:** `meta.creditsCharged`.

## Authentication

- **`x-api-key`**: API key (`sfk_...`)

## Parameters

### `serverId` (path)

- **Required:** yes
- **Constraints:** type `string`; pattern: `^[0-9]{17,20}$`
- **Description:** Server id, 17 to 20 digits and at most 9223372036854775807, e.g. `267624335836053506`. A server with no public page or subscription store page returns `not_found`.

### `include` (query)

- **Required:** no
- **Constraints:** type `array`
- **Description:** `widget` adds the public guild widget summary. Default: none.

### `announcements` (query)

- **Required:** no
- **Constraints:** type `boolean`
- **Description:** Include the announcement channels for this server. Default: true.

## Responses (status codes)

- **200**: Server.
- **400**: Invalid request
- **401**: Missing or invalid API key
- **402**: Insufficient credits
- **500**: Unexpected or billing error
- **502**: Lookup could not be completed.
- **503**: Service temporarily unavailable; safe to retry with backoff.

## Response body (200)

Server.

### Field outline

- **data** (required) — type `object`. Endpoint-specific response payload.
  - **lookupStatus** (required) — type `string`; enum: found, not_found, restricted. `not_found` when the id is not a server in the public directory (the id may still be a server with no directory page).
  - **reason** (required) — type `string`; enum: not_listed, null; nullable. `not_listed` when the id has no public directory page; null when found.
  - **listed** (required) — type `boolean`. True for a directory server page; false for a subscription store page.
  - **server** (required) — type `object`; nullable. The server when found; null otherwise.
    - **id** (required) — type `string`. Server id.
    - **name** (required) — type `string`. Server name.
    - **description** (required) — type `string`; nullable. Short description shown in the directory.
    - **iconUrl** (required) — type `string`; nullable. Server icon URL.
    - **splashUrl** (required) — type `string`; nullable. Invite splash URL.
    - **discoverySplashUrl** (required) — type `string`; nullable. Discovery splash URL.
    - **bannerUrl** (required) — type `string`; nullable. Banner URL.
    - **customBannerUrl** (required) — type `string`; nullable. Custom invite banner URL, when a working image path is known.
    - **customBannerHash** (required) — type `string`; nullable. The custom invite banner hash. No image URL is available for it.
    - **members** (required) — type `integer`; nullable. Member count; live on an invite, indexed elsewhere.
    - **online** (required) — type `integer`; nullable. Online member count; live on an invite, indexed elsewhere.
    - **countsAsOf** (required) — type `string`; enum: live, index, null; nullable. Whether `members` and `online` are live or indexed.
    - **boosts** (required) — type `object`; nullable. Boost count and tier, when present.
      - **count** (required) — type `integer`; nullable. Boost count.
      - **tier** (required) — type `integer`; nullable. Boost tier.
    - **locale** (required) — type `string`; nullable. The server's preferred locale, e.g. `en-US`.
    - **verificationLevel** (required) — type `string`; enum: none, low, medium, high, very_high, unknown, null; nullable. The server's verification level.
    - **ageRestricted** (required) — type `boolean`; nullable. Whether the server is age-restricted.
    - **nsfwLevel** (required) — type `integer`; nullable. Discord's NSFW level value.
    - **vanityCode** (required) — type `string`; nullable. The server's vanity invite code, when it has one.
    - **tag** (required) — type `string`; nullable. The server tag shown on the invite card.
    - **tagBadge** (required) — type `object`; nullable. The server tag's badge, when it has one.
      - **id** (required) — type `integer`; nullable. Discord's badge id.
      - **hash** (required) — type `string`; nullable. Badge image hash.
      - **url** (required) — type `string`; nullable. Badge image URL.
      - **colors** (required) — type `object`. Badge colours as hex strings.
    - **brandColor** (required) — type `string`; nullable. The invite card's brand colour.
    - **traits** (required) — type `array`. Labels the server shows on its invite card.
      - _items:_
    - **games** (required) — type `array`. Games the invite card shows for this server.
      - _items:_
    - **features** (required) — type `array`. The server's feature flags, passed through.
      - _items:_
        - type `string`
    - **profileFeatures** (required) — type `array`. Feature flags from the invite card's profile block, when present.
      - _items:_
        - type `string`
    - **profileVisibility** (required) — type `integer`; nullable. The invite card profile visibility value, when given.
    - **flags** (required) — type `integer`; nullable. The invite's public flags value, when given.
    - **nsfwProperties** (required) — type `object`; nullable. The server's age-gate properties, passed through.
    - **keywords** (required) — type `array`. Search keywords listed for the server.
      - _items:_
        - type `string`
    - **categories** (required) — type `array`. Directory categories the server belongs to.
      - _items:_
    - **primaryCategory** (required) — type `object`; nullable. The server's primary directory category.
      - **id** (required) — type `integer`. Category id.
      - **name** (required) — type `string`; nullable. Category name; null when unknown.
      - **isPrimary** (required) — type `boolean`; nullable. True on `primaryCategory`, which is primary by definition. On a list entry, whether it is the server's primary category, or null when the page names no primary.
      - **nameLocalizations** (required) — type `object`; nullable. Localised category names, keyed by locale, passed through.
    - **createdAt** (required) — type `string`; nullable. When the server was created, ISO 8601 UTC.
    - **reasonsToJoin** (required) — type `array`. Reasons to join that the server lists.
      - _items:_
    - **socialLinks** (required) — type `array`. Social links the server lists.
      - _items:_
        - type `string`
    - **about** (required) — type `string`; nullable. The server's long about text.
    - **categoryIds** (required) — type `array`. Directory category ids the server lists.
      - _items:_
        - type `integer`
  - **invite** (required) — type `object`; nullable. The server's permanent invite.
    - **code** (required) — type `string`. The permanent invite code.
    - **url** (required) — type `string`. The invite URL.
    - **channel** (required) — type `object`; nullable. The channel the invite lands in.
      - **id** (required) — type `string`. Channel id.
      - **name** (required) — type `string`; nullable. Channel name.
  - **subscriptions** (required) — type `object`; nullable. Paid-tier data when the server has a subscription store page.
    - **storeDescription** (required) — type `string`; nullable. The store page's description.
    - **coverImage** (required) — type `object`; nullable. The store page's cover image.
      - **id** (required) — type `string`; nullable. Asset id.
      - **size** (required) — type `integer`; nullable. Asset size in bytes.
      - **mimeType** (required) — type `string`; nullable. MIME type.
      - **width** (required) — type `integer`; nullable. Width in pixels.
      - **height** (required) — type `integer`; nullable. Height in pixels.
      - **applicationId** (required) — type `string`; nullable. Application id.
    - **coverImageUrl** (required) — type `string`; nullable. Cover image URL built from the asset id, application id and the store asset path.
    - **trailerUrl** (required) — type `string`; nullable. Store page trailer URL.
    - **primaryColor** (required) — type `string`; nullable. Store page brand colour.
    - **purchaseInvite** (required) — type `object`; nullable. A second permanent invite, used for the subscription purchase flow.
      - **code** (required) — type `string`. The permanent invite code.
      - **url** (required) — type `string`. The invite URL.
      - **channel** (required) — type `object`; nullable. The channel the invite lands in.
    - **subscriberCount** (required) — type `integer`; nullable. Subscriber count; null when the owner hides it.
    - **groups** (required) — type `array`. Paid groups.
      - _items:_
    - **trials** (required) — type `array`. Free trials the subscription store offers. They apply to the whole store, so they are not attached to one tier.
      - _items:_
    - **benefitChannels** (required) — type `array`. Channels open only to subscribers.
      - _items:_
    - **benefitEmojis** (required) — type `array`. Emojis available only to subscribers.
      - _items:_
  - **announcements** (required) — type `object`; nullable. Announcement channels, or null when `announcements=false` or the page is a store page.
    - **channels** (required) — type `array`. Announcement channels for this server.
      - _items:_
  - **widget** (required) — type `object`; nullable. The widget summary when `include=widget` was asked for.
    - **enabled** (required) — type `boolean`. Whether the server's widget is enabled.
    - **server** (required) — type `object`; nullable. The server the widget names.
      - **id** (required) — type `string`. Server id.
      - **name** (required) — type `string`; nullable. Server name.
    - **online** (required) — type `integer`; nullable. The exact online count, not capped at the member sample.
    - **invite** (required) — type `object`; nullable. The temporary invite the widget shows.
      - **code** (required) — type `string`. The temporary invite code.
      - **url** (required) — type `string`. The invite URL.
      - **temporary** (required) — type `boolean`. The widget invite is temporary; its code expires within hours, not never.
    - **voiceChannels** (required) — type `array`. Public voice channels.
      - _items:_
    - **onlineSampleSize** (required) — type `integer`. Number of online members in the sample (at most 100). The members themselves are not returned.
- **meta** (required) — type `object`. Metadata describing the request and billing outcome.
  - **requestId** (required) — type `string`; minLength: 1. Unique request identifier for tracing this API call.
  - **creditsCharged** (required) — type `integer`; minimum: 0. Credits charged for this request.
  - **version** (required) — type `string`; enum: v1. Public API version that served the response.

### Example JSON (found)

```json
{
  "data": {
    "lookupStatus": "found",
    "reason": null,
    "listed": true,
    "server": {
      "id": "267624335836053506",
      "name": "Python",
      "description": "We're a large community focused around the Python programming language. We believe that anyone can learn to code.",
      "iconUrl": "https://cdn.discordapp.com/icons/267624335836053506/f4dfb709ab6c46f00116a36ba2ac9479.png?size=256",
      "splashUrl": "https://cdn.discordapp.com/discovery-splashes/267624335836053506/99f4a269f925d0c495dc2711e78e00df.jpg?size=2048",
      "discoverySplashUrl": "https://cdn.discordapp.com/discovery-splashes/267624335836053506/99f4a269f925d0c495dc2711e78e00df.jpg?size=2048",
      "bannerUrl": "https://cdn.discordapp.com/banners/267624335836053506/147377ff8a73a5f0717c249d29ee947b.webp",
      "customBannerUrl": null,
      "customBannerHash": null,
      "members": 428390,
      "online": 34852,
      "countsAsOf": "index",
      "boosts": {
        "count": 29,
        "tier": null
      },
      "locale": "en-US",
      "verificationLevel": null,
      "ageRestricted": null,
      "nsfwLevel": null,
      "vanityCode": "python",
      "tag": null,
      "tagBadge": null,
      "brandColor": null,
      "traits": [],
      "games": [],
      "features": [
        "AGE_VERIFICATION_LARGE_GUILD"
      ],
      "profileFeatures": [],
      "profileVisibility": null,
      "flags": null,
      "nsfwProperties": null,
      "keywords": [
        "coding"
      ],
      "categories": [
        {
          "id": 6,
          "name": "Education",
          "isPrimary": false,
          "nameLocalizations": null
        }
      ],
      "primaryCategory": {
        "id": 5,
        "name": "Science & Tech",
        "isPrimary": true,
        "nameLocalizations": null
      },
      "createdAt": "2017-01-08T12:03:33.883Z",
      "reasonsToJoin": [
        {
          "text": "Find and offer help with Python questions",
          "emojiName": "💪",
          "emojiId": null
        }
      ],
      "socialLinks": [
        "https://github.com/python-discord/"
      ],
      "about": "We're a large community focused around the Python programming language. We believe anyone can learn to code, and are very dedicated to helping novice developers take their first steps into the world of programming. We also attract a lot of expert developers who are seeking friendships, collaborators, and who wish to h…",
      "categoryIds": [
        6
      ]
    },
    "invite": null,
    "subscriptions": null,
    "announcements": {
      "channels": []
    },
    "widget": null
  },
  "meta": {
    "requestId": "req_1e4f8faa-116c-4539-af74-1f84f3793e98",
    "creditsCharged": 1,
    "version": "v1"
  }
}
```

### Machine-readable error codes

When an error JSON body is returned, it may include one of these `error.code` values (derived from the OpenAPI schemas for this operation; additional codes may exist at runtime):

- `bad_request`

## Error handling & retries

Interpret HTTP status codes using the descriptions below. Do not assume a JSON body unless the OpenAPI schema defines one for that status.

- **400**: Invalid request **Retry:** Fix the request; retrying the same invalid payload will not help.
- **401**: Missing or invalid API key **Retry:** Fix the API key first; retrying without changes will not help.
- **402**: Insufficient credits **Retry:** Do not retry without resolving billing/credits (retrying the same request will not help).
- **500**: Unexpected or billing error
- **502**: Lookup could not be completed. **Retry:** May be transient; a few retries with backoff are reasonable.
- **503**: Service temporarily unavailable; safe to retry with backoff. **Retry:** Usually safe to retry with exponential backoff and jitter.

### Suggested client defaults

- Send the API key using the `x-api-key` header on every request.
- On `503` (and sometimes `502`), retry with backoff; cap retries and surface a clear error to the user.
- On `402`, surface an actionable billing message rather than blind retries.

## Examples

### TypeScript SDK

```typescript
import { SocialFetchClient } from "@socialfetch/sdk";

const client = new SocialFetchClient({
  apiKey: process.env.SOCIALFETCH_API_KEY!,
});

const result = await client.discord.getServer({
  serverId: "267624335836053506",
  include: ["widget"],
});

if (!result.ok) {
  console.error(result.error);
} else {
  console.log(result.value.data);
}
```

### Node.js

```javascript
const response = await fetch(
  "https://api.socialfetch.dev/v1/discord/servers/267624335836053506?include=widget",
  {
    headers: {
      "x-api-key": "YOUR_API_KEY"
    }
  }
);

const data = await response.json();
console.log(data);
```

### cURL

```bash
curl "https://api.socialfetch.dev/v1/discord/servers/267624335836053506?include=widget" \
  -H "x-api-key: YOUR_API_KEY"
```

### Python

```python
import requests

response = requests.get(
    "https://api.socialfetch.dev/v1/discord/servers/267624335836053506?include=widget",
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()
print(data)
```