Willkommen zur Quote3D Dokumentation! ⏳

Kernkonzepte: Dateien, Angebote und Jobs

Diese Seite führt in die grundlegenden Ideen und Muster ein, die die Plattform antreiben. Ein Verständnis dieser Konzepte hilft Ihnen, das Beste aus der API herauszuholen und robuste Integrationen für 3D-Druck-Workflows zu erstellen.

API-Basisroute

Senden Sie Anfragen für externe API-Aufrufe direkt an https://api.quote3d.com/v2/... (zum Beispiel GET https://api.quote3d.com/v2/user).

Legen Sie in Ihrer Software https://api.quote3d.com als API-Host/Basis-URL fest und rufen Sie v2-Pfade wie /v2/user, /v2/file und /v2/quotes auf.

1. Authentifizierung & Sicherheit

Jeder Endpunkt erfordert eine Authentifizierung mit Ihrem Quote3D-API-Token, mit einer Ausnahme: der öffentlichen Upload-Route, die unter Dateiverwaltung dokumentiert ist. Verwenden Sie für externe Aufrufe die Basisroute https://api.quote3d.com/v2. Senden Sie das Token entweder als Authorization: Bearer YOUR_TOKEN oder als X-API-Token. Erstellen Sie Token in Ihrem Quote3D-Dashboard und halten Sie sie geheim.

Token können Scopes zugewiesen werden. Ein Token mit vollem Zugriff erreicht jeden Endpunkt, während ein Widget-Scoped-Token auf die Endpunkte beschränkt ist, die das eingebettete Widget benötigt. Aufrufe außerhalb des Scopes eines Tokens geben 403 zurück. Sie können den Scope eines Tokens auf der Seite „Tokens“ in Ihrem Dashboard einsehen und ändern.

Hinweis: Bewahren Sie Ihre API-Token sicher auf. Geben Sie sie niemals öffentlich preis oder committen Sie sie in die Versionskontrolle.

2. Kontoverwaltung

Verwalten Sie Ihr Konto, Uploads und Nutzungsstatistiken über dedizierte Endpunkte:

  • GET /v2/user Ruft Ihre Kontodaten, Ihren Tarif und Ihre monatlichen Kontingente ab — hier liegen quotes_used, quotes_limit, storage_used, storage_limit und reset_date
  • GET /v2/user/uploads Zeigen Sie alle in Ihr Konto hochgeladenen Dateien an. Diese werden vom neuesten zum ältesten sortiert.
  • GET /v2/quota Ruft Ihre Ratenbegrenzungen ab — das globale Limit plus eine Aufschlüsselung je Endpunkt mit verbleibenden Aufrufen und Zurücksetzungszeiten — zusammen mit Ihren Anfragezahlen für heute, diesen Monat, dieses Jahr und insgesamt
  • GET /v2/usage Erhalten Sie detaillierte Nutzungsanalysen, einschließlich Endpunktstatistiken, Materialverbrauch und zeitbasierten Trends

3. Dateiverwaltung

Laden Sie Ihre 3D-Modelldateien hoch, laden Sie sie herunter und verwalten Sie sie (STL, 3MF, OBJ-Formate):

  • GET /v2/file/upload-idErhalten Sie eine temporäre upload_id, um eine neue Datei über den öffentlichen Upload-Pfad hochzuladen.
  • POST /v2/file/public/{upload_id}Dieser Pfad erfordert KEINE Authentifizierung. Verwenden Sie diesen auf Ihrer Client-Seite, um Dateien direkt in unseren Speicher hochzuladen.

    Die Verwendung des öffentlichen Upload-Pfads ermöglicht es Ihnen, das Routing großer Dateien über Ihren Backend-Server zu vermeiden. Dies verhindert die Offenlegung Ihres API-Tokens und reduziert die Serverlast.

  • POST /v2/fileLaden Sie eine Datei von Ihrer Serverseite hoch (erfordert Authentifizierung, verwenden Sie diese, wenn Sie von Ihrem Backend hochladen möchten)
  • GET /v2/file/{file_id}Laden Sie eine Datei unter Verwendung ihrer file_id herunter
  • DELETE /v2/file/{file_id}Löschen Sie eine Datei, die Sie nicht mehr benötigen

