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

# Get User

Fetch either your own profile (`@me`) or another user's public profile.

## Behavior

* `id=@me` returns your full account profile, including `apiKey`, `relayKey`, `limits`, `subscription`, `uploads`, and your settings.
* `theme` is your selected color theme. It is only returned on the `@me` profile, never on other users. It is `null` if you have not picked one. Set it with [`/theme`](/relay-reference/endpoint/theme).
* `subscription` is only returned on `@me` and reflects your current plan and lifecycle. See the Subscription block below.
* `id=<userId>` returns a public-safe profile for that user.
* `badges` is always included and follows this order: `verified`, `staff`, `partner`, `bugHunterTier`, `translator`, `plus`.
* `bugHunterTier` is an integer from `0` to `2`: `0` is no badge, `1` is Bug Hunter, `2` is Elite Bug Hunter.
* `includePosts` controls `publicUploads`.
* `includePosts` defaults to `false` for `@me` and `true` for non-self requests.
* `postsLimit` limits `publicUploads` to `1` to `50` (default `50`).
* Non-self profiles include a `blockedByYou` boolean indicating whether you have blocked that user.
* `followerCount` and `followingCount` are always included on both `@me` and non-self profiles.
* Non-self profiles include a `following` boolean indicating whether you (the requesting user) follow that user.
* If the target user has blocked **you**, the endpoint returns `403` with `"You have been blocked by this user."`.

## Examples

Fetch your own profile:

```bash theme={null}
curl -X GET "https://relay.snipp.gg/users/@me" \
  -H "relay-key: YOUR_RELAY_KEY"
```

Fetch another profile with a smaller public uploads payload:

```bash theme={null}
curl -X GET "https://relay.snipp.gg/users/USER_ID?includePosts=true&postsLimit=10" \
  -H "relay-key: YOUR_RELAY_KEY"
```

## Responses

`@me` returns your full account profile, including `apiKey`, `relayKey`, and `limits`.

```json theme={null}
{
  "user": {
    "id": "123456789012345678",
    "username": "playerone",
    "avatar": "https://i.snipp.gg/avatars/123456789012345678/avatar.png",
    "banner": "https://i.snipp.gg/banners/123456789012345678/banner.png",
    "nickname": "Player One",
    "bio": "Building things at Snipp",
    "socials": { "github": "https://github.com/playerone" },
    "plus": true,
    "enterprise": false,
    "verified": false,
    "staff": false,
    "partner": false,
    "bugHunterTier": 0,
    "translator": false,
    "suspended": false,
    "created": "2026-01-04T09:30:00Z",
    "customEmbed": null,
    "theme": "waterfall",
    "apiKey": "aB3xK9mP2qR7sT1vW4yZ6cD8fG0hJ5kL",
    "relayKey": "Zy7wV4uT1sR8qP5nM2kJ9hG6fD3bC0aX",
    "limits": {
      "plan": "plus",
      "maxFileSize": null,
      "usage": {
        "used": 5242880,
        "limit": 21474836480,
        "usedPercent": 0,
        "windowStart": "2026-05-12T00:00:00Z",
        "windowEnd": "2026-05-19T00:00:00Z",
        "resetsInSeconds": 345600
      }
    },
    "subscription": {
      "plan": "plus",
      "status": "active",
      "started_at": "2026-01-04T09:30:00Z",
      "expires_at": "2027-01-04T09:30:00Z",
      "cancel_at_period_end": false,
      "gifted": false
    },
    "followerCount": 128,
    "followingCount": 47
  }
}
```

## Subscription block

Returned only on `@me`. Describes the user's current plan and how they got it.

| Field                  | Type                               | Description                                                                                                                             |
| ---------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `plan`                 | `"free" \| "plus" \| "enterprise"` | Current effective plan.                                                                                                                 |
| `status`               | string \| null                     | `active`, `trialing`, `past_due`, `canceled`, `expired`, `incomplete`, or `gifted` for redeemed/comp'd accounts. `null` for free users. |
| `started_at`           | timestamp \| null                  | When the paid subscription began. `null` for free or gifted plans.                                                                      |
| `expires_at`           | timestamp \| null                  | When access ends. For renewing subscriptions this is the next billing date. `null` means no fixed expiry (e.g. permanent comp).         |
| `cancel_at_period_end` | boolean                            | `true` when the user has canceled but still has access until `expires_at`. Always `false` for gifted plans.                             |
| `gifted`               | boolean                            | `true` when the current plan comes from a redeemed gift code or an admin-applied comp, not a Stripe subscription.                       |

A non-self request returns a public-safe profile with `blockedByYou`, `following`, `followerCount`, `followingCount`, and (by default) `publicUploads`.

```json theme={null}
{
  "user": {
    "id": "987654321098765432",
    "username": "playertwo",
    "avatar": "https://i.snipp.gg/avatars/987654321098765432/avatar.png",
    "banner": null,
    "nickname": "Player Two",
    "bio": null,
    "socials": null,
    "plus": false,
    "enterprise": false,
    "verified": false,
    "staff": false,
    "partner": false,
    "bugHunterTier": 1,
    "translator": false,
    "created": "2026-02-18T14:00:00Z",
    "customEmbed": null,
    "blockedByYou": false,
    "following": true,
    "followerCount": 12,
    "followingCount": 30,
    "publicUploads": [
      {
        "url": "https://i.snipp.gg/987654321098765432/a1b2c3d4e5f6789012345678abcdef01.png",
        "code": "AbCd1234",
        "title": "My screenshot",
        "description": null,
        "created": "2026-04-22T18:30:00Z",
        "public": true,
        "isAlbum": false
      }
    ]
  }
}
```
