Clone
2
Api
Kibi Kelburton edited this page 2026-05-23 20:42:21 +00:00

f0ckm Upload API Documentation

This document describes how to programmatically upload files to the f0ckm instance using the API Key system.


Authentication

All API uploads require authentication via a custom header.

To authorize your request, include the X-Api-Key header with your personal API key. You can generate or revoke your API key under the Settings panel on the web interface.

X-Api-Key: your_64_character_hex_api_key_here

Endpoint: POST /api/v2/upload

Upload a file along with associated metadata.

  • URL: /api/v2/upload
  • Method: POST
  • Content-Type: multipart/form-data

Request Parameters (Form Fields)

Parameter Type Required Description
file File (Binary) Yes The file to be uploaded.
rating String Conditional Must be one of: sfw, nsfw, or nsfl. Required unless is_shitpost mode is active and the server allows it.
tags String Conditional A comma-separated list of tags (e.g. cats, funny, video). Tags like sfw, nsfw, or nsfl should not be included here; use the rating parameter instead. Required depending on server tag requirements.
comment String No An optional description or first comment to attach to the upload.
is_oc String / Number No Set to true or 1 to mark the upload as Original Content (OC).
is_shitpost String / Number No Set to true or 1 to bypass standard tagging rules (if shitpost mode is allowed/enabled on the server).

Examples

1. Simple cURL Example

A standard SFW upload with tags and a comment:

curl -X POST https://yourdomain.com/api/v2/upload \
  -H "X-Api-Key: 3c25f45bc5191610599ed3e83a62aa8eee92e013e432c097825cf312fe7a5d7e" \
  -F "file=@/path/to/cat.jpg" \
  -F "rating=sfw" \
  -F "tags=cat, cute, feline" \
  -F "comment=Look at this sleepy kitten!" \
  -F "is_oc=1"

2. Shitpost Mode Upload (Optional Tags & Rating)

If the server has shitpost_mode enabled or you specify is_shitpost=1, you can upload with fewer restrictions (or omit tags/rating depending on configuration):

curl -X POST https://yourdomain.com/api/v2/upload \
  -H "X-Api-Key: 3c25f45bc5191610599ed3e83a62aa8eee92e013e432c097825cf312fe7a5d7e" \
  -F "file=@/path/to/meme.png" \
  -F "is_shitpost=1" \
  -F "comment=low quality meme"

Response Formats

Success Response (Live Upload)

When manual approval is not required, the upload is live immediately:

{
  "success": true,
  "msg": "Upload successful! Your upload is now live.",
  "itemid": 12,
  "manual_approval": false,
  "redirect": "/12",
  "url": "https://yourdomain.com/12"
}

Success Response (Pending Approval)

When administrative manual approval is enabled, the item is queued:

{
  "success": true,
  "msg": "Upload queued for manual approval.",
  "itemid": 13,
  "manual_approval": true,
  "redirect": null,
  "url": "https://yourdomain.com/"
}

Error Responses

Missing File

{
  "success": false,
  "msg": "No file provided"
}

Missing/Invalid Rating

{
  "success": false,
  "msg": "Rating (sfw/nsfw/nsfl) is required"
}

Missing Tags (when minimum tag limit is unmet)

{
  "success": false,
  "msg": "At least 3 tags are required"
}

Invalid/Banned API Key

{
  "success": false,
  "msg": "Invalid or inactive API key"
}