Документация

Что где работает и что появится дальше.

Как работает swapfile.io

Конвертер и очистка метаданных работают полностью в вашем браузере, используя File API и canvas. Ваш файл читается в память на вашем устройстве, обрабатывается там же и оттуда же скачивается. Для форматов, которые браузер не может декодировать (например, HEIC вне Safari), готовится серверный конвейер; эти задания будут удаляться из хранилища в течение часа.

Поток данных

локальные инструментыфайл → ваш браузер → папка загрузок
серверные инструменты (скоро)файл → предподписанная загрузка → воркер → ссылка на скачивание → автоудаление ≤ 1ч

API

Конвертируйте файлы из своего кода через REST API. Он использует тот же серверный конвейер, что и сайт: вы регистрируете загрузку, отправляете байты, запускаете задание конвертации, затем скачиваете результат — всё с аутентификацией по API-ключу.

Создайте API-ключ в своём аккаунте

Аутентификация

Каждый запрос несёт ваш ключ в заголовке Authorization (Bearer) или в заголовке X-API-Key. Обращайтесь с ним как с паролем — он расходует квоту конвертаций вашего аккаунта.

https://api.swapfile.ioLive
curl https://api.swapfile.io/v1/jobs/{id} \
    -H "Authorization: Bearer sf_live_..."

Конвертация файла

heic → jpeg
# 1 · register the upload → presigned URL
curl -X POST https://api.swapfile.io/v1/uploads \
    -H "Authorization: Bearer sf_live_..." \
    -H "Content-Type: application/json" \
    -d '{"size": 48213}'
{"file_id":"9f2c…","upload_url":"https://…"}

# 2 · send the raw bytes to that URL
curl -X PUT --upload-file photo.heic "$UPLOAD_URL"

# 3 · start the conversion
curl -X POST https://api.swapfile.io/v1/jobs \
    -H "Authorization: Bearer sf_live_..." \
    -H "Content-Type: application/json" \
    -d '{"file_id":"9f2c…","operation":"convert:jpeg","params":{"quality":"82"}}'
→ 202 {"id":"7ab1…","status":"queued"}

# 4 · poll until done, then download
curl https://api.swapfile.io/v1/jobs/7ab1… \
    -H "Authorization: Bearer sf_live_..."
{"status":"done","download_url":"https://…"}

Эндпоинты

POST/v1/uploadsRegister an upload; returns a presigned PUT URL.
PUT{upload_url}Send the raw file bytes (max 100 MB).
POST/v1/jobsStart a conversion job for an uploaded file.
GET/v1/jobs/{id}Job status; includes download_url once done.
DELETE/v1/jobs/{id}Delete the file and job immediately.

Операции

Передайте одну из них как операцию. Принимаемые входные форматы: JPEG, PNG, WebP, GIF, BMP, HEIC, AVIF и TIFF.

convert:jpeg→ JPEG · params: quality (1–100)
convert:png→ PNG (lossless)
convert:webp→ WebP · params: quality (1–100)

Лимиты

  • 100 MB max upload
  • 30 conversions / day (free)
  • 60 requests / minute per key
  • Files auto-deleted within 1 hour

Ошибки

Сбои возвращают problem+json по RFC 9457 со стабильным полем code — например unauthorized, unsupported_format, file_too_large, quota_exceeded или rate_limited.

Проверьте сами

Откройте инструменты разработчика в браузере, следите за вкладкой сети и конвертируйте файл. Вы не увидите ни одного запроса, несущего ваш файл.