Benvenuto nella Documentazione Quote3D! ⏳

Concetti chiave: file, preventivi e lavori

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

Ogni endpoint richiede l'autenticazione con il tuo token API Quote3D, con un'eccezione: la rotta di caricamento pubblica documentata sotto Gestione file. Per le chiamate esterne usa la rotta base https://api.quote3d.com/v2. Invia il token come Authorization: Bearer YOUR_TOKEN oppure come X-API-Token. Genera i token dal tuo pannello Quote3D e mantienili segreti.

I token possono avere un ambito. Un token ad accesso completo raggiunge ogni endpoint, mentre un token con ambito widget è limitato agli endpoint necessari al widget integrato. Qualsiasi chiamata fuori dall'ambito di un token restituisce 403. Puoi vedere e modificare l'ambito di un token nella pagina Token del pannello.

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 dati del tuo account, il piano e i limiti mensili — qui si trovano quotes_used, quotes_limit, storage_used, storage_limit e reset_date
  • 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 Recupera i tuoi limiti di frequenza — il limite globale più un dettaglio per endpoint con chiamate residue e orari di reset — insieme ai conteggi delle richieste di oggi, questo mese, quest'anno e di sempre
  • 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):

  • GET /v2/file/upload-idOttieni un upload_id temporaneo per caricare un nuovo file tramite la route di upload pubblico.
  • 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.

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

Il caricamento viene rifiutato se il file non è un modello STL, 3MF o OBJ valido, oppure se supera il limite di dimensione della piattaforma (50 MB per impostazione predefinita). Entrambe le rotte applicano gli stessi controlli.

Come vengono archiviati i tuoi file

I modelli caricati vengono archiviati in modo criptato e non sono mai accessibili pubblicamente — non esiste alcun link che serva direttamente un file archiviato. Il campo file_path nelle risposte è il percorso di download autenticato (GET /v2/file/{file_id}), non una posizione su disco, pertanto va trattato come un endpoint piuttosto che come un URL da condividere. L’eliminazione di un file lo rimuove dall’archiviazione, non solo dai tuoi elenchi.

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:

  • 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.
  • 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.
  • GET /v2/jobs/{job_id}Controlla lo stato di un lavoro di preventivo asincrono. Restituisce la percentuale di avanzamento e lo stato di completamento.
  • GET /v2/quotesRecupera tutta la tua cronologia dei preventivi con supporto per la paginazione
  • GET /v2/quotes/{quote_id}Ottieni informazioni dettagliate su un preventivo specifico
  • 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.

Le tabelle seguenti coprono i parametri che le integrazioni sovrascrivono più spesso. Non sono l'elenco completo — il motore accetta molti altri campi di stampante, materiale e prezzo, e ognuno di essi può essere impostato una volta nei Profili di slicing del pannello invece di essere inviato a ogni richiesta. Configura lì i profili e invia solo ciò che cambia da preventivo a preventivo; l'elenco completo dei campi è nello schema OpenAPI.

Request Validation

I campi numerici di printer_config, material_config e quote_config vengono verificati rispetto ai loro limiti prima che il lavoro venga messo in coda. Un valore fuori intervallo, un numero non finito (NaN, Infinity), un tipo errato oppure un numero negativo dove hanno senso solo lo zero e i valori superiori viene rifiutato con HTTP 400 e un VALIDATION_ERROR che indica il campo esatto. Lo zero continua a essere accettato ovunque abbia significato: una velocità o un'accelerazione di 0 per un dato ruolo significa «usa il valore predefinito della stampante», la stessa convenzione adottata da OrcaSlicer.

  • Limiti di temperatura: le temperature del materiale (temperature e bed_temperature, sia inviate nella richiesta sia lette dal Profilo materiale) vengono confrontate con i valori min_hotend_temp / max_hotend_temp e min_bed_temp / max_bed_temp della stampante. Un materiale che richiede più calore di quanto la stampante selezionata possa fornire viene rifiutato anziché preventivato. Solo FDM: le tecnologie a resina e a polvere non hanno ugello né piano riscaldato. Lasciare i limiti della stampante non impostati per saltare il controllo.
  • Tecnologie abilitate: se le tecnologie sono state limitate nelle Impostazioni globali, una richiesta di preventivo per una tecnologia disabilitata viene rifiutata. Lasciare l'impostazione vuota per accettarle tutte e tre.
  • Campi di prezzo del materiale: price_per_gram è il valore che il motore addebita. Quando si salva un Profilo materiale, price_per_kg viene ricalcolato automaticamente a partire da esso (e price_per_gram viene derivato da price_per_kg quando viene fornito solo il prezzo al chilogrammo), così i due valori non possono mai discordare.

Parametri Principali