Der Upload wird abgelehnt, wenn die Datei kein gültiges STL-, 3MF- oder OBJ-Modell ist oder wenn sie das Dateigrößenlimit der Plattform überschreitet (standardmäßig 50 MB). Beide Upload-Routen wenden dieselben Prüfungen an.

Wie Ihre Dateien gespeichert werden

Hochgeladene Modelle werden verschlüsselt gespeichert und sind niemals öffentlich erreichbar — es gibt keinen Link, der eine gespeicherte Datei direkt bereitstellt. Das Feld file_path in den Antworten ist der authentifizierte Download-Pfad (GET /v2/file/{file_id}), kein Speicherort auf der Festplatte; behandeln Sie ihn daher als Endpunkt und nicht als eine URL, die Sie teilen können. Das Löschen einer Datei entfernt sie aus dem Speicher, nicht nur aus Ihren Einträgen.

4. Teileinformationen & Technische Analyse

Überprüfen Sie, ob Ihre Modelle druckbar sind, erhalten Sie Teilabmessungen und erweiterte technische Metriken:

  • POST /v2/printability/{file_id} Sofort-Analyse – Überprüfen Sie Maße, Volumen, Oberfläche und geometrische Integrität (offene Kanten/Non-Manifold) vor der Angebotserstellung.

Quote3D geht über einfache Maßkontrollen hinaus; es analysiert die Manifold-Integrität des Modells und bewertet das für den 3D-Druck kritische Haftungsrisiko. Diese Metriken sind sowohl in Printability- als auch in Quote-Antworten enthalten.

5. Angebotsoperationen

Erstellen Sie sofortige Angebote für Ihre 3D-Drucke und verwalten Sie den Angebotsverlauf:

  • POST /v2/file/quote/{file_id}Starten Sie die asynchrone Angebotsberechnung für ein 3D-Modell. Es wird eine Job-ID zurückgegeben; verwenden Sie den Jobs-Endpunkt, um das vollständige Ergebnis abzurufen.
  • POST /v2/file/quote/{file_id}/asyncAlternativer asynchroner Angebotsendpunkt. Gibt eine Job-ID zurück, die Sie verwenden können, um den Status zu überprüfen und das vollständige Ergebnis abzurufen.
  • GET /v2/jobs/{job_id}Überprüfen Sie den Status eines asynchronen Angebotsauftrags. Gibt den Fortschritt in Prozent und den Abschlussstatus zurück.
  • GET /v2/quotesRufen Sie Ihren gesamten Angebotsverlauf mit Unterstützung für Paginierung ab.
  • GET /v2/quotes/{quote_id}Rufen Sie detaillierte Informationen zu einem bestimmten Angebot ab.
  • DELETE /v2/quotes/{quote_id}Entfernen Sie ein Angebot aus Ihrem Verlauf

Asynchroner Workflow: POST /v2/file/quote/{file_id} gibt zuerst eine Job-ID zurück. Verwenden Sie GET /v2/jobs/{job_id} für das kompakte, abgeschlossene Ergebnis und GET /v2/quotes/{quote_id} für die gespeicherte, detaillierte Angebots-Payload, wenn verfügbar.

Anfrageparameter für Angebote

Beim Erstellen eines Angebots können Sie eine benutzerdefinierte Konfiguration im Anfragekörper angeben. Alle Parameter, die Sie nicht angeben, werden automatisch aus Ihren Slice-Profileinstellungen im Dashboard übernommen. Dies ermöglicht es Ihnen, bestimmte Einstellungen pro Angebot zu überschreiben, während Sie die Standardeinstellungen für andere beibehalten.

Wichtig: Wenn Sie einen Parameter in Ihrer Anfrage nicht angeben, verwendet die API den Wert aus Ihrem Slice-Profil im Dashboard (Druckerprofil, Materialprofil oder globale Einstellungen). Stellen Sie sicher, dass Sie Ihre Standardprofile im Dashboard für konsistente Angebote einrichten. Sie können auch alle Ihre Parameter in einem bestimmten Druckerprofil im Dashboard konfigurieren und einfach dessen 'printer_id' in Ihrer Anfrage übergeben, um diese Einstellungen sofort anzuwenden, ohne sie einzeln übergeben zu müssen.

