Riferimento API

L'API REST di ConvertFly ti permette di convertire, ottimizzare e trasformare file in modo programmatico. Crea pipeline di conversione con job e task: importa un file, elaboralo ed esporta il risultato in un'unica richiesta.

URL di basehttps://convertfly.io/api/v1

Tutti gli endpoint sono relativi a questo URL di base. Richieste e risposte usano JSON. Tutte le marche temporali sono in UTC, formato ISO 8601.

Autenticazione

Ogni richiesta deve includere una chiave API nell'intestazione Authorization. Le chiavi hanno il prefisso cvfly_sk_ e si creano dal tuo pannello.

Intestazione HTTP
Authorization: Bearer cvfly_sk_live_abc123def456...

Consiglio di sicurezza: non esporre mai le chiavi API nel codice lato client. Conservale in variabili d'ambiente ed effettua le chiamate API dal tuo server.

Ambiti delle chiavi

Le chiavi API possono essere limitate ad alcune operazioni. Una chiave creata senza un elenco di ambiti riceve quelli predefiniti.

AmbitoAccesso
job:readLeggere i job(predefinito)
job:writeCreare, annullare, riprovare ed eliminare i job e i relativi task(predefinito)
task:readLeggere i task(predefinito)
convertEseguire conversioni(predefinito)
api-key:readElencare le chiavi API
api-key:writeCreare e revocare le chiavi API
webhook:readElencare i webhook
webhook:writeCreare ed eliminare i webhook

Guida rapida

Converti un PDF in DOCX in tre passaggi: crea un job, attendi che termini, poi scarica il risultato.

1

Crea un job di conversione

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "convert": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "docx"
      },
      "export": {
        "operation": "export/url",
        "input": ["convert"]
      }
    }
  }'
JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_live_abc123...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    tasks: {
      "import-file": {
        operation: "import/url",
        url: "https://example.com/report.pdf",
      },
      convert: {
        operation: "convert",
        input: ["import-file"],
        output_format: "docx",
      },
      export: {
        operation: "export/url",
        input: ["convert"],
      },
    },
  }),
});

const job = await res.json();
console.log(job.id);     // "cmxr9k2p0..."
console.log(job.status); // "processing"
Python
import requests

resp = requests.post(
    "https://convertfly.io/api/v1/jobs",
    headers={"Authorization": "Bearer cvfly_sk_live_abc123..."},
    json={
        "tasks": {
            "import-file": {
                "operation": "import/url",
                "url": "https://example.com/report.pdf",
            },
            "convert": {
                "operation": "convert",
                "input": ["import-file"],
                "output_format": "docx",
            },
            "export": {
                "operation": "export/url",
                "input": ["convert"],
            },
        }
    },
)
job = resp.json()
print(job["id"])      # "cmxr9k2p0..."
print(job["status"])  # "processing"
2

Attendi il completamento

Interroga periodicamente lo stato del job oppure usa i webhook per ricevere notifiche in tempo reale.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_live_abc123..."
Risposta
{
  "id": "cmxr9k2p0",
  "status": "finished",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    {
      "name": "export",
      "operation": "export/url",
      "status": "finished",
      "result": {
        "files": [
          { "url": "https://files.convertfly.io/d/cmv.../result.docx?e=...&s=..." }
        ]
      }
    }
  ]
}
3

Scarica il risultato

Usa l'URL presente nel risultato del task di esportazione. I link di download sono validi per 1 ora; i file vengono eliminati 24 ore dopo il caricamento.

curl
curl -o result.docx "https://files.convertfly.io/d/..."

Job

Un job è un contenitore per uno o più task che formano una pipeline di conversione. I task di un job vengono eseguiti nell'ordine delle dipendenze: ogni task può fare riferimento al risultato di un task precedente tramite il campo input.

Il concetto di pipeline

Una pipeline tipica ha questa forma: import/url -> convert -> export/url. Puoi anche concatenare più operazioni: importazione -> conversione -> ottimizzazione -> filigrana -> esportazione.

Stati dei job

StatoDescrizione
waitingJob creato, in coda per l'elaborazione
processingAlmeno un task è in esecuzione
finishedTutti i task sono stati completati correttamente
errorUno o più task non sono riusciti

Creare un job

POST/api/v1/jobs
tagstring

Etichetta facoltativa per organizzare i job (ad es. batch-2026-04).

tasksobjectobbligatorio

Una mappa che associa i nomi dei task alle loro definizioni. I nomi dei task devono essere univoci all'interno del job.

webhook_urlstring