ParametroTipoDescrizione
technologystringFacoltativo. Tecnologia di produzione: 'FDM', 'SLA' o 'SLS' ('RESIN' è accettato come alias di 'SLA'). Determina quali parametri specifici della tecnologia si applicano e come le parti vengono disposte per la produzione in serie. Se omesso, viene usata la tecnologia della stampante selezionata, con ripiego su 'FDM'.
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
nozzle_diameternumberFDM nozzle diameter (mm). Drives extrusion width, so it changes both print time and material use.
support_materialbooleanEnable support generation. When omitted, the profile value is used.
bed_size_xnumberBuild volume X dimension (mm)
bed_size_ynumberBuild volume Y dimension (mm)
bed_size_znumberBuild volume Z dimension (mm)
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_patternstringPattern di infill. Predefinito: rectilinear. Base (rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid), Triangolo (triangles, trihexagon), Cubico (cubic, adaptivecubic, supportcubic), a Nido d’ape (honeycomb, honeycomb3d, lateralhoneycomb), Avanzato (gyroid), Speciale (monotonic, monotonicline), Space-filling (hilbertcurve, archimedeanchords, octagramspiral). hilbertcurve, archimedeanchords, octagramspiral sono accettati ma non hanno un generatore proprio — vengono indicati come rectilinear. I valori vengono confrontati senza distinzione tra maiuscole e minuscole e ignorando i separatori, quindi sia tri-hexagon che Zig Zag funzionano; è accettata anche la dicitura 3dhoneycomb di OrcaSlicer. lightning, quartercubic, laterallattice, crosshatch, concentric, tpmsd, tpmsfk non sono supportati e restituiscono l’errore 400.
support_overhang_anglenumberSupport overhang angle (degrees)
support_densitynumberSupport density (0-100%)
brim_enabledbooleanEnable brim generation for FDM quotes
brim_widthnumberBrim width in millimeters when brim is enabled
acceleration_printnumberPrint acceleration (mm/s²)
acceleration_travelnumberTravel acceleration (mm/s²)
acceleration_retractionnumberRetraction acceleration (mm/s²)
acceleration_outer_wallnumberOuter wall acceleration (mm/s²). 0 uses acceleration_print.
acceleration_inner_wallnumberInner wall acceleration (mm/s²). 0 uses acceleration_print.
acceleration_sparse_infillnumberSparse infill acceleration (mm/s²). 0 uses acceleration_print.
acceleration_solid_infillnumberSolid infill acceleration (mm/s²). 0 uses acceleration_print.
acceleration_top_surfacenumberTop surface acceleration (mm/s²). 0 uses acceleration_print.
acceleration_bridgenumberBridge acceleration (mm/s²). 0 uses acceleration_print.
acceleration_first_layernumberFirst layer acceleration (mm/s²). 0 uses acceleration_print.
retraction_minimum_travelnumberTravel moves shorter than this do not retract (mm). Reference default 1.
z_hop_mmnumberNozzle lift before a travel move (mm). 0 disables it. Reference default 0.4.
bed_exclude_xnumberUnusable bed edge margin on X (mm), removed from the packing area.
bed_exclude_ynumberUnusable bed edge margin on Y (mm), removed from the packing area.
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/min)
sla_retract_speednumberSLA: Velocità di retrazione (mm/min)
sla_cleaning_costnumberSLA: Costo fisso di pulizia per stampa (IPA, materiali di consumo)
sla_pad_enabledbooleanSLA: stampa il modello su un pad/raft. Disattivato di default; la resina del pad viene conteggiata insieme al materiale di supporto.
sla_pad_wall_thicknessnumberSLA: spessore della parete del pad in mm. Alias: sla_pad_height.
sla_pad_wall_heightnumberSLA: altezza della parete del pad in mm (bordo rialzato attorno alla cavità del pad).
sla_pad_wall_slopenumberSLA: inclinazione della parete del pad in gradi (45-90). Il pad si restringe verso il basso con questa angolazione.
sla_pad_brim_sizenumberSLA: dimensione del brim del pad in mm. Alias: sla_pad_expansion.
sla_pad_max_merge_distancenumberSLA: i piedini di supporto più vicini di questo valore vengono uniti in un’unica isola del pad (mm).
sla_support_head_front_diameternumberSLA: diametro frontale (punta) della testa del supporto in mm.
sla_support_head_penetrationnumberSLA: profondità con cui la testa del supporto penetra nella superficie del modello (mm).
sla_support_head_widthnumberSLA: lunghezza dell’asta della testa del supporto in mm.
sla_support_pillar_diameternumberSLA: diametro del pilastro di supporto in mm. Determina la maggior parte del volume della resina di supporto.
sla_support_base_diameternumberSLA: diametro della base (piede) del pilastro di supporto in mm.
sla_support_base_heightnumberSLA: altezza della base (piede) del pilastro di supporto in mm.
sla_support_object_elevationnumberSLA: elevazione dell’oggetto sopra la piastra di stampa in mm. Aggiunge anche gli strati stampati, quindi influisce sul tempo di stampa. Applicato solo quando vengono generati i supporti.
sla_support_critical_anglenumberSLA: pendenza del ponte in gradi utilizzata per l’instradamento dei supporti. Non è la stessa cosa di support_overhang_angle.
sla_support_max_pillar_link_distancenumberSLA: i pilastri più distanti di questo valore non sono collegati tra loro (mm).
sla_support_max_bridge_lengthnumberSLA: il ponte laterale più lungo che una testa di supporto può compiere per raggiungere la piastra (mm).
sla_support_max_bridges_on_pillarnumberSLA: numero di ponti che un singolo pilastro può accettare.
sla_support_points_densitynumberSLA: densità dei punti di supporto in percentuale, 100 = normale. NON è la stessa quantità di support_density, che è la percentuale di riempimento del supporto FDM.
sla_elephant_foot_compensationnumberSLA: Quanto i primi strati vengono rientrati per compensare l’allargamento alla base. Valore di riferimento 0.2 su ogni stampante SLA inclusa. 0 lo disabilita.
sla_elephant_foot_min_widthnumberSLA: I contorni più stretti di questo valore non vengono modificati per evitare che i dettagli sottili vengano eliminati. Valore di riferimento 0.2.
sla_faded_layersnumberSLA: Su quanti strati la compensazione sfuma verso lo zero. Questo NON è il numero di strati alla base; il profilo MSLA di riferimento ne usa 8.
SPECIFICO PER SLS
sls_laser_speednumberSLS: Velocità del laser (mm/s)
sls_hatch_spacingnumberSLS: Spaziatura di tratteggio (mm)
sls_layer_thicknessnumberSLS: Spessore dello strato (mm)
sls_layer_recoat_timenumberSLS: Tempo di ricopertura dello strato (secondi)
sls_preheat_timenumberSLS: Tempo di preriscaldamento (min)
sls_cooling_timenumberSLS: Tempo di raffreddamento (min)
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: sovrapprezzo per lo spazio macchina per ogni equivalente in grammi dello slot di build occupato da un componente. Lo slot è il box a volume minimo del componente più la sua quota di distanze di polvere e i bordi inutilizzabili della camera, pertanto non cambia se il modello viene inviato ruotato. 0 disabilita il sovrapprezzo.
sls_contour_countnumberSLS: numero di passaggi di contorno (bordo) che il laser traccia attorno al profilo di ogni slice. 0 disabilita il passaggio di contorno.
sls_contour_speednumberSLS: velocità di scansione del contorno in mm/s. 0 indica che il contorno viene scansionato alla velocità sls_laser_speed.
sls_jump_speednumberSLS: velocità di salto del galvanometro in mm/s per i movimenti di riposizionamento senza sinterizzazione tra i vettori di scansione. 0 esegue i salti alla velocità sls_laser_speed, che rappresenta il limite superiore.
sls_part_spacingnumberSLS: distanza minima di polvere attorno a un componente in mm, applicata sia tra i componenti che rispetto alla parete della camera. Determina quanti componenti rientrano in una singola build, influenzando quindi sia la quota di spazio macchina che la ripartizione dei costi fissi. 0 utilizza il valore predefinito del motore di 3 mm.
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: il costo del materiale viene calcolato da price_per_gram. È sufficiente impostare price_per_kg oppure price_per_gram nel Profilo materiale: l'altro valore viene mantenuto sincronizzato automaticamente. È comunque possibile sovrascrivere il prezzo per singola richiesta indicando price_per_gram o price_per_kg in material_config.

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)
filament_flow_rationumberMoltiplicatore del rapporto di flusso FDM. 1.0 indica un flusso del 100%. I valori richiesti sovrascrivono il Profilo Materiale dell'utente selezionato; in caso di assenza, viene utilizzato il valore del profilo globale prima del valore predefinito 1.0.
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)
slow_down_min_speednumberLower speed bound for layer cooling (mm/s). Reference default 20.
retraction_minimum_travelnumberOverrides the printer value for this material (mm).
z_hop_mmnumberOverrides the printer value for this material (mm).
price_per_kgnumberPrice per kilogram
price_per_gramnumberPrice per gram
support_cost_multipliernumberSupport material cost multiplier
sls_refresh_factornumberSLS powder refresh rate ratio (e.g. 0.3 = 30% fresh powder).
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/SLS: 'solid', '2mm' o '3mm'. Per SLA il valore predefinito è '2mm' quando lo svuotamento SLA è abilitato nelle impostazioni; per SLS il valore predefinito è '2mm' quando lo svuotamento SLS è abilitato. I componenti SLS vengono svuotati SENZA un foro di sfiato, quindi la polvere non sinterizzata rimane all’interno: viene addebitata alla densità del letto di polvere e non è recuperabile. Un componente le cui pareti sono già più sottili del doppio dello spessore della parete configurato rimane solido.
post_processingstringSpecifico SLA/SLS: 'standard', 'sanding', 'painting' o 'painted' (predefinito: 'standard'). Il valore viene registrato sul preventivo; 'painted' è anche ciò che fa applicare il colore richiesto alle parti SLA/SLS.
sla_post_processing_fee_standardnumberSLA standard post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sla_post_processing_fee_sandingnumberSLA sanding post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sla_post_processing_fee_paintingnumberSLA painting post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sla_post_processing_fee_paintednumberSLA painted post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_standardnumberSLS standard post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_sandingnumberSLS sanding post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_paintingnumberSLS painting post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
sls_post_processing_fee_paintednumberSLS painted post-processing fee per part. Overrides the settings value; post_processing selects which one applies.
enable_batch_systembooleanEnable/disable batch calculation system (default: true)
sls_min_build_fillnumberSLS: riempimento minimo della build come frazione tra 0 e 1. L’ordine viene fatturato come se occupasse almeno questa quota di una sessione di build — 0 condivide la build con altri lavori, 1 fattura l’intera build. Ignorato quando enable_batch_system è false.
material_wastage_factornumberFactor for calculating material wastage (e.g. 1.10 for 10% wastage).
volume_discount_tiersarrayQuantity discount tiers, e.g. [{"minVolume": 100, "discount": 5}]. Falls back to your Global Settings tiers.

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, rapporto di flusso, impostazioni di retrazione, prezzi) per ogni materiale che utilizzi. L'API utilizzerà automaticamente il profilo del materiale corrispondente al filament_type 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, file.uploaded, file.deleted, job.status_changed, widget.added_to_cart. I webhook includono firme HMAC-SHA256 per la verifica della sicurezza.

