ドキュメント
何がどこで動くか、そして次に来るもの。
swapfile.ioの仕組み
コンバーターとメタデータクリーナーは、File APIとcanvasを使ってすべてブラウザ内で動作します。ファイルはお使いの端末のメモリに読み込まれ、そこで処理され、そこからダウンロードされます。ブラウザがデコードできない形式(Safari以外でのHEICなど)については、サーバー側のパイプラインを提供予定です。それらのジョブは1時間以内にストレージから削除されます。
データの流れ
ローカルツールファイル → ブラウザ → ダウンロードフォルダ
サーバーツール(近日)ファイル → 署名付きアップロード → ワーカー → ダウンロードリンク → 1時間以内に自動削除
API
REST 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.操作
これらのいずれかをoperationとして渡します。受け付ける入力には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
エラー
失敗時は安定したcodeフィールドを含むRFC 9457のproblem+jsonを返します — 例:unauthorized、unsupported_format、file_too_large、quota_exceeded、rate_limited。
自分で確認する
ブラウザの開発者ツールを開き、ネットワークタブを見ながらファイルを変換してください。ファイルを運ぶリクエストは見当たらないはずです。