URL che riceve un evento job.finished o job.failed quando il job termina.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "invoice-batch",
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/invoice.pdf"
      },
      "to-png": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "png",
        "options": { "density": 300 }
      },
      "export": {
        "operation": "export/url",
        "input": ["to-png"]
      }
    }
  }'
Risposta (201 Created)
{
  "id": "cmxr9k2p0",
  "tag": "invoice-batch",
  "status": "processing",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    { "name": "import-file", "operation": "import/url", "status": "finished" },
    { "name": "to-png",      "operation": "convert",    "status": "processing" },
    { "name": "export",      "operation": "export/url", "status": "waiting" }
  ]
}

Esempio: unire più file in un solo PDF

L'operazione merge combina due o più input (PDF e/o immagini) in un unico PDF. Elenca in ordine i nomi dei task di input nell'array input.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "cover": {
        "operation": "import/url",
        "url": "https://example.com/cover.png"
      },
      "report": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "merge-all": {
        "operation": "merge",
        "input": ["cover", "report"]
      },
      "export": {
        "operation": "export/url",
        "input": ["merge-all"]
      }
    }
  }'

Esempio: acquisire un sito web

L'operazione capture-website non richiede alcun task di input: esegue il rendering di un URL pubblico in PDF, PNG o JPG.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "capture": {
        "operation": "capture-website",
        "url": "https://example.com",
        "output_format": "pdf",
        "width": 1280
      },
      "export": {
        "operation": "export/url",
        "input": ["capture"]
      }
    }
  }'

Recuperare un job

GET/api/v1/jobs/:id

Recupera i dettagli di un job e lo stato di tutti i suoi task.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Elencare i job

GET/api/v1/jobs
pageinteger

Numero di pagina, a partire da 1. Predefinito: 1.

limitinteger

Risultati per pagina, da 1 a 100. Predefinito: 20.

statusstring

Filtra per stato: WAITING, PROCESSING, FINISHED, ERROR.

tagstring

Filtra per etichetta.

curl
curl "https://convertfly.io/api/v1/jobs?status=finished&per_page=5" \
  -H "Authorization: Bearer cvfly_sk_..."
Risposta
{
  "data": [ ... ],
  "links": { "first": "?page=1&per_page=5", "last": "?page=9&per_page=5", "prev": null, "next": "?page=2&per_page=5" },
  "meta": {
    "page": 1,
    "per_page": 5,
    "total": 42
  }
}

Eliminare un job

DELETE/api/v1/jobs/:id

Elimina un job e tutti i file associati. I task in esecuzione vengono annullati. Questa azione è irreversibile.

curl
curl -X DELETE https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Attendere il completamento

GET/api/v1/jobs/:id/wait

Endpoint in long polling che resta in attesa finché il job non raggiunge uno stato finale (FINISHED o ERROR). Scade dopo 300 secondi con un 202 Accepted se il job è ancora in elaborazione.

curl
curl "https://convertfly.io/api/v1/jobs/job_7kX9mP2qR/wait?timeout=120" \
  -H "Authorization: Bearer cvfly_sk_..."

Task

