Skip to Content
APIFormato delle risposte ed errori

Formato delle risposte ed errori

Tutte le risposte, anche quelle di errore, sono in JSON (Content-Type: application/json).

Risorse e liste

Una risorsa singola è restituita come oggetto. Le liste sono paginate:

{ "data": [ { "id": 1 }, { "id": 2 } ], "links": { "first": "...", "last": "...", "prev": null, "next": "..." }, "meta": { "current_page": 1, "per_page": 50, "total": 132, "last_page": 3 } }
ParametroValore
per_pageElementi per pagina: predefinito 50, massimo 200
pageNumero di pagina, da 1

Tipi di dato

DatoFormatoEsempio
Data e oraISO 8601 con fuso orario2026-09-03T10:26:54+02:00
DataAAAA-MM-GG2026-09-03
ImportoOggetto con amount e currency{ "amount": 12.5, "currency": "EUR" }
PesoOggetto con value e units (KG o G){ "value": 1.5, "units": "KG" }
Misurelength, width, height, units (CM o MM){ "length": 30, "width": 20, "height": 10, "units": "CM" }
PaeseISO 3166-1 a due lettereIT

Stato della spedizione

Lo stato è sempre un oggetto con codice, chiave e descrizione:

{ "code": 5, "key": "delivered", "label": "Consegnata" }
CodiceChiaveSignificato
0, 1processingIn lavorazione
2shippedSpedita
3in_transitIn transito
4out_for_deliveryIn consegna
5deliveredConsegnata
6held_at_depotIn giacenza
7returned_to_senderResa al mittente
8undeliveredNon consegnata
9awaiting_instructionsIn attesa di istruzioni
10awaiting_collectionIn attesa di ritiro

Usa la chiave (key) nel tuo codice: è stabile e leggibile.

Errori

Ogni errore ha la stessa struttura:

{ "error": { "code": "validation_failed", "message": "The given data was invalid.", "details": { "recipient.address.postalCode": ["Il campo CAP è obbligatorio."] } } }

details è presente negli errori di validazione: ogni chiave è il percorso del campo non valido.

HTTPcodeQuando
401unauthenticatedToken mancante, scaduto o revocato
402subscription_requiredAbbonamento assente
402subscription_payment_failedPagamento dell’abbonamento non riuscito
402plan_limit_reachedLimite mensile del piano raggiunto
403insufficient_scope, account_disabled, client_role_required, forbiddenToken o utente non autorizzati
404not_foundRisorsa inesistente o di un altro cliente
405method_not_allowedMetodo HTTP non previsto per l’endpoint
409invalid_stateOperazione non più possibile, ad esempio annullare una spedizione già in transito
422validation_failedDati della richiesta non validi
422shipment_rejectedSpedizione rifiutata dalle regole della piattaforma o dal corriere; il motivo è in message
429rate_limitedTroppe richieste
502carrier_errorIl corriere o un servizio esterno non risponde
500internal_errorErrore interno

Gli errori 402 riguardano solo gli endpoint che generano un costo.

Isolamento dei dati

Ogni chiamata vede solo i dati del cliente autenticato. Una spedizione, una giacenza, una distinta o un webhook di un altro cliente rispondono 404, come se non esistessero.

Limiti di frequenza

EndpointLimite
POST /rates60 al minuto
POST /shipments30 al minuto
POST /orders30 al minuto
POST /pickups10 al minuto
POST /manifests5 al minuto
GET /delivery-points30 al minuto
GET /taric60 al minuto
GET /invoices/{id}/pdf10 al minuto
POST /webhooks/{id}/test5 al minuto

Oltre il limite la risposta è 429 rate_limited: attendi e riprova. Per il tracking usa i webhook al posto di interrogazioni ripetute.

Last updated on