Benvenuto nella Documentazione Quote3D! ⏳

Concetti Fondamentali

Questa pagina introduce le idee e i modelli fondamentali che alimentano la piattaforma. Comprendere questi concetti ti aiuterà a sfruttare al meglio l'API e a creare integrazioni robuste per i workflow di stampa 3D.

Percorso base API

Per le chiamate API esterne, invia le richieste direttamente a https://api.quote3d.com/v2/... (ad esempio, GET https://api.quote3d.com/v2/user).

Nel tuo software, imposta https://api.quote3d.com come host API/URL base e chiama i percorsi v2 come /v2/user, /v2/file e /v2/quotes.

1. Autenticazione e Sicurezza

Tutti gli endpoint API richiedono l'autenticazione tramite il tuo token API Quote3D. Per le chiamate esterne, utilizza la route di base https://api.quote3d.com/v2. Inviatelo come Authorization: Bearer <token> o X-API-Token. Genera i token dalla tua dashboard Quote3D e mantienili segreti.

Promemoria: Mantieni i tuoi token API al sicuro. Non condividerli pubblicamente né aggiungerli al controllo di versione.

2. Gestione Account

Gestisci il tuo account, i caricamenti e le statistiche di utilizzo tramite endpoint dedicati:

  • GET /v2/user Recupera i dettagli del tuo account
  • GET /v2/user/uploads Elenca tutti i file che hai caricato sul tuo account. Questi sono elencati dal più recente al più vecchio.
  • GET /v2/quota Ottieni i tuoi limiti di quota correnti e l'utilizzo per preventivi e archiviazione
  • GET /v2/usage Ottieni analisi dettagliate sull'utilizzo, incluse statistiche sugli endpoint, utilizzo dei materiali e tendenze basate sul tempo

3. Gestione file

Carica, scarica e gestisci i tuoi file di modelli 3D (formati STL, 3MF, OBJ):

  • Ottieni un upload_id temporaneo per caricare un nuovo file tramite la route di upload pubblico.: GET /v2/file/upload-id - Ottieni un upload_id temporaneo per caricare un nuovo file tramite la route di upload pubblico.
  • Questa route NON richiede autenticazione. Utilizzala sul tuo client per caricare direttamente i file nel nostro storage.: POST /v2/file/public/{upload_id} - Questa route NON richiede autenticazione. Utilizzala sul tuo client per caricare direttamente i file nel nostro storage.

    L'utilizzo della route di Upload Pubblico ti permette di evitare di instradare file di grandi dimensioni attraverso il tuo server backend. Questo previene l'esposizione del tuo token API e riduce il carico del server.

  • Carica un file dal tuo server (richiede autenticazione, utilizzalo quando vuoi caricare dal tuo backend): POST /v2/fileCarica un file dal tuo server (richiede autenticazione, utilizzalo quando vuoi caricare dal tuo backend)
  • Scarica un file utilizzando il suo file_id: GET /v2/file/{file_id}Scarica un file utilizzando il suo file_id
  • Elimina un file di cui non hai più bisogno: DELETE /v2/file/{file_id}Elimina un file di cui non hai più bisogno

4. Informazioni sulla parte e analisi tecnica

Verifica se i tuoi modelli sono stampabili, ottieni le dimensioni della parte e metriche tecniche avanzate:

  • POST /v2/printability/{file_id} Analisi Istantanea – Verifica misure, volume, area superficiale e integrità geometrica (bordi aperti/non-manifold) prima di generare un preventivo.

Quote3D va oltre i semplici controlli dimensionali; analizza l'integrità manifold del modello e valuta il rischio di adesione al piano, critico per la stampa 3D. Queste metriche sono fornite sia nelle risposte Printability che Quote.

5. Operazioni di Preventivo

