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 tempo
3. Gestione file
Carica, scarica e gestisci i tuoi file di modelli 3D (formati STL, 3MF, OBJ):
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 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}/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 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
| Parametro | Tipo | Descrizione |
|---|---|---|
| technology | string | Facoltativo. 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_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) |
| 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 | Opzionale: Nome del colore (es. 'Bianco', 'Nero', '#FFFFFF'). Nota: per le tecnologie SLA/SLS, il colore viene applicato solo se 'post_processing' è impostato su '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). |
| 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 (USD, TRY, EUR, GBP, JPY, CNY, RUB). Defaults to your dashboard preference. |
| tax_rate | number | Tax rate percentage (0-100) |
| fixed_fee | number | Fixed fee per quote |
| energy_cost_per_kwh | number | Energy cost per kWh |
| hollowing | string | Specifico 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_processing | string | Specifico 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_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. |
| 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 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 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. 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.
| 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 autorizzato per questa chiamata — di solito una restrizione di ambito o un indirizzo IP bloccato. |
| 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.
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