Skip to content

The HotIMG
Upload API

One request, every link back. Upload from a script or app and receive direct, viewer, thumbnail and embed links in one predictable JSON response.

Free for members 32 MB per image File, base64 or URL
HotIMG Upload API POST /api/1/upload

Upload endpoint

POST https://hotimg.com/api/1/upload
ParameterRequiredDescription
keyYesYour personal API key
imageYesMultipart file upload, base64 string, or a URL to fetch
nameNoTitle for the image
expirationNo1h, 1d, 7d, 30d, 180d or never (default)

Upload an image with curl

curl -X POST "https://hotimg.com/api/1/upload" \
  -F "key=YOUR_API_KEY" \
  -F "[email protected]" \
  -F "expiration=never"

Upload an image with Python

import requests

resp = requests.post(
    "https://hotimg.com/api/1/upload",
    data={"key": "YOUR_API_KEY", "expiration": "never"},
    files={"image": open("photo.jpg", "rb")},
)
data = resp.json()["data"]
print(data["url"])         # direct link
print(data["url_viewer"])  # viewer page
print(data["delete_url"])  # revoke link

JSON response format

{
  "status_code": 200,
  "success": true,
  "data": {
    "id": "aB3xYz12",
    "title": "photo.jpg",
    "url": "https://hotimg.com/f/aB3xYz12.jpg",
    "url_viewer": "https://hotimg.com/i/aB3xYz12",
    "thumb": "https://hotimg.com/f/aB3xYz12/thumb.webp",
    "width": 1920, "height": 1080, "size": 384211,
    "expiration": null,
    "html_embed": "...", "bbcode": "...", "markdown": "...",
    "delete_url": "https://hotimg.com/del/aB3xYz12/…"
  }
}

Response fields

FieldTypeDescription
idstringShort public ID of the image
urlstringDirect link to the raw image file
url_viewerstringLink to the viewer page for the image
thumbstringThumbnail image URL
width, heightintPixel dimensions
sizeintFile size in bytes
expirationstring / nullISO expiry timestamp, or null if permanent
html_embed, bbcode, markdownstringReady-made embed codes
delete_urlstringOne-time URL to delete the image

Errors

Errors return a non-200 status and a JSON body: {"status_code": 401, "error": {"message": "..."}}.

StatusMeaning
400No image provided, or an invalid/oversized file
401Missing or invalid API key
403Account banned
413File exceeds the 32 MB limit
429Rate limit exceeded (120 requests/hour)

Rate limits and upload rules

  • 120 requests per hour per IP; 32 MB per image.
  • API uploads are unlisted by default - Manage visibility from your dashboard.
  • Uploads count against your 25 GB quota (Premium: unlimited).
  • The no-adult-content and no-advertising rules apply to API uploads exactly like web uploads. Violations get keys revoked and accounts banned.

Full walkthrough with automation recipes: Automate Uploads with an Image Hosting API.

Apply for API access

API keys are granted individually rather than issued on sign-up, which keeps automated abuse off the platform. Tell us what you are building and we will review it by hand, usually within a couple of days.

A couple of sentences is plenty. Vague applications get declined.

Create a free account first and we can link the approval straight to it.

Ready to automate?

Apply for access above. Once approved, your key appears in Settings.

Apply for API access