Skip to main content

Overview

Voting is central to FoN. Users vote on whether content “fucks” or “does not fuck”, and these votes determine what rises to the top.

Vote Types

Authenticated Voting

Registered users can cast votes that carry full weight:
Vote options:
  • fucks - This content fucks
  • does_not_fuck - This content does not fuck

Anonymous Voting

Unauthenticated users can also vote using browser fingerprinting:
Anonymous vote options:
  • upvote - Equivalent to “fucks”
  • downvote - Equivalent to “does not fuck”
Anonymous votes use fingerprinting to prevent vote manipulation. Stricter rate limits apply.

Vote Response

Successful votes return the vote record:

Getting Your Vote on an Upload

Check whether you’ve voted on a specific upload by passing its uploadId as a query parameter:
uploadId is required — if it’s omitted, the request returns a 400 error ("Upload ID required"). Response:
If you haven’t voted on that upload, vote is null:
This endpoint returns the current user’s vote status for a single upload — it does not return a list of all votes the user has cast.

Vote Counts

Each upload tracks vote counts: These are returned in upload responses:

Changing Votes

Users can change their vote by submitting a new vote for the same upload. The previous vote is replaced.

Rate Limits

Voting is rate limited to prevent abuse:

Shadow Banning

Admins can shadow ban users. Shadow banned users:
  • Can still vote normally
  • Their votes are recorded
  • Their votes don’t affect counts
This allows moderation without alerting bad actors.

Best Practices

Track which uploads the user has voted on to prevent redundant API calls.
When rate limited, inform the user and wait before retrying.
Authenticated votes are more trusted and less strictly rate limited.