API асинхронный и состоит из трёх шагов: отправляете файл, опрашиваете прогресс, скачиваете результат. Ключи и регистрация не нужны. Действует ограничение частоты запросов (20/minute;200/hour;1000/day), размер — до 25 МБ на файл.
1. Отправить файл на конвертацию
POST https://spz.lol/api/convert — multipart/form-data с полями
file и target (целевой формат). Возвращает job_id.
curl -X POST https://spz.lol/api/convert \
-F "file=@photo.heic" \
-F "target=jpg"
# -> {"ok": true, "job_id": "a1b2c3..."}
2. Опросить прогресс
GET https://spz.lol/api/progress/{job_id} — статус
queued / running / done / error. По готовности возвращает ссылку
download_url.
curl https://spz.lol/api/progress/a1b2c3
# -> {"status":"done","progress":100,
# "download_url":"/api/download/<token>.jpg","size":12345}
3. Скачать результат
GET https://spz.lol{download_url} — отдаёт готовый файл. Файлы удаляются
автоматически через 30 минут.
Полный пример (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)
Справочные эндпоинты
GET /api/formats— каталог поддерживаемых форматов и целей.GET /api/limits— текущие лимиты (размер, частота, время жизни файла).
Список целевых форматов (target) смотрите на странице
форматов или в /api/formats.