Konfigurationspriorität: Werte, die in der V2 API-Anfrage gesendet werden, überschreiben die Werte des ausgewählten Benutzerprofils; alle noch fehlenden Felder fallen dann auf die Benutzer-/globalen Standardprofile zurück.

Die untenstehenden Tabellen decken die Parameter ab, die am häufigsten durch Integrationen überschrieben werden. Dies ist nicht die vollständige Liste – die Angebots-Engine akzeptiert viele weitere Drucker-, Material- und Preisfelder, und jedes einzelne davon kann einmalig in Ihren Dashboard Slice-Profilen festgelegt werden, anstatt bei jeder Anfrage gesendet zu werden. Konfigurieren Sie Ihre Profile dort und senden Sie nur das, was pro Angebot variiert; die vollständige Feldliste befindet sich im OpenAPI-Schema.

Request Validation

Numerische Felder in printer_config, material_config und quote_config werden vor dem Einreihen des Auftrags auf ihre Grenzwerte geprüft. Ein Wert außerhalb seines Bereichs, eine nicht endliche Zahl (NaN, Infinity), ein falscher Typ oder eine negative Zahl dort, wo nur null und höher sinnvoll ist, wird mit HTTP 400 und einem VALIDATION_ERROR abgelehnt, der das genaue Feld benennt. Null wird weiterhin überall dort akzeptiert, wo sie sinnvoll ist – eine rollenbezogene Geschwindigkeit oder Beschleunigung von 0 bedeutet „Druckerstandard verwenden“, dieselbe Konvention, die auch OrcaSlicer verwendet.

  • Temperaturgrenzen: Die Materialtemperaturen (temperature und bed_temperature, ob in der Anfrage übermittelt oder aus dem Materialprofil gelesen) werden gegen min_hotend_temp / max_hotend_temp und min_bed_temp / max_bed_temp des Druckers geprüft. Ein Material, das mehr Hitze benötigt, als der gewählte Drucker liefern kann, wird abgelehnt statt kalkuliert. Nur FDM – Harz- und Pulvertechnologien haben weder Düse noch beheiztes Bett. Lassen Sie die Druckergrenzen leer, um die Prüfung zu überspringen.
  • Aktivierte Technologien: Wenn Sie die Technologien in Ihren globalen Einstellungen eingeschränkt haben, wird eine Angebotsanfrage für eine deaktivierte Technologie abgelehnt. Lassen Sie die Einstellung leer, um alle drei zu akzeptieren.
  • Materialpreisfelder: price_per_gram ist der Wert, den die Engine berechnet. Beim Speichern eines Materialprofils wird price_per_kg automatisch daraus neu berechnet (und price_per_gram wird aus price_per_kg abgeleitet, wenn nur der Kilogrammpreis angegeben wird), sodass die beiden nie voneinander abweichen können.

Stammparameter

ParameterTypBeschreibung
technologystringOptional. Produktionstechnologie: 'FDM', 'SLA' oder 'SLS' ('RESIN' wird als Alias für 'SLA' akzeptiert). Bestimmt, welche technologiespezifischen Parameter angewendet werden und wie Teile für die Serienproduktion verpackt werden. Wenn dieser Wert weggelassen wird, wird die Technologie des ausgewählten Druckers verwendet, mit einem Fallback auf 'FDM'.
printer_idstringOptional. ID eines bestimmten Druckers, der anstelle des Standarddruckers verwendet werden soll.
quantitynumberOptional. Die Gesamtanzahl der zu produzierenden Kopien (Standard: 1).

Logik für Menge und Batch-Produktion

Unser System verwendet einen fortschrittlichen Packalgorithmus basierend auf der angegebenen 'quantity':

  • FDM-Technologie: Teile werden nebeneinander auf der Bauplatte (X- und Y-Achse) platziert, soweit der Platz es zulässt.
  • SLA-Technologie: Teile werden nebeneinander im Harzbehälter (X- und Y-Achse) positioniert.
  • SLS-Technologie: Teile können in allen Achsen (X, Y und Z) gestapelt werden, um die Kapazität des Pulverbettes voll auszunutzen.

