Bienvenue dans la documentation Quote3D ! ⏳

Concepts clés : fichiers, devis et travaux

Cette page présente les idées et les modèles de base qui alimentent la plateforme. Comprendre ces concepts vous aidera à tirer le meilleur parti de l'API et à créer des intégrations robustes pour les flux de travail d'impression 3D.

Route de base de l'API

Pour les appels API externes, envoyez les requêtes directement à https://api.quote3d.com/v2/... (par exemple, GET https://api.quote3d.com/v2/user).

Dans votre logiciel, configurez https://api.quote3d.com comme hôte API/URL de base et appelez les chemins v2 tels que /v2/user, /v2/file et /v2/quotes.

1. Authentification et Sécurité

Chaque point de terminaison exige une authentification avec votre jeton d'API Quote3D, à une exception près : la route d'envoi publique documentée sous Gestion des fichiers. Pour les appels externes, utilisez la route de base https://api.quote3d.com/v2. Envoyez le jeton soit comme Authorization: Bearer YOUR_TOKEN, soit comme X-API-Token. Générez vos jetons depuis votre tableau de bord Quote3D et gardez-les secrets.

Les jetons peuvent être limités par portée. Un jeton à accès complet atteint tous les points de terminaison, tandis qu'un jeton de portée widget est restreint à ceux dont le widget intégré a besoin. Tout appel hors de la portée d'un jeton renvoie 403. Vous pouvez consulter et modifier la portée d'un jeton sur la page Jetons de votre tableau de bord.

Rappel : Conservez vos API tokens en sécurité. Ne les partagez jamais publiquement ni ne les intégrez à un contrôle de version.

2. Gestion du compte

Gérez votre compte, vos téléversements et vos statistiques d'utilisation via des points de terminaison dédiés :

  • GET /v2/user Récupère les informations de votre compte, votre offre et vos quotas mensuels — c'est ici que se trouvent quotes_used, quotes_limit, storage_used, storage_limit et reset_date
  • GET /v2/user/uploads Lister tous les fichiers que vous avez téléversés sur votre compte. Ils sont listés du plus récent au plus ancien.
  • GET /v2/quota Récupère vos limites de débit — la limite globale ainsi qu'un détail par point de terminaison avec les appels restants et les heures de réinitialisation — accompagnées de vos volumes de requêtes pour aujourd'hui, ce mois, cette année et depuis toujours
  • GET /v2/usage Obtenir des analyses d'utilisation détaillées, notamment les statistiques des points de terminaison, l'utilisation des matériaux et les tendances basées sur le temps

3. Gestion des fichiers

Téléchargez, téléchargez et gérez vos fichiers de modèles 3D (formats STL, 3MF, OBJ) :

  • GET /v2/file/upload-idObtenez un upload_id temporaire pour télécharger un nouveau fichier via la route de téléchargement public.
  • POST /v2/file/public/{upload_id}Cette route NE nécessite PAS d'authentification. Utilisez-la côté client pour télécharger des fichiers directement vers notre stockage.

    L'utilisation de la route de téléchargement public vous permet d'éviter de router les fichiers volumineux via votre serveur backend. Cela empêche d'exposer votre jeton API et réduit la charge du serveur.

  • POST /v2/fileTéléchargez un fichier depuis votre serveur (nécessite une authentification, utilisez ceci lorsque vous souhaitez télécharger depuis votre backend)
  • GET /v2/file/{file_id}Téléchargez un fichier en utilisant son file_id
  • DELETE /v2/file/{file_id}Supprimez un fichier dont vous n'avez plus besoin

L'envoi est refusé si le fichier n'est pas un modèle STL, 3MF ou OBJ valide, ou s'il dépasse la taille maximale de la plateforme (50 Mo par défaut). Les deux routes d'envoi appliquent les mêmes contrôles.

Comment vos fichiers sont stockés

Les modèles téléchargés sont stockés de manière chiffrée et ne sont jamais accessibles publiquement — il n’existe aucun lien permettant de servir directement un fichier stocké. Le champ file_path dans les réponses est le chemin de téléchargement authentifié (GET /v2/file/{file_id}), et non un emplacement sur le disque ; traitez-le donc comme un endpoint plutôt que comme une URL que vous pouvez partager. La suppression d’un fichier le retire du stockage, et pas seulement de vos listes.