Genera preventivi istantanei per le tue stampe 3D e gestisci la cronologia dei preventivi:

  • Avvia il calcolo asincrono del preventivo per un modello 3D. Restituisce un ID lavoro; utilizza l'endpoint jobs per recuperare il risultato completato.: POST /v2/file/quote/{file_id}Avvia il calcolo asincrono del preventivo per un modello 3D. Restituisce un ID lavoro; utilizza l'endpoint jobs per recuperare il risultato completato.
  • Endpoint asincrono alternativo per il preventivo. Restituisce un ID lavoro che puoi utilizzare per controllare lo stato e recuperare il risultato completato.: POST /v2/file/quote/{file_id}/asyncEndpoint asincrono alternativo per il preventivo. Restituisce un ID lavoro che puoi utilizzare per controllare lo stato e recuperare il risultato completato.
  • Controlla lo stato di un lavoro di preventivo asincrono. Restituisce la percentuale di avanzamento e lo stato di completamento.: GET /v2/jobs/{job_id}Controlla lo stato di un lavoro di preventivo asincrono. Restituisce la percentuale di avanzamento e lo stato di completamento.
  • Recupera tutta la tua cronologia dei preventivi con supporto per la paginazione: GET /v2/quotesRecupera tutta la tua cronologia dei preventivi con supporto per la paginazione
  • Ottieni informazioni dettagliate su un preventivo specifico: GET /v2/quotes/{quote_id}Ottieni informazioni dettagliate su un preventivo specifico
  • Rimuovi un preventivo dalla tua cronologia: DELETE /v2/quotes/{quote_id}Rimuovi un preventivo dalla tua cronologia

Workflow asincrono: POST /v2/file/quote/{file_id} restituisce innanzitutto un ID lavoro. Utilizzare GET /v2/jobs/{job_id} per il risultato compatto completato e GET /v2/quotes/{quote_id} per il payload di preventivo dettagliato memorizzato quando disponibile.

Parametri di Richiesta Preventivo

Quando generi un preventivo, puoi fornire configurazioni personalizzate nel corpo della richiesta. Qualsiasi parametro che non specifichi verrà automaticamente preso dalle impostazioni del tuo Profilo di Slicing nel Dashboard. Questo ti consente di sovrascrivere impostazioni specifiche per ogni preventivo mantenendo le impostazioni predefinite per gli altri.

Importante: Se non fornisci un parametro nella tua richiesta, l'API utilizzerà il valore dal tuo Profilo di Slicing nel Dashboard (Profilo Stampante, Profilo Materiale o Impostazioni Globali). Assicurati di impostare i tuoi profili predefiniti nel Dashboard per preventivi coerenti. Puoi anche configurare tutti i tuoi parametri in un Profilo Stampante specifico nel Dashboard e semplicemente passare il suo 'printer_id' nella tua richiesta per applicare quelle impostazioni istantaneamente senza passarle individualmente.

Precedenza della configurazione: I valori inviati nella richiesta API V2 sovrascrivono i valori del profilo utente selezionato; qualsiasi campo ancora mancante ricade quindi sui profili predefiniti utente/globali.

Parametri Principali

ParametroTipoDescrizione
printer_idstringOpzionale. ID di una stampante specifica da utilizzare invece della stampante predefinita.
quantitynumberOpzionale. Il numero totale di copie da produrre (Predefinito: 1).

Logica di Quantità e Produzione in Batch

Il nostro sistema utilizza un algoritmo di impacchettamento avanzato basato sulla 'quantity' specificata:

  • Tecnologia FDM: Le parti vengono posizionate fianco a fianco sul piano di stampa (assi X e Y) secondo lo spazio disponibile.
  • Tecnologia SLA: Le parti vengono posizionate fianco a fianco nella vasca di resina (assi X e Y).
  • Tecnologia SLS: Le parti possono essere impilate su tutti gli assi (X, Y e Z) per utilizzare appieno la capacità del letto di polvere.

Grazie a questo imballaggio ottimizzato, se più parti possono entrare in un singolo batch, i costi fissi generali come il preriscaldamento, il raffreddamento e i cambi di strato vengono applicati solo per ogni batch richiesto. Questo garantisce prezzi realistici ed economici per ordini di grandi volumi.

printer_config

Parametri di configurazione della stampante. Tutti i campi sono opzionali e utilizzeranno i valori predefiniti del tuo Profilo Stampante se non forniti.