Dank dieser optimierten Packung, können mehrere Teile in einen einzigen Batch passen, werden fixe Gemeinkosten wie Vorheizen, Abkühlen und Schichtwechsel nur pro benötigtem Batch angewendet. Dies gewährleistet eine hochrealistische und kosteneffiziente Preisgestaltung für Großbestellungen.

printer_config

Druckerkonfigurationsparameter. Alle Felder sind optional und verwenden Ihre Standardwerte aus dem Druckerprofil, falls nicht angegeben.

ParameterTypBeschreibung
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_patternstringInfill-Muster. Standard: rectilinear. Basis (rectilinear, alignedrectilinear, zigzag, crosszag, lockedzag, line, grid), Dreieck (triangles, trihexagon), Kubisch (cubic, adaptivecubic, supportcubic), Waben (honeycomb, honeycomb3d, lateralhoneycomb), Fortgeschritten (gyroid), Speziell (monotonic, monotonicline), Raumfüllend (hilbertcurve, archimedeanchords, octagramspiral). hilbertcurve, archimedeanchords und octagramspiral werden akzeptiert, haben aber keinen eigenen Generator – sie werden als rectilinear behandelt. Die Werte werden unabhängig von Groß-/Kleinschreibung und Trennzeichen verglichen, sodass sowohl tri-hexagon als auch Zig Zag funktionieren; die OrcaSlicer-Schreibweise 3dhoneycomb wird ebenfalls akzeptiert. lightning, quartercubic, laterallattice, crosshatch, concentric, tpmsd und tpmsfk werden nicht unterstützt und geben einen Fehler 400 zurück.
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
SLA-SPEZIFISCH
sla_exposure_timenumberSLA: Belichtungszeit pro Schicht (Sekunden)
sla_bottom_exposure_timenumberSLA: Basis-Belichtungszeit (Sekunden)
sla_bottom_layer_countnumberSLA: Anzahl der Bodenschichten
sla_lift_distancenumberSLA: Hubdistanz (mm)
sla_lift_speednumberSLA: Hubgeschwindigkeit (mm/min)
sla_retract_speednumberSLA: Rückzugsgeschwindigkeit (mm/min)
sla_cleaning_costnumberSLA: Feste Reinigungskosten pro Druck (IPA, Verbrauchsmaterialien)
sla_pad_enabledbooleanSLA: Modell auf einem Pad/Raft drucken. Standardmäßig deaktiviert; Pad-Harz wird als Stützmaterial gezählt.
sla_pad_wall_thicknessnumberSLA: Pad-Wandstärke in mm. Alias: sla_pad_height.
sla_pad_wall_heightnumberSLA: Pad-Wandhöhe in mm (erhöhter Rand um die Pad-Vertiefung).
sla_pad_wall_slopenumberSLA: Pad-Wandneigung in Grad (45-90). Das Pad verjüngt sich in diesem Winkel nach unten.
sla_pad_brim_sizenumberSLA: Pad-Brim-Größe in mm. Alias: sla_pad_expansion.
sla_pad_max_merge_distancenumberSLA: Stützfüße, die näher beieinander liegen als dieser Wert, werden zu einer Pad-Insel zusammengefasst (mm).
sla_support_head_front_diameternumberSLA: Vorderer Durchmesser (Spitze) des Supportkopfs in mm.
sla_support_head_penetrationnumberSLA: Wie tief der Supportkopf in die Modelloberfläche einsinkt (mm).
sla_support_head_widthnumberSLA: Länge des Supportkopf-Stabs in mm.
sla_support_pillar_diameternumberSLA: Durchmesser des Supportpfeilers in mm. Macht den Großteil des Support-Harzvolumens aus.
sla_support_base_diameternumberSLA: Durchmesser der Basis (Fuß) des Supportpfeilers in mm.
sla_support_base_heightnumberSLA: Höhe der Basis (Fuß) des Supportpfeilers in mm.
sla_support_object_elevationnumberSLA: Objekthöhe über der Bauplatte in mm. Addiert auch gedruckte Schichten, was die Druckzeit beeinflusst. Wird nur angewendet, wenn Supports generiert werden.
sla_support_critical_anglenumberSLA: Brückensteigung in Grad, die beim Routing der Supports verwendet wird. Nicht dasselbe wie support_overhang_angle.
sla_support_max_pillar_link_distancenumberSLA: Pfeiler, die weiter als dieser Wert auseinanderliegen, werden nicht miteinander vernetzt (mm).
sla_support_max_bridge_lengthnumberSLA: Längste seitliche Brücke, die ein Support-Kopf zur Erreichung der Platte zurücklegen darf (mm).
sla_support_max_bridges_on_pillarnumberSLA: Anzahl der Brücken, die ein einzelner Pfeiler zulässt.
sla_support_points_densitynumberSLA: Supportpunkt-Dichte in Prozent, 100 = normal. Nicht derselbe Wert wie support_density, was der FDM-Support-Infill-Prozentsatz ist.
sla_elephant_foot_compensationnumberSLA: Wie weit die ersten Schichten nach innen versetzt werden, um die Verbreiterung an der Basis auszugleichen. Referenzwert 0,2 bei jedem enthaltenen SLA-Drucker. 0 deaktiviert die Funktion.
sla_elephant_foot_min_widthnumberSLA: Konturen, die schmaler als dieser Wert sind, bleiben unverändert, damit feine Details nicht entfernt werden. Referenzwert 0,2.
sla_faded_layersnumberSLA: Über wie viele Schichten die Kompensation auf Null ausläuft. Dies ist NICHT die Anzahl der Bodenschichten; das Referenz-MSLA-Profil verwendet 8.
SLS-spezifisch
sls_laser_speednumberSLS: Lasergeschwindigkeit (mm/s)
sls_hatch_spacingnumberSLS: Schraffurabstand (mm)
sls_layer_thicknessnumberSLS: Schichthöhe (mm)
sls_layer_recoat_timenumberSLS: Beschichtungszeit pro Schicht (Sekunden)
sls_preheat_timenumberSLS: Vorheizzeit (min)
sls_cooling_timenumberSLS: Abkühlzeit (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: Maschinenplatz-Aufschlag pro Gramm-Äquivalent des Bauplatzes, den ein Bauteil einnimmt. Der Platz entspricht dem minimalen Volumenwürfel des Bauteils plus seinem Anteil an den Pulverabständen und unbrauchbaren Kammerrändern, sodass er sich nicht ändert, wenn das Modell gedreht ankommt. 0 deaktiviert den Aufschlag.
sls_contour_countnumberSLS: Anzahl der Kontur- (Rand-) Durchgänge, die der Laser um die Umrisse jeder Schicht fährt. 0 deaktiviert den Konturdurchgang.
sls_contour_speednumberSLS: Kontur-Scangeschwindigkeit in mm/s. 0 bedeutet, dass die Kontur mit sls_laser_speed gescannt wird.
sls_jump_speednumberSLS: Galvo-Sprunggeschwindigkeit in mm/s für die nicht-sinternden Positionierungsbewegungen zwischen den Scanvektoren. 0 entspricht Sprüngen mit sls_laser_speed, einer Obergrenze.
sls_part_spacingnumberSLS: minimaler Pulverabstand um ein Bauteil in mm, der sowohl zwischen Bauteilen als auch zur Kammerwand angewendet wird. Er bestimmt, wie viele Bauteile in einen Druckauftrag passen, und beeinflusst somit sowohl den Maschinenplatzanteil als auch die Fixkostenverteilung. 0 verwendet den Standardwert der Engine von 3 mm.
max_volumetric_flownumberMaximum volumetric flow rate in mm³/s.

material_config

Materialkonfigurationsparameter. Alle Felder sind optional und verwenden Ihre Standardwerte aus dem Materialprofil, falls nicht angegeben.

Materialprofilintegration: Der Parameter filament_type sollte mit einem Materialnamen aus Ihrem Materialprofil im Dashboard übereinstimmen. Wenn Sie einen filament_type (z. B. "PLA", "ABS", "PETG") angeben, lädt die API automatisch alle Eigenschaften aus diesem Materialprofil, einschließlich Dichte, Temperaturen, Retraktionseinstellungen und Preise.

Preisgenauigkeit: Die Materialkosten werden aus price_per_gram berechnet. Es genügt, im Materialprofil entweder price_per_kg oder price_per_gram zu setzen — der jeweils andere Wert wird automatisch synchron gehalten. Den Preis können Sie weiterhin pro Anfrage überschreiben, indem Sie price_per_gram oder price_per_kg in material_config angeben.

Beispiel: Wenn Sie ein "PLA"-Materialprofil in Ihrem Dashboard mit price_per_kg: 20.0 und price_per_gram: 0.02 haben, können Sie einfach {"filament_type": "PLA"} in Ihrer Anfrage senden, und alle Preise werden automatisch berechnet.

ParameterTypBeschreibung
filament_typestringFilament type (PLA, ABS, PETG, etc.)
colorstringOptional: Farbname (z.B. 'Weiß', 'Schwarz', '#FFFFFF'). Hinweis: Bei SLA/SLS-Technologien wird die Farbe nur angewendet, wenn 'post_processing' auf 'painted' eingestellt ist.
densitynumberMaterial density (g/cm³)
diameternumberFilament diameter (mm)
filament_flow_rationumberFDM-Flussverhältnismultiplikator. 1,0 entspricht 100 % Fluss. Angeforderte Werte überschreiben das ausgewählte Materialprofil des Benutzers; falls diese fehlen, wird der globale Profilwert vor dem Standardwert 1,0 herangezogen.
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

Konfigurationsparameter für die Angebotsberechnung. Alle Felder sind optional und verwenden Ihre Standardwerte aus den globalen Einstellungen, falls nicht angegeben. Die Währung ist standardmäßig auf Ihre Dashboard-Präferenz eingestellt (z. B. "USD", "TRY", "EUR").

ParameterTypBeschreibung
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
hollowingstringSLA/SLS-spezifisch: 'solid', '2mm' oder '3mm'. Bei SLA ist der Standardwert '2mm', wenn die SLA-Aushöhlung in Ihren Einstellungen aktiviert ist; bei SLS ist der Standardwert '2mm', wenn die SLS-Aushöhlung aktiviert ist. SLS-Teile werden OHNE Entleerungsloch ausgehöhlt, sodass das ungesinterte Pulver im Inneren verbleibt: Es wird mit der Pulverbettdichte berechnet und ist nicht rückgewinnbar. Ein Teil, dessen Wände bereits dünner als das Doppelte der konfigurierten Wandstärke sind, bleibt massiv.
post_processingstringSLA/SLS-spezifisch: 'standard', 'sanding', 'painting' oder 'painted' (Standard: 'standard'). Der Wert wird im Angebot festgehalten; 'painted' sorgt außerdem dafür, dass die gewünschte Farbe auf SLA/SLS-Teile angewendet wird.
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: minimale Bauteilauslastung als Bruchteil zwischen 0 und 1. Der Auftrag wird so abgerechnet, als ob er mindestens diesen Anteil eines Drucklaufs ausfüllen würde – 0 teilt den Druckauftrag mit anderen Aufträgen, 1 berechnet einen kompletten Druckauftrag. Wird ignoriert, wenn enable_batch_system auf false steht.
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.

Tipp: Angebote werden automatisch in Ihrem Konto gespeichert. Sie können jederzeit über die Angebotsverlaufs-Endpunkte darauf zugreifen.

6. Drucker- & Angebotsprofile

Konfigurieren Sie Druckereinstellungen und Preise, um genaue Angebote zu erhalten. Sie können Ihre Standardprofile im Dashboard im Bereich 'Slice-Profile' verwalten, die automatisch verwendet werden, wenn Sie in API-Anfragen keine Parameter angeben.

Profiltypen

  • Druckerprofil – Konfigurieren Sie Ihre Druckereinstellungen (Bettgröße, Düsendurchmesser, Druckgeschwindigkeit, Schichthöhe, Beschleunigung, Jerk, Temperaturen usw.), um sie an Ihren tatsächlichen Drucker anzupassen. Legen Sie dieses als Ihr Standardprofil im Dashboard fest, und es wird für alle Angebotsanfragen verwendet, es sei denn, Sie überschreiben bestimmte Parameter.
  • Materialprofil – Legen Sie Materialeigenschaften (Filamenttyp, Dichte, Durchmesser, Temperaturen, Lüftergeschwindigkeit, Retraktionseinstellungen, Preise) für jedes von Ihnen verwendete Material fest. Die API verwendet automatisch das Materialprofil, das dem von Ihnen in der Anfrage angegebenen filament_type entspricht.
  • Globale Einstellungen – Konfigurieren Sie globale Angebotseinstellungen wie Mehrwertsteuersatz, feste Gebühren, Energiekosten und Standardwährung. Diese Einstellungen gelten für alle Angebote, es sei denn, sie werden in der Anfrage überschrieben.

Best Practice: Richten Sie Ihre Standardprofile im Dashboard-Slice-Profile-Bereich ein. Auf diese Weise können Sie einfache Angebotsanfragen stellen, ohne alle Parameter anzugeben, und die API verwendet automatisch Ihre konfigurierten Standardwerte. Sie können bei Bedarf weiterhin jeden Parameter pro Anfrage überschreiben.

Wie die Profilzusammenführung funktioniert

Wenn Sie eine Angebotsanfrage stellen, führt die API Ihre Anfrageparameter mit Ihren Dashboard-Profilen zusammen, wobei diese Priorität gilt:

  1. Anfrageparameter – Werte, die Sie explizit in der API-Anfrage angeben, haben die höchste Priorität
  2. Benutzerprofil – Wenn Sie ein benutzerspezifisches Profil als Standard festgelegt haben, wird dieses als Nächstes verwendet
  3. Globales Profil – Wenn kein Benutzerprofil vorhanden ist, greift das System auf globale Standardwerte zurück

Das bedeutet, dass Sie nur die Parameter überschreiben können, die Sie benötigen (z. B. nur layer_height oder fill_density), während alle anderen Einstellungen aus Ihren Dashboard-Profilen beibehalten werden.

7. Webhooks

Echtzeitbenachrichtigungen erhalten, wenn Ereignisse in Ihrem Konto auftreten:

  • POST /v2/webhooks - Einen neuen Webhook-Endpunkt erstellen
  • GET /v2/webhooks - Ihre Webhooks auflisten
  • GET /v2/webhooks/{webhook_id} - Webhook-Details und Lieferstatistiken abrufen
  • PUT /v2/webhooks/{webhook_id} - Webhook-Einstellungen aktualisieren
  • DELETE /v2/webhooks/{webhook_id} - Webhook entfernen

Unterstützte Ereignisse: quote.completed, quote.failed, file.uploaded, file.deleted, job.status_changed, widget.added_to_cart. Webhooks enthalten HMAC-SHA256-Signaturen zur Sicherheitsüberprüfung.

Webhooks-Referenz: Payload-Struktur, Signaturverifizierung, Wiederholungsversuche und erneute Zustellung

8. Analysen & Berichte

Erhalten Sie Einblicke in Ihre API-Nutzung und Angebotsstatistiken:

  • GET /v2/analytics/quotes - Erhalten Sie umfassende Angebotsstatistiken, einschließlich der Gesamtzahl der Angebote, durchschnittliche Preise und Trends bei der Materialverwendung.
  • GET /v2/analytics/popular - Sehen Sie Ihre beliebtesten Materialien und Drucker-Konfigurationen.
  • GET /v2/analytics/cost-trends - Analysieren Sie Kostentrends im Zeitverlauf (tägliche, wöchentliche oder monatliche Gruppierung).
  • GET /v2/analytics/export - Exportieren Sie Ihre Angebote und Nutzungsdaten als CSV oder JSON.

9. Ratenbegrenzung und Kontingente

Quote3D verwendet Ratenbegrenzung, um eine faire Nutzung und Systemstabilität zu gewährleisten.

  • Ratenbegrenzungen werden pro API-Token angewendet und variieren je nach Endpunkt.
  • Informationen zur Ratenbegrenzung sind in den Antwort-Headern enthalten. X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Window
  • Wenn die Ratenbegrenzung erreicht ist, erhalten Sie eine 429 Too Many Requests-Antwort mit einem Retry-After-Header.
  • Monatliche Kontingente für Angebote und Speicherplatz basieren auf Ihrem Abonnementplan
  • Limits sind pro Deployment konfigurierbar, lesen Sie daher die aktuellen Werte aus, anstatt sie hart zu codieren. Sowohl die oben genannten Response-Header als auch dieser Endpoint melden diese: GET /v2/quota

Best Practice: Implementieren Sie einen exponentiellen Backoff beim Umgang mit Ratenbegrenzungsfehlern, um eine Überlastung der API zu vermeiden.

10. Antworten & Fehler

Jede JSON-Antwort verwendet dasselbe Envelope. Ein erfolgreicher Aufruf gibt success: true mit der Payload des Endpunkts unter data zurück, sodass Ihr Client überall eine konsistente Struktur lesen kann. Datei-Downloads und CSV-Exporte sind die Ausnahme – sie geben den rohen Dateiinhalt anstelle des Envelopes zurück.

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

Pagination & Sortierung

List-Endpunkte wie /v2/quotes und /v2/user/uploads sind mittels der Query-Parameter limit und offset paginiert (Standard: 50 Ergebnisse, maximal 100). Neben den Ergebnissen geben sie ein Pagination-Objekt zurück, das total, limit, offset, has_more, page und total_pages enthält; verwenden Sie daher vorzugsweise has_more, anstatt das Ende der Liste selbst neu zu berechnen. Die Sortierung verwendet einen einzelnen, wiederholbaren Parameter im Format field:direction, zum Beispiel ?sort=created_at:desc&sort=total_price:asc; bei Uploads erfolgt die Sortierung standardmäßig nach dem neuesten zuerst.

Fehlerantworten

Fehlgeschlagene Aufrufe geben success: false zusammen mit einer für Menschen lesbaren Fehlermeldung und dem entsprechenden HTTP-Statuscode zurück. Verzweigen Sie den Programmfluss immer anhand des Statuscodes und nicht anhand des Nachrichtentextes, der umformuliert werden kann.

StatusBedeutung
400Der Request-Body oder ein Query-Parameter ist ungültig – ein fehlerhaftes Feld, ein nicht unterstütztes Dateiformat oder ein Modell, das nicht zum ausgewählten Drucker passt.
401Der API-Token fehlt, ist fehlerhaft, abgelaufen oder widerrufen.
403Der Token ist gültig, darf diesen Aufruf jedoch nicht ausführen – in der Regel aufgrund einer Scope-Einschränkung oder einer blockierten IP-Adresse.
404Die angeforderte Datei, das Angebot, der Job oder der Webhook existiert nicht oder gehört nicht zu Ihrem Konto.
429Ein Rate-Limit wurde überschritten. Lesen Sie den Retry-After-Header und warten Sie eine Zeitspanne ab, bevor Sie es erneut versuchen.
500Ein unerwarteter serverseitiger Fehler. Ein erneuter Versuch mit Backoff ist sicher; falls der Fehler weiterhin besteht, kontaktieren Sie den Support unter Angabe des Zeitstempels.

Asynchrone Angebote verhalten sich anders: Das Einreihen des Jobs in die Warteschlange ist mit 202 erfolgreich, und eine Berechnung, die danach fehlschlägt, erscheint als fehlerhafter Status mit einer Fehlermeldung am Job-Endpunkt – nicht als HTTP-Fehler. Überprüfen Sie immer den Job-Status und nicht nur den Statuscode, den Sie beim Start erhalten haben.

11. RESTful, versionierte API

  • Alle Endpunkte sind versioniert (z.B. /v2/)
  • Verwendet standardmäßige HTTP-Methoden: GET, POST, PUT, DELETE
  • Beschrieben durch ein OpenAPI-3.0.3-Schema, das Sie in Ihre eigenen Werkzeuge importieren können
  • Breaking Changes und Ergänzungen werden festgehalten im API-Changelog