Skip to main content

Overview

Uploads are the core content type in FoN. Users can upload images or submit links for the community to vote on.

Upload Types

FoN supports three types of uploads:

Image Upload

Upload an image file directly to FoN. Supported formats: JPEG, PNG, GIF, WebP Size limit: 10 MB
curl -X POST https://api.fucksornot.com/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "upload_type=image" \
  -F "description=Check out this gadget" \
  -F "file=@/path/to/image.jpg"

Image URL

Submit a URL to an image hosted elsewhere. FoN will fetch and process the image.
curl -X POST https://api.fucksornot.com/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "upload_type=image_url" \
  -F "description=Cool find from the web" \
  -F "image_url=https://example.com/image.jpg"
Submit a link to external content. FoN supports rich embeds for popular platforms. Supported platforms:
  • Bluesky
  • Instagram
  • Threads
  • YouTube
  • Tumblr
  • Spotify
curl -X POST https://api.fucksornot.com/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "upload_type=link" \
  -F "description=Great video" \
  -F "external_url=https://youtube.com/watch?v=..."

Upload Properties

PropertyTypeDescription
idUUIDUnique identifier
user_idUUIDOwner’s user ID
filenamestringStored filename (images only)
original_namestringOriginal filename
descriptionstringUser-provided description (max 500 chars)
upload_typestringimage or link
external_urlstringURL for links
upvotesintegerNumber of “fucks” votes
downvote_countintegerNumber of “does not fuck” votes
is_privatebooleanPrivacy status
tagsarrayAssociated tags
created_attimestampCreation time

Duplicate Detection

FoN automatically detects duplicate image uploads using content hashing. If you upload an image that already exists, you’ll receive:
{
  "duplicate": true,
  "existingUploadId": "uuid-of-existing-upload",
  "message": "This image has already been uploaded"
}

Image Processing

Uploaded images are automatically:
  1. Validated - Checked for supported format and size
  2. Analyzed - Scanned for content (human detection)
  3. Optimized - Converted to efficient formats
  4. Thumbnailed - Generated preview versions

Privacy

Uploads can be set as private:
curl -X PATCH https://api.fucksornot.com/api/upload/UPLOAD_ID/privacy \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"is_private": true}'
Private uploads:
  • Don’t appear in public feeds
  • Only visible to the owner and admins
  • Still accessible via direct link (if you know the ID)

Tags

Add tags to help categorize your upload:
curl -X POST https://api.fucksornot.com/api/v1/upload \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "upload_type=image" \
  -F "description=My upload" \
  -F "tags=gadget,tech,cool" \
  -F "file=@image.jpg"
Tag limits:
  • Maximum 10 tags per upload
  • Tags are comma-separated

Rate Limits

Uploads are rate limited to 20 per hour per user to prevent abuse.

Deleting Uploads

Users can delete their own uploads:
curl -X DELETE https://api.fucksornot.com/api/upload/UPLOAD_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
Deletion is permanent and cannot be undone.