ParametroTipoDescrizione
bed_size_xnumberBuild volume X dimension (mm)
bed_size_ynumberBuild volume Y dimension (mm)
bed_size_znumberBuild volume Z dimension (mm)
nozzle_diameternumberNozzle diameter (mm)
nozzle_countnumberNumber of nozzles
print_speednumberDefault print speed (mm/s)
max_print_speednumberMaximum print speed (mm/s)
travel_speednumberTravel speed (mm/s)
first_layer_speednumberFirst layer speed (mm/s)
layer_heightnumberLayer height (mm)
min_layer_heightnumberMinimum layer height (mm)
max_layer_heightnumberMaximum layer height (mm)
perimetersnumberNumber of perimeters/walls
top_solid_layersnumberTop solid layers count
bottom_solid_layersnumberBottom solid layers count
min_wall_countnumberMinimum wall count
max_wall_countnumberMaximum wall count
fill_densitynumberInfill density (0-100%)
infill_patternstringInfill pattern. Options: rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid, triangles, trihexagon, cubic, adaptivecubic, supportcubic, honeycomb, honeycomb3d, lateralhoneycomb, gyroid, monotonic, monotonicline, lightning. Default: rectilinear
support_materialbooleanEnable support material
support_overhang_anglenumberSupport overhang angle (degrees)
support_densitynumberSupport density (0-100%)
acceleration_printnumberPrint acceleration (mm/s²)
acceleration_travelnumberTravel acceleration (mm/s²)
acceleration_retractionnumberRetraction acceleration (mm/s²)
jerk_printnumberPrint jerk (mm/s)
jerk_travelnumberTravel jerk (mm/s)
jerk_retractionnumberRetraction jerk (mm/s)
min_hotend_tempnumberMinimum hotend temperature (°C)
max_hotend_tempnumberMaximum hotend temperature (°C)
min_bed_tempnumberMinimum bed temperature (°C)
max_bed_tempnumberMaximum bed temperature (°C)
hourly_costnumberMachine hourly cost
SPECIFICO PER SLA
sla_exposure_timenumberSLA: Tempo di esposizione per livello (secondi)
sla_bottom_exposure_timenumberSLA: Tempo di esposizione di base (secondi)
sla_bottom_layer_countnumberSLA: Numero di livelli inferiori
sla_lift_distancenumberSLA: Distanza di sollevamento (mm)
sla_lift_speednumberSLA: Velocità di sollevamento (mm/s)
sla_retract_speednumberSLA: Velocità di retrazione (mm/s)
sla_cleaning_costnumberSLA: Costo fisso di pulizia per stampa (IPA, materiali di consumo)
SPECIFICO PER SLS
sls_laser_speednumberSLS: Velocità del laser (mm/s)
sls_hatch_spacingnumberSLS: Spaziatura tra le scansioni (mm)
sls_layer_thicknessnumberSLS: Spessore dello strato (mm)
sls_layer_recoat_timenumberSLS: Tempo di ricopertura dello strato (secondi)
sls_preheat_timenumberSLS: Tempo di preriscaldamento (secondi)
sls_cooling_timenumberSLS: Tempo di raffreddamento (secondi)
sla_light_off_delaynumberSLA: Light-off delay for each layer (seconds).
sla_transition_layer_countnumberSLA: Number of transition layers.
sla_drain_holesarraySLA: Drainage holes configuration to prevent suction cups.
sls_bb_multipliernumberSLS Bounding Box cost multiplier.
max_volumetric_flownumberMaximum volumetric flow rate in mm³/s.

material_config

Parametri di configurazione del materiale. Tutti i campi sono opzionali e utilizzeranno i valori predefiniti del tuo Profilo Materiale se non forniti.

Integrazione Profilo Materiale: Il parametro filament_type deve corrispondere a un nome del materiale dal tuo Profilo Materiale nel Dashboard. Quando specifichi un filament_type (ad esempio, "PLA", "ABS", "PETG"), l'API carica automaticamente tutte le proprietà da quel Profilo Materiale, inclusa la densità, le temperature, le impostazioni di retrazione e i prezzi.