4. Informations sur la pièce et analyse technique

Vérifiez si vos modèles sont imprimables, obtenez les dimensions de la pièce et des métriques techniques avancées :

  • POST /v2/printability/{file_id} Analyse Instantanée – Vérifiez les mesures, le volume, la surface et l'intégrité géométrique (bords ouverts/non-manifold) avant de générer un devis.

Quote3D va au-delà des simples vérifications de dimensions ; il analyse l'intégrité manifold du modèle et évalue le risque d'adhésion au plateau, critique pour l'impression 3D. Ces métriques sont fournies dans les réponses Printability et Quote.

5. Opérations de devis

Générez des devis instantanés pour vos impressions 3D et gérez l'historique des devis :

  • POST /v2/file/quote/{file_id}Démarrez le calcul asynchrone d'un devis pour un modèle 3D. Renvoie un ID de tâche ; utilisez l'endpoint des tâches pour récupérer le résultat une fois terminé.
  • POST /v2/file/quote/{file_id}/asyncEndpoint asynchrone alternatif pour les devis. Renvoie un ID de tâche que vous pouvez utiliser pour vérifier l'état et récupérer le résultat une fois terminé.
  • GET /v2/jobs/{job_id}Vérifiez l'état d'une tâche de devis asynchrone. Renvoie le pourcentage d'avancement et l'état d'achèvement.
  • GET /v2/quotesRécupérez tout votre historique de devis avec une prise en charge de la pagination
  • GET /v2/quotes/{quote_id}Obtenez des informations détaillées sur un devis spécifique
  • DELETE /v2/quotes/{quote_id}Supprimez un devis de votre historique

Workflow asynchrone : POST /v2/file/quote/{file_id} renvoie d'abord un ID de tâche. Utilisez GET /v2/jobs/{job_id} pour le résultat compact une fois terminé, et GET /v2/quotes/{quote_id} pour la charge utile détaillée du devis stockée lorsqu'elle est disponible.

Paramètres de la demande de devis

Lors de la génération d'un devis, vous pouvez fournir une configuration personnalisée dans le corps de la requête. Tous les paramètres que vous ne spécifiez pas seront automatiquement extraits des paramètres de votre Profil de découpe du Tableau de bord. Cela vous permet de remplacer des paramètres spécifiques par devis tout en conservant les paramètres par défaut pour les autres.

Important : Si vous ne fournissez pas un paramètre dans votre requête, l'API utilisera la valeur de votre Profil de découpe du Tableau de bord (Profil d'imprimante, Profil de matériau ou Paramètres globaux). Assurez-vous de configurer vos profils par défaut dans le Tableau de bord pour des devis cohérents. Vous pouvez également configurer tous vos paramètres dans un Profil d'imprimante spécifique sur le Tableau de bord et simplement transmettre son 'printer_id' dans votre requête pour appliquer ces paramètres instantanément sans les transmettre individuellement.

Priorité de configuration : Les valeurs envoyées dans la requête de l'API V2 remplacent les valeurs du profil utilisateur sélectionné ; tout champ manquant revient ensuite aux profils par défaut utilisateur/global.

Les tableaux ci-dessous couvrent les paramètres que les intégrations redéfinissent le plus souvent. Ce n'est pas la liste complète — le moteur de devis accepte bien d'autres champs d'imprimante, de matériau et de tarification, et chacun d'eux peut être défini une fois dans vos Profils de découpe du tableau de bord au lieu d'être envoyé à chaque requête. Configurez-y vos profils et n'envoyez que ce qui varie d'un devis à l'autre ; la liste complète des champs figure dans le schéma OpenAPI.

Request Validation

