Docs

Cosa gira dove, e cosa arriva dopo.

Come funziona swapfile.io

Il convertitore e il pulitore di metadati funzionano interamente nel tuo browser usando la File API e canvas. Il tuo file viene letto in memoria sul tuo dispositivo, elaborato lì e scaricato da lì. Per i formati che un browser non può decodificare (come l'HEIC fuori da Safari) arriverà una pipeline lato server; quei lavori verranno eliminati dall'archiviazione entro un'ora.

Flusso dei dati

strumenti localifile → il tuo browser → la tua cartella download
strumenti sul server (presto)file → caricamento prefirmato → worker → link di download → eliminazione automatica ≤ 1 h

API

Converti file dal tuo codice con un'API REST. Esegue la stessa pipeline server del sito: registri un caricamento, invii i byte, avvii un lavoro di conversione e poi scarichi il risultato — il tutto autenticato con una chiave API.

Crea una chiave API nel tuo account

Autenticazione

Ogni richiesta contiene la tua chiave nell'header Authorization (Bearer), o in un header X-API-Key. Trattala come una password — consuma la quota di conversione del tuo account.

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

Convertire un file

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://…"}

Endpoint

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.

Operazioni

Passa una di queste come operazione. Gli input accettati includono JPEG, PNG, WebP, GIF, BMP, HEIC, AVIF e TIFF.

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

Limiti

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

Errori

Gli errori restituiscono un problem+json RFC 9457 con un campo code stabile — per esempio unauthorized, unsupported_format, file_too_large, quota_exceeded o rate_limited.

Verificalo di persona

Apri gli strumenti per sviluppatori del tuo browser, osserva la scheda di rete e converti un file. Vedrai che nessuna richiesta contiene il tuo file.