Precisione dei Prezzi: Per calcoli dei costi accurati, assicurati di impostare sia price_per_kg che price_per_gram nel tuo Profilo Materiale. L'API utilizza questi valori per calcolare i costi del materiale in base al peso effettivo del filamento utilizzato nella stampa. Se questi valori non sono impostati nel tuo profilo, puoi sovrascriverli nella richiesta API.

Esempio: Se hai un profilo materiale "PLA" nel tuo Dashboard con price_per_kg: 20.0 e price_per_gram: 0.02, puoi semplicemente inviare {"filament_type": "PLA"} nella tua richiesta e tutti i prezzi verranno calcolati automaticamente.

ParametroTipoDescrizione
filament_typestringFilament type (PLA, ABS, PETG, etc.)
colorstringOpzionale: Nome del colore (es. 'Bianco', 'Nero', '#FFFFFF'). Nota: per le tecnologie SLA/SLS, il colore viene applicato solo se 'post_processing' è impostato su 'painted'.
densitynumberMaterial density (g/cm³)
diameternumberFilament diameter (mm)
powder_bulk_densitynumberSLS: Bulk density of loose powder in g/cm³. Used for reusable powder and refresh calculations.
temperaturenumberPrint temperature (°C)
print_temp_minnumberMinimum print temperature (°C)
print_temp_maxnumberMaximum print temperature (°C)
bed_temperaturenumberBed temperature (°C)
bed_temp_minnumberMinimum bed temperature (°C)
bed_temp_maxnumberMaximum bed temperature (°C)
fan_speednumberFan speed (0-100%)
min_fan_speednumberMinimum fan speed (0-100%)
retraction_distancenumberRetraction distance (mm)
retraction_speednumberRetraction speed (mm/s)
price_per_kgnumberPrice per kilogram
price_per_gramnumberPrice per gram
support_cost_multipliernumberSupport material cost multiplier
sls_refresh_factornumberSLS Powder Refresh cost factor (e.g. 1.2).
max_volumetric_flownumberMaterial specific volumetric flow limit in mm³/s.
min_layer_timenumberMinimum layer time in seconds for cooling.

quote_config

Parametri di configurazione del preventivo. Tutti i campi sono opzionali e utilizzeranno i valori delle Impostazioni Globali predefiniti se non forniti. La valuta predefinita è quella del tuo dashboard, ad esempio 'USD', 'TRY', 'EUR'.

ParametroTipoDescrizione
currencystringCurrency code (USD, TRY, EUR, GBP, JPY, CNY, RUB). Defaults to your dashboard preference.
tax_ratenumberTax rate percentage (0-100)
fixed_feenumberFixed fee per quote
energy_cost_per_kwhnumberEnergy cost per kWh
hollowingstringSpecifico per SLA/Resina: 'solid', '2mm' o '3mm' (Impostazione predefinita: 'solid')
post_processingstringSpecifico per SLA/SLS: 'standard', 'sanding', 'painting' o 'painted' (Impostazione predefinita: 'standard')
enable_batch_systembooleanEnable/disable batch calculation system (default: true)
material_wastage_factornumberFactor for calculating material wastage (e.g. 1.10 for 10% wastage).

Suggerimento: I preventivi vengono salvati automaticamente nel tuo account. Puoi accedervi in qualsiasi momento tramite gli endpoint della cronologia dei preventivi.

6. Profili Stampante e Preventivo

Configura le impostazioni della stampante e i prezzi per ottenere preventivi accurati. Puoi gestire i tuoi profili predefiniti nella sezione Profili di slicing del Dashboard, che verranno utilizzati automaticamente quando non specifichi i parametri nelle richieste API.