Les champs numériques de printer_config, material_config et quote_config sont vérifiés par rapport à leurs bornes avant la mise en file d'attente de la tâche. Une valeur hors plage, un nombre non fini (NaN, Infinity), un type incorrect ou un nombre négatif là où seules les valeurs à partir de zéro ont un sens est rejeté avec un HTTP 400 et une VALIDATION_ERROR nommant le champ exact. Zéro reste accepté partout où il a un sens : une vitesse ou une accélération de 0 pour un rôle donné signifie « utiliser la valeur par défaut de l'imprimante », la même convention que celle d'OrcaSlicer.

  • Limites de température : les températures du matériau (temperature et bed_temperature, qu'elles soient envoyées dans la requête ou lues depuis le profil de matériau) sont comparées aux valeurs min_hotend_temp / max_hotend_temp et min_bed_temp / max_bed_temp de l'imprimante. Un matériau nécessitant plus de chaleur que l'imprimante sélectionnée ne peut fournir est rejeté au lieu d'être chiffré. FDM uniquement : les technologies résine et poudre n'ont ni buse ni plateau chauffant. Laissez les limites de l'imprimante non renseignées pour ignorer ce contrôle.
  • Technologies activées : si vous avez restreint les technologies dans vos paramètres globaux, toute demande de devis portant sur une technologie désactivée est rejetée. Laissez le paramètre vide pour accepter les trois.
  • Champs de prix du matériau : price_per_gram est la valeur facturée par le moteur. Lors de l'enregistrement d'un profil de matériau, price_per_kg est automatiquement recalculé à partir de celle-ci (et price_per_gram est déduit de price_per_kg lorsque seul le prix au kilogramme est fourni), de sorte que les deux ne peuvent jamais diverger.

Paramètres racines

ParamètreTypeDescription
technologystringFacultatif. Technologie de production : 'FDM', 'SLA' ou 'SLS' ('RESIN' est accepté comme alias de 'SLA'). Détermine quels paramètres spécifiques à la technologie s'appliquent et comment les pièces sont regroupées pour la production en série. En son absence, la technologie de l'imprimante sélectionnée est utilisée, avec 'FDM' par défaut.
printer_idstringFacultatif. ID d'une imprimante spécifique à utiliser au lieu de l'imprimante par défaut.
quantitynumberFacultatif. Le nombre total de copies à produire (Par défaut : 1).

Logique de quantité et de production en lots

Notre système utilise un algorithme d'emballage avancé basé sur la 'quantity' spécifiée :

  • Technologie FDM : Les pièces sont placées côte à côte sur le plateau d'impression (axes X et Y) dans la mesure de l'espace disponible.
  • Technologie SLA : Les pièces sont positionnées côte à côte dans le bac à résine (axes X et Y).
  • Technologie SLS : Les pièces peuvent être empilées sur tous les axes (X, Y et Z) pour utiliser pleinement la capacité du lit de poudre.

Grâce à cet arrangement optimisé, si plusieurs pièces peuvent tenir dans un seul lot, les coûts fixes tels que le préchauffage, le refroidissement et les changements de couches ne sont appliqués que par lot requis. Cela garantit des prix réalistes et rentables pour les commandes en volume.

printer_config

Paramètres de configuration de l'imprimante. Tous les champs sont facultatifs et utiliseront les valeurs par défaut de votre Profil d'imprimante si non fournis.

ParamètreTypeDescription
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_patternstringMotif de remplissage. Par défaut : rectilinear. Basique (rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid), Triangle (triangles, trihexagon), Cubique (cubic, adaptivecubic, supportcubic), Nid d’abeille (honeycomb, honeycomb3d, lateralhoneycomb), Avancé (gyroid), Spécial (monotonic, monotonicline), Remplissage d’espace (hilbertcurve, archimedeanchords, octagramspiral). hilbertcurve, archimedeanchords et octagramspiral sont acceptés mais n’ont pas leur propre générateur — ils sont traités comme rectilinear. Les valeurs sont comparées sans tenir compte de la casse et les séparateurs sont ignorés, donc tri-hexagon et Zig Zag fonctionnent tous deux ; l’orthographe 3dhoneycomb d’OrcaSlicer est également acceptée. lightning, quartercubic, laterallattice, crosshatch, concentric, tpmsd et tpmsfk ne sont pas supportés et renvoient une erreur 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
SPÉCIFIQUE SLA
sla_exposure_timenumberSLA : Temps d'exposition par couche (secondes)
sla_bottom_exposure_timenumberSLA : Temps d'exposition de base (secondes)
sla_bottom_layer_countnumberSLA : Nombre de couches de base
sla_lift_distancenumberSLA : Distance de levage (mm)
sla_lift_speednumberSLA : Vitesse de levage (mm/min)
sla_retract_speednumberSLA : Vitesse de rétraction (mm/min)
sla_cleaning_costnumberSLA : Coût fixe de nettoyage par impression (IPA, consommables)
sla_pad_enabledbooleanSLA : imprimer le modèle sur un socle/radeau. Désactivé par défaut ; la résine du socle est comptabilisée avec le matériau de support.
sla_pad_wall_thicknessnumberSLA : épaisseur de la paroi du socle en mm. Alias : sla_pad_height.
sla_pad_wall_heightnumberSLA : hauteur de la paroi du socle en mm (bordure surélevée autour de la cavité du socle).
sla_pad_wall_slopenumberSLA : pente de la paroi du socle en degrés (45-90). Le socle s'effile vers le bas selon cet angle.
sla_pad_brim_sizenumberSLA : taille du brim du socle en mm. Alias : sla_pad_expansion.
sla_pad_max_merge_distancenumberSLA : les pieds de support plus proches que cette valeur sont fusionnés en un seul îlot de socle (mm).
sla_support_head_front_diameternumberSLA : diamètre de la pointe (avant) de la tête de support en mm.
sla_support_head_penetrationnumberSLA : profondeur d’enfoncement de la tête de support dans la surface du modèle (mm).
sla_support_head_widthnumberSLA : longueur de la tige de la tête de support en mm.
sla_support_pillar_diameternumberSLA : diamètre du pilier de support en mm. Constitue la majeure partie du volume de résine de support.
sla_support_base_diameternumberSLA : diamètre de la base (pied) du pilier de support en mm.
sla_support_base_heightnumberSLA : hauteur de la base (pied) du pilier de support en mm.
sla_support_object_elevationnumberSLA : élévation de l’objet au-dessus du plateau de construction en mm. Ajoute également des couches imprimées, ce qui affecte le temps d’impression. Appliqué uniquement lorsque les supports sont générés.
sla_support_critical_anglenumberSLA : pente du pont en degrés utilisée lors du tracé des supports. Ce n’est pas la même chose que support_overhang_angle.
sla_support_max_pillar_link_distancenumberSLA : les piliers plus éloignés que cette valeur ne sont pas reliés entre eux (mm).
sla_support_max_bridge_lengthnumberSLA : pont latéral le plus long qu’une tête de support peut effectuer pour atteindre le plateau (mm).
sla_support_max_bridges_on_pillarnumberSLA : nombre de ponts qu’un seul pilier peut accepter.
sla_support_points_densitynumberSLA : densité des points de support en pourcentage, 100 = normal. Ce n’est PAS la même valeur que support_density, qui est le pourcentage de remplissage des supports FDM.
sla_elephant_foot_compensationnumberSLA : Distance de retrait des premières couches pour compenser l’élargissement à la base. Valeur de référence 0,2 sur chaque imprimante SLA fournie. 0 désactive l’option.
sla_elephant_foot_min_widthnumberSLA : Les contours plus étroits que cette valeur ne sont pas modifiés afin de ne pas supprimer les détails fins. Valeur de référence 0,2.
sla_faded_layersnumberSLA : Nombre de couches sur lesquelles la compensation s’estompe jusqu’à zéro. Il ne s’agit PAS du nombre de couches de base ; le profil MSLA de référence utilise 8.
SPÉCIFIQUE SLS
sls_laser_speednumberSLS : Vitesse du laser (mm/s)
sls_hatch_spacingnumberSLS : Espacement des hachures (mm)
sls_layer_thicknessnumberSLS : Épaisseur de couche (mm)
sls_layer_recoat_timenumberSLS : temps d'étalement de couche (secondes)
sls_preheat_timenumberSLS : Temps de préchauffage (min)
sls_cooling_timenumberSLS : Temps de refroidissement (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 : surcharge d’espace machine par équivalent gramme de l’emplacement de fabrication occupé par une pièce. L’emplacement correspond à la boîte de volume minimum de la pièce plus sa part des espaces de poudre et des bords inutilisables de la chambre ; il ne change donc pas si le modèle est importé avec une rotation. 0 désactive la surcharge.
sls_contour_countnumberSLS : nombre de passes de contour (bordure) que le laser trace autour du contour de chaque tranche. 0 désactive la passe de contour.
sls_contour_speednumberSLS : vitesse de balayage du contour en mm/s. 0 signifie que le contour est balayé à la vitesse sls_laser_speed.
sls_jump_speednumberSLS : vitesse de saut galvo en mm/s pour les mouvements de repositionnement sans frittage entre les vecteurs de balayage. 0 effectue les sauts à la vitesse sls_laser_speed, qui constitue une limite supérieure.
sls_part_spacingnumberSLS : espace de poudre minimum autour d’une pièce en mm, appliqué à la fois entre les pièces et par rapport à la paroi de la chambre. Cela détermine le nombre de pièces pouvant tenir dans une fabrication, et influence donc à la fois la part du volume machine et la répartition des coûts fixes. 0 utilise la valeur par défaut du moteur de 3 mm.
max_volumetric_flownumberMaximum volumetric flow rate in mm³/s.

material_config

Paramètres de configuration du matériau. Tous les champs sont facultatifs et utiliseront les valeurs par défaut de votre Profil de matériau si non fournis.

Intégration du profil de matériau : Le paramètre filament_type doit correspondre à un nom de matériau de votre Profil de matériau du Tableau de bord. Lorsque vous spécifiez un filament_type (par exemple, "PLA", "ABS", "PETG"), l'API charge automatiquement toutes les propriétés de ce Profil de matériau, y compris la densité, les températures, les paramètres de rétraction et les prix.

Précision des prix : le coût du matériau est calculé à partir de price_per_gram. Il suffit de définir price_per_kg ou price_per_gram dans le profil de matériau — l'autre valeur est maintenue synchronisée automatiquement. Vous pouvez toujours remplacer le prix pour une requête donnée en indiquant price_per_gram ou price_per_kg dans material_config.

Exemple : Si vous avez un profil de matériau "PLA" dans votre Tableau de bord avec price_per_kg : 20.0 et price_per_gram : 0.02, vous pouvez simplement envoyer {"filament_type": "PLA"} dans votre requête, et tous les prix seront calculés automatiquement.

ParamètreTypeDescription
filament_typestringFilament type (PLA, ABS, PETG, etc.)
colorstringNom de la couleur (ex. 'Blanc', 'Noir', '#FFFFFF'). Remarque : Pour les technologies SLA/SLS, la couleur n'est appliquée que si 'post_processing' est défini sur 'painted'.
densitynumberMaterial density (g/cm³)
diameternumberFilament diameter (mm)
filament_flow_rationumberMultiplicateur du ratio de débit FDM. 1,0 signifie un débit de 100 %. Les valeurs demandées remplacent le profil de matériau utilisateur sélectionné ; si elles sont absentes, la valeur du profil global est utilisée avant d'appliquer la valeur par défaut de 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

Paramètres de configuration du calcul de devis. Tous les champs sont facultatifs et utiliseront vos valeurs de Paramètres globaux par défaut si non fournis. La devise est par défaut celle de votre tableau de bord (par exemple, 'USD', 'TRY', 'EUR').

ParamètreTypeDescription
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
hollowingstringSpécifique SLA/SLS : 'solid', '2mm' ou '3mm'. Pour la SLA, la valeur par défaut est '2mm' lorsque l'évidement SLA est activé dans vos paramètres ; pour la SLS, elle est de '2mm' lorsque l'évidement SLS est activé. Les pièces SLS sont évidées SANS trou d'évacuation, donc la poudre non frittée reste à l'intérieur : elle est facturée à la densité du lit de poudre et n'est pas récupérable. Une pièce dont les parois sont déjà plus fines que deux fois l'épaisseur de paroi configurée reste pleine.
post_processingstringSpécifique SLA/SLS : 'standard', 'sanding', 'painting' ou 'painted' (par défaut : 'standard'). La valeur est enregistrée sur le devis ; c'est aussi 'painted' qui fait appliquer la couleur demandée aux pièces 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 : remplissage minimum du volume d’impression sous forme de fraction entre 0 et 1. La commande est facturée comme si elle occupait au moins cette part d’un cycle d’impression — 0 partage le volume avec d’autres travaux, 1 facture l’intégralité du cycle. Ignoré lorsque enable_batch_system est faux.
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.

Conseil : Les devis sont automatiquement enregistrés dans votre compte. Vous pouvez y accéder à tout moment via les points de terminaison de l'historique des devis.

6. Profils d'imprimante et de devis

Configurez les paramètres de l'imprimante et les prix pour obtenir des devis précis. Vous pouvez gérer vos profils par défaut dans la section Profils de découpe du Tableau de bord, qui seront utilisés automatiquement lorsque vous ne spécifiez pas de paramètres dans les requêtes API.

Types de profils

  • Profil d'imprimante - Configurez les paramètres de votre imprimante (taille du plateau, diamètre de la buse, vitesse d'impression, hauteur de couche, accélération, jerk, températures, etc.) pour correspondre à votre imprimante réelle. Définissez-le comme profil par défaut dans le Tableau de bord, et il sera utilisé pour toutes les demandes de devis, sauf si vous remplacez des paramètres spécifiques.
  • Profil de matériau - Définissez les propriétés du matériau (type de filament, densité, diamètre, températures, vitesse du ventilateur, paramètres de rétraction, prix) pour chaque matériau que vous utilisez. L'API utilisera automatiquement le profil de matériau correspondant au filament_type que vous spécifiez dans la requête.
  • Paramètres globaux - Configurez les paramètres globaux du devis tels que le taux de taxe, les frais fixes, les coûts énergétiques et la devise par défaut. Ces paramètres s'appliquent à tous les devis, sauf s'ils sont remplacés dans la requête.

Bonne pratique : Configurez vos profils par défaut dans la section Profils de découpe du Tableau de bord. De cette façon, vous pouvez effectuer des demandes de devis simples sans spécifier tous les paramètres, et l'API utilisera automatiquement vos paramètres configurés par défaut. Vous pouvez toujours remplacer n'importe quel paramètre par requête si nécessaire.

Fonctionnement de la fusion des profils

Lorsque vous effectuez une demande de devis, l'API fusionne vos paramètres de requête avec vos profils du Tableau de bord en utilisant cette priorité :

  1. Paramètres de la requête - Les valeurs que vous fournissez explicitement dans la requête API ont la priorité la plus élevée
  2. Profil utilisateur - Si vous avez un profil spécifique à l'utilisateur défini comme par défaut, il est utilisé ensuite
  3. Profil global - Si aucun profil utilisateur n'existe, le système revient aux paramètres globaux par défaut

Cela signifie que vous pouvez remplacer uniquement les paramètres dont vous avez besoin (par exemple, uniquement layer_height ou fill_density) tout en conservant tous les autres paramètres de vos profils du Tableau de bord.

7. Webhooks

Recevez des notifications en temps réel lorsque des événements se produisent dans votre compte :

  • POST /v2/webhooks - Créer un nouveau point de terminaison webhook
  • GET /v2/webhooks - Lister tous vos webhooks
  • GET /v2/webhooks/{webhook_id} - Obtenir les détails du webhook et les statistiques de livraison
  • PUT /v2/webhooks/{webhook_id} - Mettre à jour les paramètres du webhook
  • DELETE /v2/webhooks/{webhook_id} - Supprimer un webhook

Événements pris en charge : quote.completed, quote.failed, file.uploaded, file.deleted, job.status_changed, widget.added_to_cart. Les webhooks incluent des signatures HMAC-SHA256 pour la vérification de la sécurité.

Référence des webhooks : structure de la charge utile, vérification de signature, reprises et relivraison

8. Analyses et Rapports

Obtenez des informations sur l'utilisation de votre API et les statistiques de devis :

  • GET /v2/analytics/quotes - Obtenez des statistiques complètes sur les devis, notamment le nombre total de devis, les prix moyens et les tendances de l'utilisation des matériaux
  • GET /v2/analytics/popular - Visualisez vos matériaux et configurations d'imprimante les plus populaires
  • GET /v2/analytics/cost-trends - Analysez l'évolution des coûts dans le temps (regroupement quotidien, hebdomadaire ou mensuel)
  • GET /v2/analytics/export - Exportez vos devis et vos données d'utilisation au format CSV ou JSON

9. Limitation de débit et quotas

Quote3D utilise la limitation de débit pour garantir une utilisation équitable et la stabilité du système :

  • Les limites de débit sont appliquées par jeton API et varient en fonction du point de terminaison
  • Les informations de limitation de débit sont incluses dans les en-têtes de réponse : X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Window
  • En cas de limitation de débit, vous recevrez une réponse 429 Trop de requêtes avec un en-tête Retry-After
  • Les quotas mensuels pour les devis et le stockage sont basés sur votre plan d'abonnement
  • Les limites sont configurables par déploiement : lisez les valeurs courantes plutôt que de les coder en dur. Les en-têtes de réponse ci-dessus comme ce point de terminaison les indiquent : GET /v2/quota

Bonne pratique : Implémentez un retour exponentiel lorsque vous gérez les erreurs de limitation de débit pour éviter de surcharger l'API.

10. Réponses et erreurs

Chaque réponse JSON utilise la même enveloppe. Un appel réussi renvoie success: true avec la charge utile du point de terminaison sous data, afin que votre client lise partout une structure cohérente. Les téléchargements de fichiers et les exports CSV font exception : ils renvoient le corps brut du fichier au lieu de l'enveloppe.

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

Pagination et tri

Les points de terminaison de liste tels que /v2/quotes et /v2/user/uploads sont paginés avec les paramètres limit et offset (50 résultats par défaut, 100 au maximum). À côté des résultats, ils renvoient un objet pagination contenant total, limit, offset, has_more, page et total_pages : préférez donc has_more plutôt que de recalculer vous-même la fin de la liste. Le tri utilise un paramètre unique et répétable au format field:direction, par exemple ?sort=created_at:desc&sort=total_price:asc ; les envois sont triés du plus récent au plus ancien par défaut.

Réponses d'erreur

Les échecs renvoient success: false avec un message d'erreur lisible et le code de statut HTTP correspondant. Basez toujours votre logique sur le code de statut plutôt que sur le texte du message, qui peut être reformulé.

StatutSignification
400Le corps de la requête ou un paramètre est invalide — champ mal formé, format de fichier non pris en charge, ou modèle qui n'entre pas dans l'imprimante sélectionnée.
401Le jeton d'API est absent, mal formé, expiré ou révoqué.
403Le jeton est valide mais n'est pas autorisé pour cet appel — en général une restriction de portée ou une adresse IP bloquée.
404Le fichier, devis, travail ou webhook demandé n'existe pas ou n'appartient pas à votre compte.
429Une limite de débit a été dépassée. Lisez l'en-tête Retry-After et temporisez avant de réessayer.
500Erreur serveur inattendue. Vous pouvez réessayer avec temporisation ; si cela persiste, contactez le support en indiquant l'horodatage.

Les devis asynchrones sont différents : la mise en file d'attente réussit avec un 202, et un calcul qui échoue ensuite se manifeste par un statut failed accompagné d'un message d'erreur sur le point de terminaison du travail — et non par une erreur HTTP. Inspectez toujours le statut du travail, pas seulement le code obtenu au démarrage.

11. API RESTful et versionnée

  • Tous les points de terminaison sont versionnés (par exemple, /v2/)
  • Utilise les méthodes HTTP standard : GET, POST, PUT, DELETE
  • Décrite par un schéma OpenAPI 3.0.3 que vous pouvez importer dans vos propres outils
  • Les ruptures de compatibilité et les ajouts sont consignés dans le journal des modifications de l'API