Riferimento webhook: struttura del payload, verifica della firma, tentativi e riconsegna

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, X-RateLimit-Window
  • 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
  • I limiti sono configurabili per installazione, quindi leggi i valori correnti invece di scriverli nel codice. Li riportano sia gli header di risposta sopra sia questo endpoint: GET /v2/quota

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

10. Risposte ed errori

Ogni risposta JSON usa lo stesso involucro. Una chiamata riuscita restituisce success: true con il payload dell'endpoint sotto data, così il tuo client legge ovunque una struttura coerente. I download di file e le esportazioni CSV fanno eccezione: restituiscono il corpo grezzo del file invece dell'involucro.

{
  "success": true,
  "data": { "...": "endpoint-specific payload" }
}

Paginazione e ordinamento

Gli endpoint di elenco come /v2/quotes e /v2/user/uploads sono paginati con i parametri limit e offset (50 risultati predefiniti, massimo 100). Accanto ai risultati restituiscono un oggetto pagination con total, limit, offset, has_more, page e total_pages: preferisci quindi has_more invece di ricalcolare da solo la fine dell'elenco. L'ordinamento usa un unico parametro ripetibile nella forma field:direction, ad esempio ?sort=created_at:desc&sort=total_price:asc; i caricamenti partono dai più recenti.