Tipi di Profilo

  • Profilo Stampante - Configura le impostazioni della tua stampante (dimensioni del piano di stampa, diametro dell'ugello, velocità di stampa, altezza dello strato, accelerazione, jerk, temperature, ecc.) per corrispondere alla tua stampante reale. Imposta questo come profilo predefinito nel Dashboard e verrà utilizzato per tutte le richieste di preventivo a meno che tu non sovrascriva parametri specifici.
  • Profilo Materiale - Imposta le proprietà del materiale (tipo di filamento, densità, diametro, temperature, velocità della ventola, impostazioni di retrazione, prezzi) per ogni materiale che utilizzi. L'API utilizzerà automaticamente il profilo del materiale corrispondente al tipo di filamento che specifichi nella richiesta.
  • Impostazioni Globali - Configura le impostazioni globali del preventivo come l'aliquota fiscale, le commissioni fisse, i costi energetici e la valuta predefinita. Queste impostazioni si applicano a tutti i preventivi a meno che non vengano sovrascritte nella richiesta.

Best Practice: Configura i tuoi profili predefiniti nella sezione Profili di Slicing del Dashboard. In questo modo, puoi effettuare richieste di preventivo semplici senza specificare tutti i parametri e l'API utilizzerà automaticamente i tuoi valori predefiniti configurati. Puoi comunque sovrascrivere qualsiasi parametro per ogni richiesta quando necessario.

Come Funziona l'Unione dei Profili

Quando effettui una richiesta di preventivo, l'API unisce i tuoi parametri di richiesta con i profili del Dashboard utilizzando questa priorità:

  1. Parametri di Richiesta - I valori che fornisci esplicitamente nella richiesta API hanno la priorità più alta
  2. Profilo Utente - Se hai un profilo specifico per l'utente impostato come predefinito, viene utilizzato successivamente
  3. Profilo Globale - Se non esiste un profilo utente, il sistema torna ai valori predefiniti globali

Ciò significa che puoi sovrascrivere solo i parametri di cui hai bisogno (ad esempio, solo layer_height o fill_density) mantenendo tutte le altre impostazioni dai tuoi profili del Dashboard.

7. Webhook

Ricevi notifiche in tempo reale quando si verificano eventi nel tuo account:

  • POST /v2/webhooks - Crea un nuovo endpoint webhook
  • GET /v2/webhooks - Elenca tutti i tuoi webhook
  • GET /v2/webhooks/{webhook_id} - Ottieni i dettagli del webhook e le statistiche di consegna
  • PUT /v2/webhooks/{webhook_id} - Aggiorna le impostazioni del webhook
  • DELETE /v2/webhooks/{webhook_id} - Rimuovi un webhook

Eventi supportati: quote.completed, quote.failed, job.status_changed, widget.added_to_cart, file.uploaded. I webhook includono firme HMAC-SHA256 per la verifica della sicurezza.

8. Analisi e Report

Ottieni informazioni sull'utilizzo della tua API e sulle statistiche dei preventivi:

  • GET /v2/analytics/quotes - Ottieni statistiche complete sui preventivi, inclusi il numero totale di preventivi, i prezzi medi e le tendenze nell'utilizzo dei materiali
  • GET /v2/analytics/popular - Visualizza i tuoi materiali e le configurazioni di stampante più popolari
  • GET /v2/analytics/cost-trends - Analizza le tendenze dei costi nel tempo (raggruppamento giornaliero, settimanale o mensile)
  • GET /v2/analytics/export - Esporta i tuoi preventivi e i dati di utilizzo come CSV o JSON

9. Limitazione della frequenza e quote

Quote3D utilizza la limitazione della velocità per garantire un utilizzo equo e la stabilità del sistema:

  • I limiti di velocità sono applicati per token API e variano a seconda dell'endpoint
  • Le informazioni sulla limitazione della frequenza sono incluse nelle intestazioni della risposta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • Quando si raggiunge il limite di velocità, si riceverà una risposta 429 Too Many Requests con un'intestazione Retry-After
  • Le quote mensili per preventivi e spazio di archiviazione si basano sul piano di abbonamento

Best Practice: Implementare un backoff esponenziale quando si gestiscono errori di limitazione della velocità per evitare di sovraccaricare l'API.

10. API RESTful e Versionata

  • Tutti gli endpoint sono versionati (es. /v2/)
  • Utilizza i metodi HTTP standard:
  • Segue gli standard OpenAPI 3.1.0 per schema e documentazione
  • Il changelog dell'API è disponibile all'indirizzo: