API fax
Crea un fax come ospite via HTTP. Senza chiave API e senza abbonamento. Chi apre il link di stato paga su quella pagina, agli stessi price del sito.
Chiamala dal tuo server. Una risposta riuscita è racchiusa in data. Un errore contiene code e message, senza il contenitore data. L'API non invia intestazioni CORS, quindi una pagina su un altro sito non può chiamarla dal browser.
Questo sito, https://eu.faxette.com, invia fax verso UE, Regno Unito, Svizzera, Norvegia, Islanda, Liechtenstein, Monaco, Montenegro, Ucraina e Isola di Man. Per Stati Uniti e Canada, usa https://www.faxette.com/api.
In questa pagina
Carica un documento
POST /api/v1/documents
Richiedi uno slot di caricamento, poi invia i byte del file con PUT a upload_url. I byte vanno direttamente nell'archivio. Questa richiesta controlla solo i dati dichiarati sul file. Il fax viene creato in seguito usando id dello slot. Non esistono richieste per scaricare documenti o elencarli.
checksum è l'MD5 del file codificato in base64, lo stesso valore dell'intestazione Content-MD5. byte_size è la dimensione esatta in byte. content_type è uno tra application/pdf, image/jpeg, image/png, image/webp, image/heic e image/heif. L'ID dello slot è valido per 1 ora. L'URL di caricamento è valido per 5 minuti. L'archivio rifiuta un file la cui dimensione o MD5 non corrisponda allo slot.
openssl dgst -md5 -binary referral.pdf | openssl base64
wc -c referral.pdf | awk '{print $1}'
curl -s https://eu.faxette.com/api/v1/documents \
-H "Content-Type: application/json" \
-d '{"filename":"referral.pdf","byte_size":248113,"checksum":"gbgEgwqIGW9JMTqqgYW+xw==","content_type":"application/pdf"}'
201, con lo slot.
{
"data": {
"type": "Document",
"id": "SIGNED_ID",
"upload_url": "https://example.r2.cloudflarestorage.com/faxette/...",
"upload_headers": {
"Content-Type": "application/pdf",
"Content-MD5": "gbgEgwqIGW9JMTqqgYW+xw==",
"Content-Disposition": "inline; filename=\"referral.pdf\"; filename*=UTF-8''referral.pdf"
}
}
}
Invia i byte grezzi con PUT a upload_url, includendo tutte le intestazioni in upload_headers. Copia i valori dalla risposta. $UPLOAD_URL qui sotto rappresenta upload_url.
curl -X PUT --data-binary @referral.pdf \
-H "Content-Type: application/pdf" \
-H "Content-MD5: gbgEgwqIGW9JMTqqgYW+xw==" \
-H "Content-Disposition: inline; filename=\"referral.pdf\"; filename*=UTF-8''referral.pdf" \
"$UPLOAD_URL"
Crea un fax
POST /api/v1/faxes
Creare un fax non addebita una carta. La risposta include token una sola volta. Salvalo: non verrà restituito di nuovo. Interroga GET /api/v1/faxes/:id finché status è documents_ready e checkout_available è true, poi indirizza la persona a status_url. Lì controlla numero di fax, documenti e prezzo e paga. Il pagamento parte dal pulsante Paga su quella pagina. Un link che avviasse il pagamento verrebbe aperto dalle anteprime delle app di chat, quindi non esiste un endpoint per il pagamento.
Inviare questa richiesta due volte crea due fax. Non esiste una chiave di idempotenza.
Con gli ID dei documenti
documents contiene gli ID degli slot, nell'ordine di invio. Un ID già associato a un fax non può essere usato per un altro. Carica di nuovo il file.
curl -s https://eu.faxette.com/api/v1/faxes \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","fax_number":"+442079460958","documents":["SIGNED_ID"]}'
Con i file in un'unica richiesta
Invia documents[] come file multipart, nell'ordine del fax. I byte passano attraverso questo server, quindi per un file grande è preferibile uno slot di caricamento. Il tipo di contenuto deve essere uno dei tipi elencati sopra. type= lo imposta quando il nome del file non lo determina.
curl -s https://eu.faxette.com/api/v1/faxes \
-F "[email protected]" \
-F "fax_number=+442079460958" \
-F "documents[][email protected];type=application/pdf" \
-F "documents[][email protected];type=image/jpeg"
Una bozza vuota
Ometti documents. Nella risposta, status è draft e la persona aggiunge i file sulla pagina di stato.
curl -s https://eu.faxette.com/api/v1/faxes \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","fax_number":"+442079460958"}'
Campi
| Campo | Cosa inviare |
|---|---|
| Obbligatorio. L'indirizzo a cui inviamo ricevuta e aggiornamenti. Deve poter ricevere email. Gli indirizzi temporanei vengono rifiutati. | |
| fax_number |
Obbligatorio.
Includi il prefisso internazionale, come +442079460958.
I numeri a tariffa maggiorata vengono rifiutati. Vengono rifiutati anche i numeri fuori dai paesi raggiunti da questo sito.
|
| documents | Facoltativo. ID degli slot o file multipart. Fino a 10 file, ciascuno di massimo 20 MB (20.971.520 byte). |
201, con il fax e il suo token. Gli altri campi sono null finché il fax non avanza.
{
"data": {
"type": "Fax",
"id": "k3n8q0w1x4y7",
"status": "processing_documents",
"fax_number": "+442079460958",
"page_count": null,
"retries_remaining": 2,
"next_attempt_at": null,
"resend_by": null,
"updated_at": "2026-10-27T16:04:00.000Z",
"status_url": "https://eu.faxette.com/f/k3n8q0w1x4y7?token=exampletoken",
"checkout_available": false,
"price": null,
"payment": null,
"attempt": 1,
"max_attempts": 3,
"document_errors": [],
"failure_reason": null,
"token": "exampletoken"
}
}
Dopo il conteggio delle pagine, questi campi appaiono così. Su questo sito currency è eur.
{
"status": "documents_ready",
"page_count": 3,
"checkout_available": true,
"price": { "amount_cents": 500, "currency": "eur" }
}
Leggi un fax
GET /api/v1/faxes/:id?token=
Restituisce lo stesso oggetto della creazione, senza token. La risposta non include mai documenti o nomi dei file. Interrogalo mentre status è processing_documents. document_errors indica quale file correggere in base alla sua posizione nel fax, a partire da 1.
curl -s "https://eu.faxette.com/api/v1/faxes/k3n8q0w1x4y7?token=exampletoken"
{
"document_errors": [
{
"reason": "password_protected",
"position": 2,
"message": "Document 2 is locked with a password. Open it, save or print it as a new PDF without the password, then upload that copy."
}
]
}
Sostituisci i documenti
PATCH /api/v1/faxes/:id/documents?token=
documents è l'elenco completo, nell'ordine del fax. Per conservare un file, invia di nuovo l'ID del suo slot. Per rimuoverlo, omettilo. I file rimossi vengono eliminati e le pagine vengono contate di nuovo. Funziona mentre status è draft, processing_documents o documents_ready. Dopo l'avvio del pagamento, i file non sono più modificabili. Crea un nuovo fax per cambiarli. Gli ID degli slot sono validi per 1 ora e non sono inclusi nella risposta del fax, quindi conserva gli ID caricati.
curl -s -X PATCH "https://eu.faxette.com/api/v1/faxes/k3n8q0w1x4y7/documents?token=exampletoken" \
-H "Content-Type: application/json" \
-d '{"documents":["SIGNED_ID","ANOTHER_ID"]}'
200, con il fax. status torna a processing_documents.
Invia di nuovo
POST /api/v1/faxes/:id/resend?token=
Un fax non riuscito può essere inviato di nuovo gratuitamente mentre l'importo è ancora trattenuto sulla carta. resend_by indica la fine di questo periodo. retries_remaining deve essere maggiore di 0; parte da 2. Un fax con failure_reason pari a our_side non può essere inviato di nuovo. L'importo viene sbloccato subito.
fax_number è facoltativo. Omettilo o invialo vuoto per usare lo stesso numero. Un numero senza prefisso internazionale viene interpretato nel paese del numero attuale del fax.
curl -s -X POST "https://eu.faxette.com/api/v1/faxes/k3n8q0w1x4y7/resend?token=exampletoken" \
-H "Content-Type: application/json" \
-d '{"fax_number":"+442079460018"}'
200, con il fax. status è scheduled.
{
"status": "failed",
"failure_reason": "temporary",
"retries_remaining": 2,
"resend_by": "2026-10-29T16:04:00.000Z",
"payment": { "status": "authorized", "amount_cents": 605, "tax_cents": 105, "currency": "eur" }
}
L'oggetto fax
| Campo | Tipo | Significato |
|---|---|---|
| type | string | Sempre "Fax". |
| id | string | 12 lettere minuscole o cifre. |
| status | string | Lo stato del fax. Vedi la tabella degli stati. |
| fax_number | string | E.164, come +442079460958. |
| page_count | integer o null | Null fino al conteggio delle pagine. |
| retries_remaining | integer | Nuovi invii a disposizione del cliente. Parte da 2. I tentativi per linea occupata non lo consumano. |
| next_attempt_at | time o null | Quando verrà richiamata una linea occupata. |
| resend_by | time o null | Quando un fax non riuscito non potrà più essere inviato di nuovo e l'importo verrà sbloccato. |
| updated_at | time | Quando il fax è stato modificato l'ultima volta. |
| status_url | string | La pagina su cui il mittente paga. Contiene il token. |
| checkout_available | boolean | True quando quella pagina può accettare il pagamento. |
| price | object o null | Prima delle imposte: amount_cents e currency. Null fino al conteggio delle pagine. Le pagine aggiuntive sono già incluse. |
| payment | object o null | Null finché l'importo non viene trattenuto sulla carta o prelevato dal credito. Poi status, method (card o credit), amount_cents, tax_cents e currency. |
| attempt | integer | Il tentativo di chiamata di questo invio, da 1 a max_attempts. |
| max_attempts | integer | Sempre 3. |
| document_errors | array | Cosa correggere prima di poter inviare il fax. Vuoto se non ci sono problemi. |
| failure_reason | string o null | Impostato quando status è failed. |
| token | string | Solo alla creazione. Una stringa opaca. Salvala. |
status
| status | Significato |
|---|---|
| draft | Mancano dei file o un file deve essere corretto. Vedi document_errors. |
| processing_documents | Conteggio delle pagine. |
| documents_ready | Prezzo calcolato. La pagina di stato può accettare il pagamento. |
| awaiting_payment | Il pagamento è stato avviato. |
| scheduled | Pagato e in attesa di invio. Per un nuovo tentativo dopo linea occupata, viene impostato next_attempt_at. |
| sending | In linea. |
| delivered | L'apparecchio del destinatario ha confermato la consegna. La carta viene addebitata. |
| failed | Vedi failure_reason. L'importo resta trattenuto sulla carta quando il fax può essere inviato di nuovo. |
| canceled | Non pagato in tempo. I file vengono eliminati. |
Una linea occupata viene richiamata più tardi. Queste chiamate sono attempt di max_attempts. Sono separate da un nuovo invio richiesto dal cliente.
payment
payment.status è authorized mentre l'importo è trattenuto sulla carta,
paid quando il fax è consegnato e l'importo trattenuto viene addebitato,
canceled quando l'importo trattenuto viene sbloccato, oppure refunded se l'addebito è stato rimborsato.
amount_cents è l'importo trattenuto o addebitato sulla carta, imposte incluse.
Su questo sito, al pagamento viene aggiunta l'IVA. tax_cents è quell'IVA. Gli importi dell'esempio rappresentano un singolo caso. L'IVA dipende dal paese del mittente.
price resta l'importo prima delle imposte.
failure_reason
Null se status non è failed.
| temporary | La linea era occupata, non ha risposto o ha interrotto la chiamata dopo 3 tentativi. Il fax può essere inviato di nuovo. |
| wrong_number | Il numero non ha raggiunto un apparecchio fax. Invia di nuovo al numero corretto. |
| our_side | Si è verificato un errore del nostro servizio. L'importo viene sbloccato e il fax non può essere inviato di nuovo. |
document_errors
Ogni elemento contiene reason, position e message. position è la posizione del documento nel fax, oppure null se il problema riguarda l'intero fax. message è la frase da mostrare alla persona. Gli stessi problemi possono essere restituiti anche come validation_failed durante la creazione, prima che esista un fax.
| password_protected | Il PDF ha una password. |
| unreadable_pdf | Non è stato possibile aprire il PDF. |
| unreadable_image | Non è stato possibile aprire l'immagine. |
| unsupported_type | Non è un PDF o una foto che possiamo inviare via fax. |
| image_too_large | Supera 50 megapixel. |
| multi_page_image | Un file immagine con più pagine. Salvalo come PDF. |
| too_many_pages | Supera 200 pagine. |
| too_many_documents | Supera 10 file. |
| document_too_large | Un file supera 20 MB. |
| no_documents | Il fax non contiene file. |
| build_failed | Non è stato possibile preparare il fax. Carica di nuovo i file. |
Errori
message è una frase. Usa code per distinguere i casi: resta stabile.
{
"code": "validation_failed",
"message": "Fax number is in a country we can't fax to yet."
}
| code | Stato | Quando |
|---|---|---|
| validation_failed | 422 | Un campo manca o è stato rifiutato. message è una frase. |
| unauthorized | 401 | Una richiesta che richiede un token è stata inviata senza token. |
| not_found | 404 | Fax sconosciuto o token non corrispondente. I due casi hanno la stessa risposta. |
| rate_limited | 429 | Troppe richieste. Attendi prima di inviarne altre. |
Limiti
- 10 documenti, 20 MB ciascuno, 200 pagine, 50 megapixel per immagine.
Per Claude, ChatGPT e altri assistenti, Vedi il server MCP →