spzHubspz.lol

File conversion API

Convert files straight from your code — one endpoint, no keys.

The API is asynchronous and has three steps: submit a file, poll progress, download the result. No keys or sign-up. Rate limiting applies (20/minute;200/hour;1000/day), size up to 25 MB per file.

1. Submit a file for conversion

POST https://spz.lol/api/convertmultipart/form-data with file and target (the destination format). Returns a job_id.

curl -X POST https://spz.lol/api/convert \
  -F "file=@photo.heic" \
  -F "target=jpg"
# -> {"ok": true, "job_id": "a1b2c3..."}

2. Poll progress

GET https://spz.lol/api/progress/{job_id} — status queued / running / done / error. When done it returns a download_url.

curl https://spz.lol/api/progress/a1b2c3
# -> {"status":"done","progress":100,
#     "download_url":"/api/download/<token>.jpg","size":12345}

3. Download the result

GET https://spz.lol{download_url} — returns the ready file. Files are deleted automatically after 30 minutes.

Full example (Python)

import time, requests

BASE = "https://spz.lol"
with open("photo.heic", "rb") as f:
    r = requests.post(f"{BASE}/api/convert",
                      files={"file": f}, data={"target": "jpg"})
job = r.json()["job_id"]

while True:
    p = requests.get(f"{BASE}/api/progress/{job}").json()
    if p["status"] in ("done", "error"):
        break
    time.sleep(0.5)

if p["status"] == "done":
    out = requests.get(BASE + p["download_url"]).content
    open("photo.jpg", "wb").write(out)

Reference endpoints

For the list of target formats (target) see the formats page or /api/formats.