I task sono i singoli passaggi di un job. Ogni task ha un nome (la chiave nell'oggetto tasks), un campo operation e, facoltativamente, un array input che fa riferimento ai nomi di task precedenti.

Campi del task

CampoTipoDescrizione
operationstringL'operazione da eseguire (vedi Operazioni)
inputstring[]Nomi dei task il cui risultato va usato come input
output_formatstringFormato di destinazione per le operazioni di conversione
optionsobjectImpostazioni specifiche dell'operazione (qualità, densità, ecc.)

Elencare i task di un job

GET/api/v1/jobs/:id/tasks
Risposta
{
  "data": [
    {
      "name": "import-file",
      "operation": "import/url",
      "status": "finished",
      "result": { "file_id": "file_Xk9m..." }
    },
    {
      "name": "convert",
      "operation": "convert",
      "status": "finished",
      "result": { "file_id": "file_Pm3n..." }
    }
  ]
}

Recuperare un task

GET/api/v1/jobs/:job_id/tasks/:task_name

Annullare un task

POST/api/v1/jobs/:job_id/tasks/:task_name/cancel

Annulla un task in esecuzione o in attesa. Vengono annullati anche i task successivi che dipendono da esso.

Ripetere un task non riuscito

POST/api/v1/jobs/:job_id/tasks/:task_name/retry

Ripete un task con stato ERROR. Se il task è a pagamento, i crediti vengono consumati di nuovo.

Caricamento dei file

Ci sono tre modi per inviare file a ConvertFly. Scegli quello più adatto al tuo caso d'uso.

Importare da URL

Il metodo più semplice. ConvertFly scarica il file da un URL accessibile pubblicamente.

Definizione del task
{
  "import-file": {
    "operation": "import/url",
    "url": "https://example.com/document.pdf",
    "filename": "document.pdf",
    "headers": {
      "Authorization": "Bearer your-external-token"
    }
  }
}

Caricamento diretto (URL prefirmato)

Per i file presenti sul tuo computer. Il processo si svolge in due passaggi: prima crei il task per ottenere un URL di caricamento prefirmato, poi invii il file a quell'URL con una richiesta PUT.

Passaggio 1: crea un job con import/upload
{
  "upload-file": {
    "operation": "import/upload",
    "filename": "photo.jpg"
  }
}
Passaggio 2: carica il file sull'URL prefirmato
# The task result will contain the presigned URL
curl -X PUT "https://files.convertfly.io/convertfly-files/..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

Importare da Base64

Per i file di piccole dimensioni (sotto i 10 MB). Incorpora il contenuto del file direttamente nella richiesta.

Definizione del task
{
  "import-file": {
    "operation": "import/base64",
    "file": "JVBERi0xLjQKJcOkw7zD...",
    "filename": "document.pdf"
  }
}
MetodoDimensione massimaIdeale per
import/url5 GBFile già disponibili online
import/upload5 GBFile locali, file di grandi dimensioni
import/base6410 MBFile piccoli, inclusi nella richiesta

Opzioni di conversione

Ogni operazione supporta opzioni specifiche. Ecco tutte le operazioni disponibili e le coppie di formati per le conversioni.

Operazioni disponibili

OperazioneDescrizioneCrediti
import/uploadCarica un file tramite URL prefirmato0
import/urlImporta un file da un URL0
import/base64Importa un file da dati base640
convertConverte da un formato all'altro1-4
optimizeComprime o ottimizza un file1
thumbnailGenera un'anteprima in miniatura1
mergeUnisce più PDF e/o immagini in un unico PDF1
watermarkAggiunge una filigrana di testo o immagine a immagini, video o PDF1
splitEstrai pagine da un PDF o dividilo in un PDF per pagina (ZIP)1
rotateRuota le pagine di un PDF di 90, 180 o 270 gradi1
resizeRidimensiona un'immagine per larghezza, altezza o percentuale, mantenendo le proporzioni1
gifTrasforma un clip video in una GIF animata (inizio, durata, fps, larghezza)2
ocrRiconosce il testo in PDF o immagini (14 lingue, le stesse della pagina OCR)3
capture-websiteAcquisisce un sito web pubblico in PDF, PNG o JPG1
metadataEstrae i metadati del file1
export/urlOttiene un URL di download firmato0
export/s3Esporta direttamente nel tuo bucket S30

Coppie di formati supportate

Conversioni più diffuse. Il formato viene rilevato automaticamente dal file, ma puoi anche impostare input_format in modo esplicito.

CategoriaFormati di inputFormati di output
Documentipdf, docx, doc, odt, rtf, txt, htmlpdf, docx, odt, rtf, txt, html
Fogli di calcoloxlsx, xls, ods, csvxlsx, ods, csv, pdf
Presentazionipptx, ppt, odppptx, odp, pdf
Immaginijpg, png, gif, bmp, tiff, webp, svg, heicjpg, png, gif, bmp, tiff, webp
Videomp4, avi, mov, mkv, webmmp4, avi, mov, mkv, webm, gif
Audiomp3, wav, ogg, flac, aac, m4amp3, wav, ogg, flac, aac

Opzioni di qualità e di elaborazione

Passale nell'oggetto options di un task di conversione.

qualityinteger

Qualità di output per i formati con perdita (1-100). Predefinito: 85.

densityinteger

DPI per la conversione da documento a immagine. Predefinito: 150.

widthinteger

Ridimensiona a questa larghezza in pixel. Mantiene le proporzioni se height è omesso.

heightinteger

Ridimensiona a questa altezza in pixel. Mantiene le proporzioni se width è omesso.

pagesstring

Intervallo di pagine per le operazioni sui documenti. Ad es. 1-5, 1,3,5, all.

Esempio: PNG di alta qualità a 300 DPI
{
  "convert-hq": {
    "operation": "convert",
    "input": ["import-file"],
    "output_format": "png",
    "options": {
      "density": 300,
      "quality": 95
    }
  }
}

Webhook

Registra degli URL webhook per ricevere notifiche in tempo reale quando lo stato di job o task cambia. Tutti i payload sono firmati con HMAC-SHA256, così puoi verificare che provengano da ConvertFly.

Creare un webhook

POST/api/v1/webhooks
urlstringobbligatorio

L'URL HTTPS che riceve gli eventi webhook.

eventsstring[]obbligatorio

Tipi di evento a cui iscriversi.

curl
curl -X POST https://convertfly.io/api/v1/webhooks \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"]
  }'
