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

# Get Profile

Get the authenticated user's profile data including uploads, votes, and statistics.

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://fucksornot.com/api/profile?type=counts" \
    -H "Cookie: auth-token=YOUR_JWT_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://fucksornot.com/api/profile?type=counts', {
    credentials: 'include'
  });
  ```
</CodeGroup>

## Parameters

| Parameter | Type   | Description                                                                          |
| --------- | ------ | ------------------------------------------------------------------------------------ |
| `type`    | string | Data to retrieve: `uploads`, `votes`, or `counts`. Defaults to `uploads` if omitted. |

## Response

`counts` is included in the response regardless of the `type` requested.

### With `type=counts`

```json theme={null}
{
  "counts": {
    "uploads": 42,
    "votes": 156
  }
}
```

### With `type=uploads`

```json theme={null}
{
  "uploads": [
    {
      "id": "upload-uuid",
      "filename": "image.webp",
      "description": "My upload",
      "upvotes": 10,
      "downvote_count": 2,
      "created_at": "2025-01-24T12:00:00Z",
      "tags": ["funny", "memes"]
    }
  ],
  "counts": {
    "uploads": 42,
    "votes": 156
  }
}
```

### With `type=votes`

```json theme={null}
{
  "votes": [
    {
      "id": "vote-uuid",
      "upload_id": "upload-uuid",
      "vote": "fucks",
      "created_at": "2025-01-24T12:00:00Z"
    }
  ],
  "counts": {
    "uploads": 42,
    "votes": 156
  }
}
```

## Errors

| Status | Description                                                    |
| ------ | -------------------------------------------------------------- |
| 400    | Invalid `type` value (must be `uploads`, `votes`, or `counts`) |
| 401    | Not authenticated or invalid token                             |

## Caching

This endpoint is cached for **30 seconds** with private cache control.

## Use Cases

* Display user dashboard
* Show activity statistics
* List user's content and votes
