Vai al contenuto principale
TransConvert

API di TransConvert

Converti immagini e documenti in modo programmatico con un unico e semplice endpoint HTTP.

image API di conversione immagini description API di conversione documenti picture_as_pdf API di conversione PDF movie API di conversione video music_note API di conversione audio compress API di compressione immagini compress API di compressione PDF
rocket_launch

Guida rapida

Dal via al tuo primo file convertito in tre passaggi.

1

Ottieni la tua chiave API

Registrati (oppure esegui l'upgrade di un account esistente) a Basic, Lite, Pro o Team, poi genera una chiave dalla pagina del tuo account — potrai tornare a visualizzarla in qualsiasi momento.

2

Invia una richiesta

Invia il tuo file con una richiesta POST all'endpoint qui sotto come multipart/form-data, con la tua chiave nell'header Authorization e category + target impostati.

3

Ricevi il tuo file

Una risposta 200 corrisponde ai byte grezzi del file convertito — salva direttamente il corpo della risposta. Qualsiasi altra risposta è un errore JSON che spiega cosa è andato storto.

key

Autenticazione

Ogni richiesta richiede una chiave API, inviata come Bearer token nell'header Authorization.

Header
Authorization: Bearer tc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Disponibile nei piani Basic, Lite, Pro e Team. Genera una chiave dal tuo account →

Testa la tua chiave

Un modo rapido per verificare che una chiave funzioni prima di scrivere codice di integrazione vero e proprio — da solo questo non converte nulla (nessun file allegato), ma un 400 no_file invece di un 401 conferma che la chiave è valida.

curl -X POST -H "Authorization: Bearer tc_live_your_key_here" -F "category=image" https://transconvert.com/api/v1/convert.php
dns

L'endpoint

Un unico endpoint gestisce tutte le conversioni. Invia una richiesta POST multipart/form-data con il tuo file e i campi qui sotto.

POST https://transconvert.com/api/v1/convert.php

Parametri

Field Description
AuthorizationObbligatorio. "Bearer tc_live_...".
categoryObbligatorio. "image" oppure "document" — per comprimere anziché convertire, vedi Compressione qui sotto.
targetObbligatorio. Il codice del formato di output, es. "PNG", "DOCX" — vedi Formati supportati qui sotto.
fileObbligatorio. Il file da convertire (upload multipart).
pdf_modeFacoltativo, solo per la categoria image. "pages" (predefinito, rasterizza ogni pagina) oppure "extract" (estrae le immagini incorporate così come sono) — rilevante solo quando il file di origine è un PDF.
pdf_pagesFacoltativo, solo per la categoria image. "all" (predefinito) oppure "first".
pdf_qualityFacoltativo, solo per la categoria image. "normal" (predefinito, 150 DPI) oppure "high" (300 DPI).

Conversioni comuni

Un riferimento rapido per le combinazioni più diffuse — lo stesso endpoint le gestisce tutte, cambia solo la combinazione di category/target.

Source → target category target
PNG → JPGimageJPG
JPG → PNGimagePNG
HEIC → JPGimageJPG
WEBP → PNGimagePNG
JPG → PDFimagePDF
PDF → JPGimageJPG
DOCX → PDFdocumentPDF
PDF → DOCXdocumentDOCX
PPTX → PDFdocumentPDF
XLSX → PDFdocumentPDF

Risposta

In caso di successo (200): i byte grezzi del file convertito, con gli header Content-Type e Content-Disposition impostati di conseguenza. In caso di errore: un corpo JSON con la forma {"error": {"code": "...", "message": "..."}} e un codice di stato HTTP corrispondente — vedi Errori qui sotto.

Header Value
Content-TypeIl vero tipo MIME del file convertito (es. image/png, application/pdf).
Content-Dispositionattachment; filename="..." — un nome file suggerito, come in qualsiasi download di file.
Content-LengthDimensione del corpo della risposta in byte.
compress

Compressione

Riduci le dimensioni di un file senza cambiarne il formato — stesso formato in entrata e in uscita. Una coppia di categorie separata dalla conversione, image-compress e document-compress, ciascuna con le proprie opzioni qui sotto.

image-compress

Stesso formato in entrata e in uscita (JPG/PNG/WEBP/GIF) — target_percent indica quanto dovrebbe essere piccolo il risultato rispetto all'originale, non è un'impostazione di qualità fissa.

Field Description
categoryImpostalo su "image-compress".
target_percentFacoltativo, 1–100 (predefinito 60). Dimensione target come percentuale approssimativa dell'originale — numeri più bassi comprimono di più.
fileObbligatorio. JPG, PNG, WEBP o GIF.
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=image-compress" \
  -F "target_percent=50" \
  -F "file=@photo.jpg" \
  -o compressed.jpg

document-compress

PDF in entrata, PDF in uscita, tramite la ricompressione di Ghostscript — non restituisce mai un file più grande di quello caricato (torna all'originale se la ricompressione non ha aiutato).

Field Description
categoryImpostalo su "document-compress".
levelFacoltativo: "low", "medium" (predefinito), "high" oppure "none". Una compressione più alta sacrifica più qualità visiva, soprattutto su immagini/scansioni incorporate.
grayscaleFacoltativo. "1" per convertire anche in scala di grigi; ometti per i colori completi.
fileObbligatorio. Un PDF che non sia protetto da password/apertura (se lo è, usa prima Sblocca PDF sul sito).
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=document-compress" \
  -F "level=high" \
  -F "file=@report.pdf" \
  -o compressed.pdf
Header Value
X-Original-SizeLa dimensione del file caricato in byte, prima della compressione.
X-Saved-PercentUna stima approssimativa di quanto è più piccolo il risultato rispetto all'originale, come percentuale intera (può essere 0).
movie

Video e audio (asincrono)

Le conversioni video e audio possono richiedere diversi minuti, troppo a lungo per mantenere aperta una singola richiesta sincrona — per questo usano un flusso di invio e polling invece dell’endpoint qui sopra. Invia un file, ricevi subito un job_id, poi interroga lo stato finché non è completato.

Invia un job

Stessa struttura POST multipart dell’endpoint principale, su un URL diverso.

POST https://transconvert.com/api/v1/convert-async.php
Field Description
AuthorizationObbligatorio. "Bearer tc_live_...".
category«video» oppure «audio».
targetObbligatorio — ad es. «MP4», «MOV», «MP3», «WAV».
fileObbligatorio. Il file da convertire (upload multipart).
webhook_urlFacoltativo. Un URL http(s) a cui inviare (POST) il risultato del job al termine, invece di limitarsi a interrogare job-status.php. Deve risolversi in un indirizzo pubblico.
cURL
curl -X POST \
  https://transconvert.com/api/v1/convert-async.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=video" \
  -F "target=MP4" \
  -F "file=@clip.mov"

Risposta (202 Accepted)

{ "job_id": "job_242e1555d78d166807aa56502f15d118", "status": "queued" }

Interroga lo stato

Interroga questo endpoint ogni pochi secondi con il job_id ricevuto. «status» può essere queued, processing, completed o failed.

GET https://transconvert.com/api/v1/job-status.php?job_id=job_...
{
  "job_id": "job_242e1555d78d166807aa56502f15d118",
  "status": "completed",
  "category": "video",
  "target_format": "MP4",
  "created_at": "2026-08-26 19:17:47",
  "download_url": "/api/v1/job-status.php?job_id=job_...&download=1",
  "filename": "clip.mp4"
}

Webhook (facoltativo)

Se hai fornito un webhook_url all'invio, invieremo lo stesso corpo JSON una volta terminato il job — successo o fallimento — riprovando alcune volte se il tuo endpoint non risponde. job-status.php resta comunque disponibile come alternativa.

POST your webhook_url
{
  "job_id": "job_242e1555d78d166807aa56502f15d118",
  "status": "completed",
  "category": "video",
  "target_format": "MP4",
  "created_at": "2026-08-26 19:17:47",
  "download_url": "https://transconvert.com/api/v1/job-status.php?job_id=job_...&download=1",
  "filename": "clip.mp4"
}

Scarica il risultato

Quando lo stato è «completed», la risposta include un download_url — lo stesso URL di stato con &download=1 aggiunto. Richiamandolo si ottiene lo streaming dei byte grezzi del file convertito, con le stesse intestazioni di ogni altro endpoint di questa pagina. Il risultato viene eliminato nel momento in cui viene scaricato, oppure automaticamente dopo un breve periodo di conservazione se non viene mai scaricato.

scheduleI risultati dei job vengono eliminati immediatamente dopo il download, oppure automaticamente dopo un breve periodo di conservazione se non vengono mai scaricati — scaricali tempestivamente.

terminal

Esempi

La stessa richiesta in quattro linguaggi — scegli quello che corrisponde al tuo stack. Ognuno converte un file locale photo.jpg in PNG e salva il risultato.

TransConvert
curl -X POST \
  https://transconvert.com/api/v1/convert.php \
  -H "Authorization: Bearer tc_live_your_key_here" \
  -F "category=image" \
  -F "target=PNG" \
  -F "file=@photo.jpg" \
  -o converted.png
error

Errori

Ogni errore restituisce un involucro JSON con un "code" su cui il tuo codice può ramificarsi, più un "message" leggibile. Alcuni errori includono campi aggiuntivi (quota_exceeded include ad esempio "limit" e "used").

429 Too Many Requests
{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly API allowance of 5000 conversion-minutes reached.",
    "limit": 5000,
    "used": 5000
  }
}
Status & code When it happens
401 missing_keyNon è stato inviato alcun header Authorization.
401 invalid_keyLa chiave non esiste, oppure è stata revocata.
403 account_suspendedL'account proprietario di questa chiave è sospeso.
403 plan_requiredL'account è sul piano Free — l'accesso API richiede Basic, Lite, Pro o Team.
400 invalid_category"category" non era "image" né "document".
400 missing_target"target" era vuoto.
400 no_fileNon è stato inviato alcun file, oppure l'upload è fallito — il campo deve chiamarsi "file".
413 file_too_largeIl file supera la dimensione massima di caricamento del tuo piano.
429 quota_exceededLa quota mensile di minuti di conversione del piano è esaurita. Si azzera all'inizio del mese solare successivo.
429 concurrency_limitTroppe conversioni già in corso contemporaneamente per questo account (condiviso con il sito) — attendi che una finisca e riprova.
400/415/422/500/503 conversion_failedIl file stesso non è stato convertibile — "message" spiega il motivo. Il codice di stato varia in base al motivo: 400/415/422 indicano che il file o il target non funzioneranno indipendentemente da quanti tentativi fai; 500/503 indicano un problema lato server, e in particolare il 503 vale la pena riprovarlo dopo poco.
405 method_not_allowedMetodo HTTP errato — questo endpoint accetta solo richieste POST.
400 invalid_target«target» non è un formato di output supportato per quella categoria.
404 job_not_foundNon esiste alcun job con questo id per questo account (restituito anche per il job_id di un altro account — la sua esistenza non viene mai rivelata).
410 result_goneIl job è stato completato, ma il suo risultato è stato nel frattempo eliminato (i risultati vengono eliminati immediatamente dopo il download, oppure automaticamente dopo un breve periodo di conservazione).
500 storage_failedIl server non è riuscito a salvare il file caricato per l’elaborazione in background. Puoi riprovare senza problemi.

Gestione di errori e ritentativi

Basa la logica sul campo JSON "code", non sul testo di "message" — il testo può cambiare nel tempo, il code no. concurrency_limit vale la pena riprovarlo dopo pochi secondi (si libera non appena una delle tue conversioni in corso termina); quota_exceeded non si risolve da solo fino al mese successivo, quindi non riprovare in un ciclo. conversion_failed è l'unico code in cui lo stato HTTP conta ancora: un 503 è un problema temporaneo lato server che vale un breve ritentativo, mentre 400/415/422/500 indicano che quella precisa combinazione di file/target non avrà successo indipendentemente da quante volte la reinvii. Controllare la dimensione del file lato client prima del caricamento evita di sprecare una richiesta su un file_too_large già certo.

speed

Piani e limiti

L'API condivide i limiti con lo stesso piano che già usi sul sito — non c'è nulla da configurare separatamente.

bolt

Basic

bolt2000 minuti di conversione al mese

upload_fileFile fino a 2 GB

sync_alt50 richiesta/e alla volta

speed30 richieste/minuto

bolt

Lite

bolt3000 minuti di conversione al mese

upload_fileFile fino a 4 GB

sync_alt100 richiesta/e alla volta

speed60 richieste/minuto

Più popolare
workspace_premium

Pro

bolt5000 minuti di conversione al mese

upload_fileFile fino a 10 GB

sync_altRichieste illimitate contemporaneamente

speed120 richieste/minuto

group

Team

bolt10000 minuti di conversione al mese

upload_fileFile fino a 20 GB

sync_altRichieste illimitate contemporaneamente

speed240 richieste/minuto

tollCondiviso con il pool mensile di crediti del team, se ne usa uno

Quando si applica un limite al minuto, ogni risposta include le intestazioni X-RateLimit-Limit e X-RateLimit-Remaining; una risposta 429 include anche Retry-After (in secondi) — usateli per rallentare prima di raggiungere il limite, invece di reagire solo dopo un 429.

layers

Formati supportati

Esattamente lo stesso motore di conversione usato dal sito — nulla è esclusivo dell'API o del sito.

image

category: image

Accettati come origine:

JPG, PNG, GIF, WEBP, BMP, AVIF, PDF, PSD, TIFF, EPS, HEIC

Disponibili come destinazione:

JPG, PNG, GIF, WEBP, BMP, AVIF, PDF, ICO, PSD, TIFF, EPS

description

category: document

Accettati come origine:

PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, RTF, ODT, ODP, ODS, HTML

Disponibili come destinazione:

PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, RTF, ODT, ODP, ODS

compress

category: image-compress

Origine e destinazione (stesso formato in entrata e in uscita):

JPG, PNG, WEBP, GIF

compress

category: document-compress

Origine e destinazione (stesso formato in entrata e in uscita):

PDF

movie

category: video (async)

Origine e destinazione (stesso formato in entrata e in uscita):

MP4, MOV, AVI, MKV, WEBM

music_note

category: audio (async)

Origine e destinazione (stesso formato in entrata e in uscita):

MP3, WAV, OGG, AAC, FLAC, M4A, WMA, OPUS, AIFF, AMR, AU, CAF, AC3, DTS, GSM, IRCAM, MP2, TTA, VOC, W64, WV, SPX, RM

infoVideo e audio — sia la conversione che la compressione — sono per ora disponibili solo sul sito: una chiamata HTTP sincrona non è adatta a un'elaborazione che può richiedere diversi minuti.

help

Domande frequenti

L'API supporta la conversione di video o audio?

Non ancora — queste conversioni possono richiedere diversi minuti, il che si adatta male a una singola richiesta HTTP sincrona. Sono disponibili oggi sul sito; il supporto API potrebbe arrivare in futuro se un giorno nascerà una versione asincrona/basata su job dell'API.

Cosa succede alla mia chiave se passo al piano Free?

L'accesso API richiede Basic, Lite, Pro o Team. Se l'account passa a Free — per una cancellazione o per la scadenza dell'abbonamento — le chiavi esistenti smettono di funzionare immediatamente. Tornano a funzionare automaticamente se l'account torna a un piano a pagamento; non serve generarne una nuova.

Quando si azzera la mia quota mensile?

All'inizio di ogni mese solare, non alla data di fatturazione.

Esiste una modalità sandbox o di test?

Non al momento — ogni richiesta viene conteggiata sulla tua quota mensile reale. Usa file piccoli durante l'integrazione per risparmiarla.

Posso eseguire conversioni in parallelo?

Fino al limite di contemporaneità del tuo piano (vedi Piani e limiti qui sopra) — condiviso con eventuali conversioni che stai eseguendo contemporaneamente anche sul sito, non è una quota separata riservata solo all'API.

La compressione garantisce un file più piccolo?

Per document-compress, sì — non restituisce mai un PDF più grande di quello caricato; se la ricompressione di Ghostscript non ha aiutato, ricevi indietro l'originale invariato (X-Saved-Percent sarà 0). Per image-compress, target_percent è un obiettivo a cui punta l'encoder, non una garanzia assoluta — un file di origine già pesantemente compresso potrebbe non ridursi molto di più.

Pronto a iniziare?

Genera una chiave e fai la tua prima richiesta in meno di un minuto.

Ottieni la tua chiave API