Risposta (201 Created)
{
  "data": {
    "id": "wh_Abc123...",
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"],
    "signing_secret": "whsec_9f8e7d6c5b4a...",
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Elencare i webhook

GET/api/v1/webhooks

Eliminare un webhook

DELETE/api/v1/webhooks/:id

Tipi di evento

EventoAttivazione
job.finishedTutti i task del job sono stati completati correttamente
job.failedUno o più task non sono riusciti, il job è in stato ERROR
task.finishedUn singolo task è stato completato
task.failedUn singolo task non è riuscito

Payload del webhook

POST verso il tuo URL webhook
{
  "event": "job.finished",
  "timestamp": "2026-04-03T10:31:15Z",
  "data": {
    "id": "job_7kX9mP2qR",
    "status": "finished",
    "tasks": { ... }
  }
}

Verificare le firme

Ogni richiesta webhook include due intestazioni: X-Webhook-Signature e X-Webhook-Timestamp. Verificale per assicurarti che il payload sia stato inviato da ConvertFly e non sia stato alterato.

Node.js
import crypto from "crypto";

function verifyWebhook(rawBody, signature, timestamp, secret) {
  const signedContent = timestamp + "." + rawBody;
  const expected = "v1=" + crypto
    .createHmac("sha256", secret)
    .update(signedContent)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
Python
import hmac, hashlib

def verify_webhook(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
    signed_content = f"{timestamp}.{raw_body.decode()}"
    expected = "v1=" + hmac.new(
        secret.encode(), signed_content.encode(), hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Chiavi API

Gestisci le chiavi API in modo programmatico. Puoi gestirle anche dal pannello.

Creare una chiave API

POST/api/v1/api-keys
namestringobbligatorio

Un nome descrittivo per la chiave.

scopesstring[]

Autorizzazioni da concedere. Predefinito: ["*"] (accesso completo).

Risposta (201 Created)
{
  "data": {
    "id": "key_Xk9m...",
    "name": "production-server",
    "key": "cvfly_sk_live_abc123def456...",
    "scopes": ["*"],
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Importante: la chiave API completa viene mostrata una sola volta, al momento della creazione. Conservala in modo sicuro: non potrai recuperarla in seguito.

Elencare le chiavi API

GET/api/v1/api-keys

Revocare una chiave API

DELETE/api/v1/api-keys/:id

Invalida immediatamente la chiave. Tutte le richieste che la usano restituiranno 401.

Limiti di frequenza

Le richieste API sono soggette a un limite di frequenza per chiave API, per garantire un utilizzo equo. Quando superi il limite, le richieste restituiscono 429 Too Many Requests.

Limite predefinito

Ogni chiave API consente 100 richieste all'ora. Il limite attuale e la finestra di una chiave vengono restituiti come rate_limit e rate_limit_window (in secondi) quando elenchi le tue chiavi. Contattaci se la tua integrazione ha bisogno di un limite più alto.

Intestazioni di risposta

Ogni risposta a una richiesta effettuata con una chiave API include queste intestazioni:

X-RateLimit-Limitintestazione

Numero massimo di richieste consentite nella finestra corrente.

X-RateLimit-Remainingintestazione

Richieste rimanenti nella finestra corrente.

X-RateLimit-Resetintestazione

Marca temporale Unix in cui la finestra si azzera.

Retry-Afterintestazione

Secondi da attendere prima di riprovare (solo nelle risposte 429).

Esempio di risposta 429
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743681600
Retry-After: 3600

{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit exceeded. 100 requests per 3600s allowed."
}

Errori

ConvertFly usa i codici di stato HTTP convenzionali. Tutte le risposte di errore seguono un formato coerente, con un code leggibile dalle macchine e un message leggibile dalle persone.

Formato delle risposte di errore

JSON
{
  "code": "INVALID_DATA",
  "message": "Missing required field: output_format",
  "details": {
    "field": "output_format",
    "reason": "required"
  }
}

Codici di errore

CodiceHTTPDescrizione
INVALID_DATA400Corpo della richiesta o parametri non validi
UNAUTHENTICATED401Chiave API mancante o non valida
FORBIDDEN403La chiave API non ha l'ambito richiesto per questa operazione
NOT_FOUND404La risorsa non esiste o è stata eliminata
CONFLICT409La risorsa esiste già o l'operazione è in conflitto con lo stato attuale
PAYLOAD_TOO_LARGE413Il corpo della richiesta supera la dimensione massima consentita
UNSUPPORTED_FORMAT422La conversione richiesta non è supportata
RATE_LIMIT_EXCEEDED429Limite di frequenza superato: vedi Limiti di frequenza
INSUFFICIENT_CREDITS402Crediti insufficienti per completare l'operazione
SERVER_ERROR500Errore interno del server: riprova o contatta l'assistenza
UNAVAILABLE503Servizio temporaneamente non disponibile: riprova tra un momento

Gestione degli errori

JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ tasks: { /* ... */ } }),
});

if (!res.ok) {
  const error = await res.json();
  console.error(`[${error.code}] ${error.message}`);
  // "[INVALID_DATA] Missing required field: output_format"
  return;
}

const { data: job } = await res.json();

Crediti

Ogni operazione costa un certo numero di crediti. Le operazioni di importazione ed esportazione sono gratuite. Il saldo residuo è incluso in ogni risposta API tramite l'intestazione X-Credits-Remaining.

Costo in crediti per tipo di conversione

OperazioneCostoEsempi
Importazione / EsportazioneGratuitoimport/url, import/upload, export/url, export/s3
Conversione di immagini1 creditoda jpg a png, da webp a gif, da heic a jpg
Conversione audio1 creditoda mp3 a wav, da flac a aac
Da documento a PDF1 creditoda txt a pdf, da html a pdf, da md a pdf
Da Office a PDF2 creditida docx a pdf, da pptx a pdf, da xlsx a pdf
Conversione video2 creditida mp4 a webm, da mov a mp4
Da PDF a Office4 creditida pdf a docx, da pdf a pptx
Ottimizzazione1 creditoComprimere immagini e PDF
Miniatura1 creditoGenerare un'immagine di anteprima
Unione1 creditoUnire più PDF
Filigrana1 creditoAggiungere una sovrimpressione di testo o immagine
Dividere PDF1 creditoEstrai le pagine 1-3, 7 o un file per pagina
Ruotare PDF1 creditoGira tutte le pagine o una selezione
Ridimensionare immagini1 credito1200 px di larghezza, 50 per cento
Creare GIF2 crediticlip mp4 in gif, stesso prezzo di una conversione video
Acquisizione di siti web1 creditoRendering di un URL in PDF o immagine
OCR3 creditiRendere ricercabile un PDF scansionato
Metadati1 creditoEstrarre le informazioni del file

Controllare il saldo

Ogni risposta API include l'intestazione X-Credits-Remaining con il tuo saldo attuale.

Intestazioni di risposta
HTTP/1.1 201 Created
Content-Type: application/json
X-Credits-Remaining: 9847
X-Credits-Used: 2

Quando il saldo è troppo basso per completare un job, l'API restituisce 402 con il codice di errore INSUFFICIENT_CREDITS. Ricarica i crediti dal tuo pannello di fatturazione.

Sandbox

Le chiavi sandbox ti permettono di sviluppare e testare un'integrazione dall'inizio alla fine senza spendere crediti. Crea una chiave con "sandbox": true; avrà il prefisso cf_test_ invece di cvfly_sk_. Tutto funziona come in produzione, con tre differenze.

CreditiMai addebitati. Il tuo saldo resta invariato.
Dimensione dei fileI file in ingresso sono limitati a 5 MB.
RisultatoImmagini, video e PDF riportano la filigrana “ConvertFly SANDBOX”.
Creare una chiave sandbox
curl -X POST https://convertfly.io/api/v1/api-keys \
  -H "Authorization: Bearer YOUR_LIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sandbox", "sandbox": true}'

# Response includes: "key": "cf_test_...", "is_sandbox": true

Pronto a iniziare a sviluppare?

Crea il tuo account gratuito e prova l'API con una chiave sandbox, senza costi.

I tuoi dati

Niente pubblicità né reti pubblicitarie, quindi nulla da rifiutare. Ecco cosa usiamo.

I tuoi file

Archiviati cifrati ed eliminati 24 ore dopo il caricamento.

Cookie essenziali

Sempre attivi
A cosa serveNomeDurata
Ricordare la tua linguaNEXT_LOCALEFino alla chiusura del browser
Contare la tua quota gratuitacf_free1 anno
Mantenere il tuo accessoauthjs.*30 giorni, se hai un account

Plausible, ospitato da Dizzus, senza cookie. Vediamo totali, non persone.

Fornitori: Stripe per i pagamenti, Cloudflare per il DNS e la protezione dai bot. Informativa sulla privacy