> ## 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.

# Submit Vote

Vote on an upload.

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://fucksornot.com/api/vote \
    -H "Cookie: auth-token=YOUR_JWT_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "uploadId": "550e8400-e29b-41d4-a716-446655440000",
      "vote": "fucks"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://fucksornot.com/api/vote', {
    method: 'POST',
    credentials: 'include',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      uploadId: '550e8400-e29b-41d4-a716-446655440000',
      vote: 'fucks'
    })
  });
  ```
</CodeGroup>

## Parameters

| Parameter  | Type   | Required | Description                |
| ---------- | ------ | -------- | -------------------------- |
| `uploadId` | UUID   | Yes      | The upload to vote on      |
| `vote`     | string | Yes      | `fucks` or `does_not_fuck` |

## Response

```json theme={null}
{
  "vote": {
    "voteId": "vote-uuid",
    "userId": "user-uuid",
    "uploadId": "550e8400-e29b-41d4-a716-446655440000",
    "vote": "fucks"
  }
}
```

## Changing Your Vote

To change your vote, simply submit a new vote for the same upload. Your previous vote is replaced.

## Rate Limiting

Votes are limited to **30 requests per minute** per IP address.

## Errors

| Status | Description                                           |
| ------ | ----------------------------------------------------- |
| 400    | Invalid vote value, or invalid/inaccessible upload ID |
| 401    | Not authenticated                                     |
| 429    | Rate limit exceeded                                   |
