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/userRecupera i dati del tuo account, il piano e i limiti mensili — qui si trovano quotes_used, quotes_limit, storage_used, storage_limit e reset_dateGET /v2/user/uploadsElenca tutti i file che hai caricato sul tuo account. Questi sono elencati dal più recente al più vecchio.GET /v2/quotaRecupera 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 sempreGET /v2/usageOttieni analisi dettagliate sull'utilizzo, incluse statistiche sugli endpoint, utilizzo dei materiali e tendenze basate sul tempoGET /v2/configLe tecnologie attive dell’account, le stampanti, i materiali con i loro colori (disponibili o no) e i valori di prezzo predefiniti: tutto ciò che offre il widget. Anche i token widget possono leggerlo.
3. Gestione file
Carica, scarica e gestisci i tuoi file di modelli 3D (formati STL, 3MF, OBJ, STEP):
GET /v2/file/upload-id— Ottieni 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/file— Carica 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_idDELETE /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, OBJ o STEP valido, oppure se supera il limite di dimensione della piattaforma (50 MB per impostazione predefinita). I file STEP (.step/.stp) vengono tassellati sul server con le stesse impostazioni di OrcaSlicer (deviazione lineare 0,003 mm, deviazione angolare 0,5 rad); tutti i corpi di un assieme vengono uniti e le lunghezze convertite in millimetri. 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}/async— Endpoint 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/quotes— Recupera tutta la tua cronologia dei preventivi con supporto per la paginazioneGET /v2/quotes/{quote_id}— Ottieni informazioni dettagliate su un preventivo specificoDELETE /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 accettare tutte le tecnologie.
- 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
| Parametro | Tipo | Descrizione |
|---|---|---|
| technology | string | Facoltativo. Tecnologia di produzione: 'FDM', 'SLA', 'SLS', 'SLM' o 'MJF' ('RESIN' è accettato come alias di 'SLA', mentre 'DMLS' e 'LPBF' lo sono di 'SLM'). 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_id | string | Opzionale. ID di una stampante specifica da utilizzare invece della stampante predefinita. |
| quantity | number | Opzionale. 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.
| Parametro | Tipo | Descrizione |
|---|---|---|
| nozzle_diameter | number | FDM nozzle diameter (mm). Drives extrusion width, so it changes both print time and material use. |
| support_material | boolean | Enable support generation. When omitted, the profile value is used. |
| bed_size_x | number | Build volume X dimension (mm) |
| bed_size_y | number | Build volume Y dimension (mm) |
| bed_size_z | number | Build volume Z dimension (mm) |
| print_speed | number | Default print speed (mm/s) |
| max_print_speed | number | Maximum print speed (mm/s) |
| travel_speed | number | Travel speed (mm/s) |
| first_layer_speed | number | First layer speed (mm/s) |
| layer_height | number | Layer height (mm) |
| min_layer_height | number | Minimum layer height (mm) |
| max_layer_height | number | Maximum layer height (mm) |
| perimeters | number | Number of perimeters/walls |
| top_solid_layers | number | Top solid layers count |
| bottom_solid_layers | number | Bottom solid layers count |
| min_wall_count | number | Minimum wall count |
| max_wall_count | number | Maximum wall count |
| fill_density | number | Infill density (0-100%) |
| infill_pattern | string | Pattern 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_angle | number | Support overhang angle (degrees) |
| support_density | number | Support density (0-100%) |
| brim_enabled | boolean | Enable brim generation for FDM quotes |
| brim_width | number | Brim width in millimeters when brim is enabled |
| acceleration_print | number | Print acceleration (mm/s²) |
| acceleration_travel | number | Travel acceleration (mm/s²) |
| acceleration_retraction | number | Retraction acceleration (mm/s²) |
| acceleration_outer_wall | number | Outer wall acceleration (mm/s²). 0 uses acceleration_print. |
| acceleration_inner_wall | number | Inner wall acceleration (mm/s²). 0 uses acceleration_print. |
| acceleration_sparse_infill | number | Sparse infill acceleration (mm/s²). 0 uses acceleration_print. |
| acceleration_solid_infill | number | Solid infill acceleration (mm/s²). 0 uses acceleration_print. |
| acceleration_top_surface | number | Top surface acceleration (mm/s²). 0 uses acceleration_print. |
| acceleration_bridge | number | Bridge acceleration (mm/s²). 0 uses acceleration_print. |
| acceleration_first_layer | number | First layer acceleration (mm/s²). 0 uses acceleration_print. |
| retraction_minimum_travel | number | Travel moves shorter than this do not retract (mm). Reference default 1. |
| z_hop_mm | number | Nozzle lift before a travel move (mm). 0 disables it. Reference default 0.4. |
| bed_exclude_x | number | Unusable bed edge margin on X (mm), removed from the packing area. |
| bed_exclude_y | number | Unusable bed edge margin on Y (mm), removed from the packing area. |
| jerk_print | number | Print jerk (mm/s) |
| jerk_travel | number | Travel jerk (mm/s) |
| jerk_retraction | number | Retraction jerk (mm/s) |
| min_hotend_temp | number | Minimum hotend temperature (°C) |
| max_hotend_temp | number | Maximum hotend temperature (°C) |
| min_bed_temp | number | Minimum bed temperature (°C) |
| max_bed_temp | number | Maximum bed temperature (°C) |
| hourly_cost | number | Machine hourly cost |
| SPECIFICO PER SLA | ||
| sla_exposure_time | number | SLA: Tempo di esposizione per livello (secondi) |
| sla_bottom_exposure_time | number | SLA: Tempo di esposizione di base (secondi) |
| sla_bottom_layer_count | number | SLA: Numero di livelli inferiori |
| sla_lift_distance | number | SLA: Distanza di sollevamento (mm) |
| sla_lift_speed | number | SLA: Velocità di sollevamento (mm/min) |
| sla_retract_speed | number | SLA: Velocità di retrazione (mm/min) |
| sla_cleaning_cost | number | SLA: Costo fisso di pulizia per stampa (IPA, materiali di consumo) |
| sla_pad_enabled | boolean | SLA: stampa il modello su un pad/raft. Disattivato di default; la resina del pad viene conteggiata insieme al materiale di supporto. |
| sla_pad_wall_thickness | number | SLA: spessore della parete del pad in mm. Alias: sla_pad_height. |
| sla_pad_wall_height | number | SLA: altezza della parete del pad in mm (bordo rialzato attorno alla cavità del pad). |
| sla_pad_wall_slope | number | SLA: inclinazione della parete del pad in gradi (45-90). Il pad si restringe verso il basso con questa angolazione. |
| sla_pad_brim_size | number | SLA: dimensione del brim del pad in mm. Alias: sla_pad_expansion. |
| sla_pad_max_merge_distance | number | SLA: i piedini di supporto più vicini di questo valore vengono uniti in un’unica isola del pad (mm). |
| sla_support_head_front_diameter | number | SLA: diametro frontale (punta) della testa del supporto in mm. |
| sla_support_head_penetration | number | SLA: profondità con cui la testa del supporto penetra nella superficie del modello (mm). |
| sla_support_head_width | number | SLA: lunghezza dell’asta della testa del supporto in mm. |
| sla_support_pillar_diameter | number | SLA: diametro del pilastro di supporto in mm. Determina la maggior parte del volume della resina di supporto. |
| sla_support_base_diameter | number | SLA: diametro della base (piede) del pilastro di supporto in mm. |
| sla_support_base_height | number | SLA: altezza della base (piede) del pilastro di supporto in mm. |
| sla_support_object_elevation | number | SLA: 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_angle | number | SLA: pendenza del ponte in gradi utilizzata per l’instradamento dei supporti. Non è la stessa cosa di support_overhang_angle. |
| sla_support_max_pillar_link_distance | number | SLA: i pilastri più distanti di questo valore non sono collegati tra loro (mm). |
| sla_support_max_bridge_length | number | SLA: il ponte laterale più lungo che una testa di supporto può compiere per raggiungere la piastra (mm). |
| sla_support_max_bridges_on_pillar | number | SLA: numero di ponti che un singolo pilastro può accettare. |
| sla_support_points_density | number | SLA: 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_compensation | number | SLA: 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_width | number | SLA: 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_layers | number | SLA: 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_speed | number | SLS: Velocità del laser (mm/s) |
| sls_hatch_spacing | number | SLS: Spaziatura di tratteggio (mm) |
| mjf_layer_time | number | MJF: secondi per strato. Il build rate pubblicato da HP è esattamente area del letto x spessore dello strato / tempo di strato, quindi questo singolo numero determina l'intero tempo di costruzione; la geometria XY non entra mai in gioco. La scheda tecnica della 4200 indica 7,55 s con uno strato da 0,08 mm. |
| mjf_layer_thickness | number | MJF: spessore dello strato (mm). HP fornisce la serie 4200/5200 con 0,08 mm. |
| mjf_preheat_time | integer | MJF: tempo di preriscaldamento prima dell'avvio della costruzione (minuti). Condiviso da tutti i pezzi della costruzione e fatturato pro rata. |
| mjf_cooling_time | integer | MJF: tempo di raffreddamento dopo la costruzione (minuti). La torta di polvere deve raffreddarsi prima del disimballaggio; condiviso da tutti i pezzi e fatturato pro rata. |
| mjf_power | number | MJF: assorbimento medio di potenza della macchina (W), usato per la voce di costo energetico. |
| mjf_bb_multiplier | number | MJF: moltiplicatore sulla quota di volume di costruzione (torta) addebitata a un pezzo. 0 = al pezzo non viene addebitata la polvere che sposta nella torta. |
| mjf_part_spacing | number | MJF: distanza minima tra i pezzi nella torta di polvere (mm). Determina quanti pezzi entrano in una costruzione e quindi la quota per pezzo di preriscaldamento, raffreddamento e polvere. |
| slm_laser_speed | number | SLM: velocità di scansione del laser (mm/s). L'identità del build rate del produttore è spessore dello strato x velocità di scansione x distanza di hatch x numero di laser: questi quattro campi definiscono insieme il tempo di scansione. |
| slm_hatch_spacing | number | SLM: distanza tra linee di scansione adiacenti (mm). |
| slm_layer_thickness | number | SLM: spessore dello strato (mm). Le macchine a letto di polvere metallica lavorano tipicamente tra 0,02 e 0,06 mm. |
| slm_laser_count | integer | SLM: numero di laser. Un divisore dell'intero termine di scansione, esattamente come nella formula del build rate del produttore. NON riduce la ricopertura di polvere. |
| slm_contour_count | integer | SLM: numero di passaggi di contorno (bordo) attorno al profilo di ogni strato. 0 = nessun passaggio di contorno. |
| slm_contour_speed | number | SLM: velocità del passaggio di contorno (mm/s); di solito più lenta della velocità di hatch. |
| slm_jump_speed | number | SLM: velocità di riposizionamento (salto) del laser tra i vettori di scansione (mm/s). |
| slm_recoat_time | number | SLM: secondi necessari al recoater per ogni strato. Il valore di build rate del produttore ESCLUDE la ricopertura, quindi, a differenza dell'SLS, questo valore non può essere dedotto da un build rate pubblicato: misuralo sulla macchina. |
| slm_preheat_time | integer | SLM: tempo di preriscaldamento della camera e di lavaggio con gas inerte (minuti), condiviso da tutti i pezzi sulla piastra. |
| slm_cooldown_time | integer | SLM: tempo di raffreddamento dopo la costruzione (minuti), condiviso da tutti i pezzi sulla piastra. |
| slm_power | number | SLM: assorbimento medio di potenza della macchina (W), usato per la voce di costo energetico. |
| slm_part_spacing | number | SLM: distanza minima tra i pezzi sulla piastra di costruzione (mm). I pezzi SLM non possono essere impilati in Z - ogni pezzo è saldato alla piastra - quindi questo valore determina direttamente il nesting sulla piastra e il numero di pezzi per costruzione. |
| slm_build_plate_cost | number | SLM: costo della piastra di costruzione per ciclo, ripartito tra i pezzi di quel ciclo. 0 = non addebitato. |
| slm_plate_removal_cost | number | SLM: costo per separare i pezzi dalla piastra (elettroerosione a filo o segatrice a nastro) per ciclo, ripartito tra i pezzi di quel ciclo. 0 = non addebitato. |
| slm_stress_relief_cost | number | SLM: costo del ciclo di forno per la distensione delle tensioni per costruzione, ripartito tra i pezzi di quel ciclo. 0 = non addebitato. |
| slm_inert_gas_flow | number | SLM: consumo di argon o azoto (litri al minuto) durante la costruzione. 0 = non addebitato. |
| slm_inert_gas_cost_per_liter | number | SLM: prezzo di un litro di gas inerte, nella valuta del preventivo. 0 = non addebitato. |
| slm_support_removal_cost_per_cm3 | number | SLM: costo della rimozione manuale dei supporti per cm3 di supporto. I supporti metallici sopportano carichi e calore e vengono tagliati, non staccati a mano. 0 = non addebitato. |
| sls_layer_thickness | number | SLS: Spessore dello strato (mm) |
| sls_layer_recoat_time | number | SLS: Tempo di ricopertura dello strato (secondi) |
| sls_preheat_time | number | SLS: Tempo di preriscaldamento (min) |
| sls_cooling_time | number | SLS: Tempo di raffreddamento (min) |
| sla_light_off_delay | number | SLA: Light-off delay for each layer (seconds). |
| sla_transition_layer_count | number | SLA: Number of transition layers. |
| sla_drain_holes | array | SLA: Drainage holes configuration to prevent suction cups. |
| sls_bb_multiplier | number | SLS: 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_count | number | SLS: numero di passaggi di contorno (bordo) che il laser traccia attorno al profilo di ogni slice. 0 disabilita il passaggio di contorno. |
| sls_contour_speed | number | SLS: velocità di scansione del contorno in mm/s. 0 indica che il contorno viene scansionato alla velocità sls_laser_speed. |
| sls_jump_speed | number | SLS: 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_spacing | number | SLS: 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_flow | number | Maximum 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.
| Parametro | Tipo | Descrizione |
|---|---|---|
| filament_type | string | Filament type (PLA, ABS, PETG, etc.) |
| color | string | Nome del colore (ad es. 'White', 'Black', '#FFFFFF'). Nota: per le tecnologie volumetriche (SLA, SLS, SLM, MJF) il colore viene applicato solo se 'post_processing' è impostato su 'painting' o 'painted'. |
| density | number | Material density (g/cm³) |
| diameter | number | Filament diameter (mm) |
| filament_flow_ratio | number | Moltiplicatore 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_density | number | SLS: Bulk density of loose powder in g/cm³. Used for reusable powder and refresh calculations. |
| temperature | number | Print temperature (°C) |
| print_temp_min | number | Minimum print temperature (°C) |
| print_temp_max | number | Maximum print temperature (°C) |
| bed_temperature | number | Bed temperature (°C) |
| bed_temp_min | number | Minimum bed temperature (°C) |
| bed_temp_max | number | Maximum bed temperature (°C) |
| fan_speed | number | Fan speed (0-100%) |
| min_fan_speed | number | Minimum fan speed (0-100%) |
| retraction_distance | number | Retraction distance (mm) |
| retraction_speed | number | Retraction speed (mm/s) |
| slow_down_min_speed | number | Lower speed bound for layer cooling (mm/s). Reference default 20. |
| retraction_minimum_travel | number | Overrides the printer value for this material (mm). |
| z_hop_mm | number | Overrides the printer value for this material (mm). |
| price_per_kg | number | Price per kilogram |
| price_per_gram | number | Price per gram |
| support_cost_multiplier | number | Support material cost multiplier |
| sls_refresh_factor | number | SLS powder refresh rate ratio (e.g. 0.3 = 30% fresh powder). |
| mjf_refresh_factor | number | Rapporto di rinnovo della polvere MJF (ad es. 0,2 = 20% di polvere nuova). HP pubblica un rapporto distinto per ogni polvere, misurato in modo diverso dal rapporto SLS dello stesso polimero. Ometti per ricadere su sls_refresh_factor. |
| mjf_fusing_agent_ml_per_cm3 | number | MJF: agente di fusione consumato per cm3 di volume di pezzo fuso (mL/cm3). Misura di officina; 0 lascia il costo degli agenti fuori dal preventivo. |
| mjf_detail_agent_ml_per_cm2 | number | MJF: agente di dettaglio consumato per cm2 di area di contorno fusa (mL/cm2). Stessa misura, riferita all'area di contorno; 0 lo esclude. |
| mjf_agent_cost_per_liter | number | MJF: prezzo dell'agente al litro nella valuta del preventivo. 0 disattiva la voce di costo degli agenti. |
| metal_powder_loss_factor | number | SLM: perdita di setacciatura e movimentazione come frazione del volume del pezzo più i supporti (0,05 = 5%). La polvere metallica non utilizzata viene setacciata e riutilizzata, quindi - a differenza di SLS e MJF - la polvere circostante NON viene fatturata. |
| max_volumetric_flow | number | Material specific volumetric flow limit in mm³/s. |
| min_layer_time | number | Minimum 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'.
| Parametro | Tipo | Descrizione |
|---|---|---|
| currency | string | Currency code, one of TRY, USD, EUR, GBP, JPY, CNY, RUB, CAD, AUD, CHF, SEK, NOK, DKK, SGD, HKD, NZD, MXN, BRL, INR; case does not matter. Defaults to your dashboard preference. |
| tax_rate | number | Tax rate percentage (0-100) |
| fixed_fee | number | Fixed fee per quote |
| minimum_price | number | Prezzo minimo del preventivo: una soglia al netto delle imposte per l'intero preventivo. Un preventivo più economico viene portato a tale soglia, uno più costoso resta invariato. Predefinito: il vostro prezzo minimo per la tecnologia del preventivo; 0 = nessuno. |
| energy_cost_per_kwh | number | Energy cost per kWh |
| hollowing | string | Specifico di SLA, SLS e MJF: 'solid', '2mm' o '3mm'. Per l'SLA il valore predefinito è '2mm' quando lo svuotamento SLA è attivo nelle impostazioni; per SLS e MJF vale lo stesso con la rispettiva impostazione. Ignorato per l'FDM, dove la cavità è definita da fill_density, e per l'SLM, dove una cavità sigillata intrappolerebbe polvere impossibile da evacuare. I pezzi SLS e MJF vengono svuotati SENZA foro di scarico: la polvere non fusa resta all'interno, viene fatturata alla densità del letto di polvere anziché alla densità del solido e non è recuperabile. |
| post_processing | string | Tecnologie volumetriche (SLA, SLS, SLM, MJF): 'standard', 'sanding', 'painting' o 'painted' (predefinito: 'standard'). Il valore viene registrato sul preventivo e quotato con le tariffe di post-elaborazione per tecnologia delle Impostazioni globali. Le tariffe SLM sono più alte su tutta la fascia perché già 'standard' comprende il taglio del pezzo dalla piastra di costruzione e la pulizia della superficie. |
| sla_post_processing_fee_standard | number | SLA standard post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sla_post_processing_fee_sanding | number | SLA sanding post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sla_post_processing_fee_painting | number | SLA painting post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sla_post_processing_fee_painted | number | SLA painted post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sls_post_processing_fee_standard | number | SLS standard post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sls_post_processing_fee_sanding | number | SLS sanding post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sls_post_processing_fee_painting | number | SLS painting post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| sls_post_processing_fee_painted | number | SLS painted post-processing fee per part. Overrides the settings value; post_processing selects which one applies. |
| mjf_post_processing_fee_standard | number | MJF: tariffa applicata quando post_processing è 'standard'. |
| mjf_post_processing_fee_sanding | number | MJF: tariffa applicata quando post_processing è 'sanding'. |
| mjf_post_processing_fee_painting | number | MJF: tariffa applicata quando post_processing è 'painting'. |
| mjf_post_processing_fee_painted | number | MJF: tariffa applicata quando post_processing è 'painted'. |
| slm_post_processing_fee_standard | number | SLM: tariffa applicata quando post_processing è 'standard'. |
| slm_post_processing_fee_sanding | number | SLM: tariffa applicata quando post_processing è 'sanding'. |
| slm_post_processing_fee_painting | number | SLM: tariffa applicata quando post_processing è 'painting'. |
| slm_post_processing_fee_painted | number | SLM: tariffa applicata quando post_processing è 'painted'. |
| mjf_min_build_fill | number | MJF: quota minima della costruzione pagata da un ordine. 0 = la costruzione è condivisa con altri ordini, 1 = l'ordine paga l'intera costruzione. |
| enable_batch_system | boolean | Enable/disable batch calculation system (default: true) |
| sls_min_build_fill | number | SLS: 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_factor | number | Factor for calculating material wastage (e.g. 1.10 for 10% wastage). |
| volume_discount_tiers | array | Quantity 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à:
- Parametri di Richiesta - I valori che fornisci esplicitamente nella richiesta API hanno la priorità più alta
- Profilo Utente - Se hai un profilo specifico per l'utente impostato come predefinito, viene utilizzato successivamente
- 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 webhookGET /v2/webhooks- Elenca tutti i tuoi webhookGET /v2/webhooks/{webhook_id}- Ottieni i dettagli del webhook e le statistiche di consegnaPUT /v2/webhooks/{webhook_id}- Aggiorna le impostazioni del webhookDELETE /v2/webhooks/{webhook_id}- Rimuovi un webhookPOST /v2/webhooks/{webhook_id}/deliveries/{delivery_id}/resend- Invia di nuovo una consegna passata, per esempio dopo aver sistemato il tuo endpoint
Eventi supportati: quote.completed, quote.failed, file.uploaded, file.deleted, job.status_changed, widget.added_to_cart, usage.alert. 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 materialiGET /v2/analytics/popular- Visualizza i tuoi materiali e le configurazioni di stampante più popolariGET /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. Catalogo e scorte
Gestisci stampanti, materiali, colori, scorte per colore, prezzi e tecnologie propri dell’account con un token server. Il widget legge lo stesso catalogo, quindi una modifica arriva subito al modulo di preventivo. I token widget vengono rifiutati e queste chiamate non contano nella quota mensile di richieste:
GET /v2/store/catalog- Tutto ciò che offre l’account, con lo stato di preparazione per tecnologia e i colori in esaurimentoGET /v2/store/catalog/schema- I moduli stampante, materiale e prezzi della dashboard, con limiti, unità e testi di aiuto nella lingua richiestaPOST /v2/store/catalog/adopt- Copia stampanti e materiali globali nell’account, con i colori, il prezzo e le scorte iniziali sceltiPOST /v2/store/catalog/materials- Crea un materiale, anche partendo da uno globaleGET · PATCH · DELETE /v2/store/catalog/materials/{id}- Leggi, modifica o elimina un materiale, incluse le impostazioni delle scortePUT /v2/store/catalog/materials/{id}/colors- Sostituisci l’elenco dei colori di un materiale; le scorte dei colori esistenti restanoGET · PATCH · DELETE /v2/store/catalog/printers/{id}- Leggi, modifica o elimina una stampanteGET · PATCH · DELETE /v2/store/catalog/pricing- Leggi, modifica o reimposta i prezzi; cambiare valuta cambia quella dell’account senza convertire gli importiGET · PUT /v2/store/catalog/technologies- Quali tecnologie consente il piano e quali sono attiveGET · POST /v2/store/stock/movements- Registra un carico, un inventario o uno scarto ed elenca lo storico delle scortePOST /v2/store/stock/orders- Scala, restituisci o verifica il materiale di un ordine pagato, al massimo una volta per preventivo
I body PATCH contengono values e updated_at. values usa gli stessi nomi di campo snake_case dell’elenco del catalogo (un nome che il modulo non ha viene rifiutato con 400); se il profilo è cambiato dopo la tua lettura, la chiamata risponde 409 con error_key stale.
10. 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
- Il tuo piano stabilisce una quota di preventivi, che si azzera a ogni periodo di fatturazione, e una quota di spazio, che non si azzera mai e si libera solo eliminando i file
- 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.
11. Risposte ed errori
Le risposte riuscite hanno due forme. Le chiamate di preventivo, job, dettaglio del preventivo salvato, webhook, analisi, utilizzo, quota e configurazione racchiudono il contenuto in success: true con il risultato in data. Le chiamate di file, ID di caricamento, utente, caricamenti, elenco preventivi, stampabilità e Catalogo e scorte restituiscono i loro campi al livello superiore. Il riferimento API mostra lo schema esatto di ogni chiamata. I download di file e le esportazioni CSV restituiscono il contenuto grezzo del file.
{
"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
Ogni errore ha la stessa forma: un elenco detail che indica il parametro o il campo (loc, msg, code), un error_code come AUTH_001, un error_summary e, quando serve, recovery_suggestions e documentation_url. Decidi in base allo stato HTTP e all’error_code, non al testo, che può cambiare.
| Stato | Significato |
|---|---|
| 400 | Il 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. |
| 401 | Il token API è mancante, malformato, scaduto o revocato. |
| 403 | Il token è valido ma non può eseguire questa chiamata: una restrizione di ambito, un’origine o un indirizzo IP non presente nell’elenco del token (AUTH_004), oppure una quota del piano esaurita (RATE_002, con le intestazioni X-Quota-*). |
| 404 | Il 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. |
| 500 | Errore 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.
12. 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