Risposte di errore

Gli errori restituiscono success: false con un messaggio leggibile e il relativo codice di stato HTTP. Basa sempre la logica sul codice di stato e non sul testo del messaggio, che può essere riformulato.

StatoSignificato
400Il corpo della richiesta o un parametro non è valido — un campo malformato, un formato di file non supportato o un modello che non entra nella stampante scelta.
401Il token API è mancante, malformato, scaduto o revocato.
403Il token è valido ma non autorizzato per questa chiamata — di solito una restrizione di ambito o un indirizzo IP bloccato.
404Il file, il preventivo, il lavoro o il webhook richiesto non esiste o non appartiene al tuo account.
429È stato superato un limite di frequenza. Leggi l'header Retry-After e attendi prima di riprovare.
500Errore inatteso lato server. Puoi riprovare con attesa progressiva; se persiste, contatta il supporto indicando l'orario.

I preventivi asincroni sono diversi: la messa in coda riesce con un 202, e un calcolo che fallisce successivamente emerge come stato failed con un messaggio di errore sull'endpoint del lavoro, non come errore HTTP. Controlla sempre lo stato del lavoro, non solo il codice ottenuto all'avvio.

11. API RESTful e versionata

  • Tutti gli endpoint sono versionati (es. /v2/)
  • Utilizza i metodi HTTP standard: GET, POST, PUT, DELETE
  • Descritta da uno schema OpenAPI 3.0.3 che puoi importare nei tuoi strumenti
  • Le modifiche incompatibili e le aggiunte sono registrate nel changelog dell'API