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/userRé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_dateGET /v2/user/uploadsLister 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/quotaRé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 toujoursGET /v2/usageObtenir 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-id— Obtenez 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/file— Té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_idDELETE /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}/async— Endpoint 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/quotes— Récupérez tout votre historique de devis avec une prise en charge de la paginationGET /v2/quotes/{quote_id}— Obtenez des informations détaillées sur un devis spécifiqueDELETE /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ètre | Type | Description |
|---|---|---|
| technology | string | Facultatif. 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_id | string | Facultatif. ID d'une imprimante spécifique à utiliser au lieu de l'imprimante par défaut. |
| quantity | number | Facultatif. 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ètre | Type | Description |
|---|---|---|
| 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 | Motif 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_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 |
| SPÉCIFIQUE SLA | ||
| sla_exposure_time | number | SLA : Temps d'exposition par couche (secondes) |
| sla_bottom_exposure_time | number | SLA : Temps d'exposition de base (secondes) |
| sla_bottom_layer_count | number | SLA : Nombre de couches de base |
| sla_lift_distance | number | SLA : Distance de levage (mm) |
| sla_lift_speed | number | SLA : Vitesse de levage (mm/min) |
| sla_retract_speed | number | SLA : Vitesse de rétraction (mm/min) |
| sla_cleaning_cost | number | SLA : Coût fixe de nettoyage par impression (IPA, consommables) |
| sla_pad_enabled | boolean | SLA : 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_thickness | number | SLA : épaisseur de la paroi du socle en mm. Alias : sla_pad_height. |
| sla_pad_wall_height | number | SLA : hauteur de la paroi du socle en mm (bordure surélevée autour de la cavité du socle). |
| sla_pad_wall_slope | number | SLA : pente de la paroi du socle en degrés (45-90). Le socle s'effile vers le bas selon cet angle. |
| sla_pad_brim_size | number | SLA : taille du brim du socle en mm. Alias : sla_pad_expansion. |
| sla_pad_max_merge_distance | number | SLA : les pieds de support plus proches que cette valeur sont fusionnés en un seul îlot de socle (mm). |
| sla_support_head_front_diameter | number | SLA : diamètre de la pointe (avant) de la tête de support en mm. |
| sla_support_head_penetration | number | SLA : profondeur d’enfoncement de la tête de support dans la surface du modèle (mm). |
| sla_support_head_width | number | SLA : longueur de la tige de la tête de support en mm. |
| sla_support_pillar_diameter | number | SLA : diamètre du pilier de support en mm. Constitue la majeure partie du volume de résine de support. |
| sla_support_base_diameter | number | SLA : diamètre de la base (pied) du pilier de support en mm. |
| sla_support_base_height | number | SLA : hauteur de la base (pied) du pilier de support en mm. |
| sla_support_object_elevation | number | SLA : é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_angle | number | SLA : 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_distance | number | SLA : les piliers plus éloignés que cette valeur ne sont pas reliés entre eux (mm). |
| sla_support_max_bridge_length | number | SLA : pont latéral le plus long qu’une tête de support peut effectuer pour atteindre le plateau (mm). |
| sla_support_max_bridges_on_pillar | number | SLA : nombre de ponts qu’un seul pilier peut accepter. |
| sla_support_points_density | number | SLA : 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_compensation | number | SLA : 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_width | number | SLA : 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_layers | number | SLA : 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_speed | number | SLS : Vitesse du laser (mm/s) |
| sls_hatch_spacing | number | SLS : Espacement des hachures (mm) |
| sls_layer_thickness | number | SLS : Épaisseur de couche (mm) |
| sls_layer_recoat_time | number | SLS : temps d'étalement de couche (secondes) |
| sls_preheat_time | number | SLS : Temps de préchauffage (min) |
| sls_cooling_time | number | SLS : Temps de refroidissement (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 : 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_count | number | SLS : 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_speed | number | SLS : vitesse de balayage du contour en mm/s. 0 signifie que le contour est balayé à la vitesse sls_laser_speed. |
| sls_jump_speed | number | SLS : 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_spacing | number | SLS : 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_flow | number | Maximum 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ètre | Type | Description |
|---|---|---|
| filament_type | string | Filament type (PLA, ABS, PETG, etc.) |
| color | string | Nom 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'. |
| density | number | Material density (g/cm³) |
| diameter | number | Filament diameter (mm) |
| filament_flow_ratio | number | Multiplicateur 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_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
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ètre | Type | Description |
|---|---|---|
| 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 | Spé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_processing | string | Spé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_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 : 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_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. |
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é :
- Paramètres de la requête - Les valeurs que vous fournissez explicitement dans la requête API ont la priorité la plus élevée
- Profil utilisateur - Si vous avez un profil spécifique à l'utilisateur défini comme par défaut, il est utilisé ensuite
- 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 webhookGET /v2/webhooks- Lister tous vos webhooksGET /v2/webhooks/{webhook_id}- Obtenir les détails du webhook et les statistiques de livraisonPUT /v2/webhooks/{webhook_id}- Mettre à jour les paramètres du webhookDELETE /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é.
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ériauxGET /v2/analytics/popular- Visualisez vos matériaux et configurations d'imprimante les plus populairesGET /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é.
| Statut | Signification |
|---|---|
| 400 | Le 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. |
| 401 | Le jeton d'API est absent, mal formé, expiré ou révoqué. |
| 403 | Le 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. |
| 404 | Le fichier, devis, travail ou webhook demandé n'existe pas ou n'appartient pas à votre compte. |
| 429 | Une limite de débit a été dépassée. Lisez l'en-tête Retry-After et temporisez avant de réessayer. |
| 500 | Erreur 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