API und ERP-Anbindung

Die Preisliste aus Ihrem ERP, die Anfragen zurück ins ERP.Keine Doppelerfassung.

MetronQ hat eine API für das System, mit dem Ihr Betrieb bereits arbeitet: ein ERP, ein CRM, eine Tabelle oder ein Automatisierungstool. Von dort kommen Materialpreise, Maschinen, Werkzeuge und Teiledateien, dorthin gehen Kalkulationen, Geometrieauswertungen und Aufträge zurück. Jede Änderung an der Preisliste durchläuft eine Vorschau, bevor etwas gespeichert wird.

  • REST und JSON
  • 7 Berechtigungen
  • Vorschau vor dem Speichern
  • Limits in jeder Antwort
Ihr ERPERP · CRM · Tabelle · Automatisierung
  1. MaterialpreisePOST /config/import
  2. WerkzeugdatenPUT /machines/{key}/tools
  3. Dateien zur KalkulationPOST /quotes
  4. Neue AnfragenGET /quotes?since=
  5. GeometrieauswertungGET /quotes/{id}/metrics
  6. AuftragsstatusPATCH /orders/{id}
Preisliste · Kalkulationen · Aufträge

01Vorteile

Was nicht mehr von Hand erledigt wird

Sechs Dinge, die in einem Betrieb heute jemand von einem System ins andere überträgt. Mit der API übernimmt das System diese Arbeit, und ein Mensch sieht sich den Unterschied an.

Materialpreise

HeuteJemand tippt die Preise von der Rechnung des Großhändlers ins ERP ab und danach ein zweites Mal in die Kalkulationssoftware. Wird das vergessen, gehen Angebote mit dem alten Preis hinaus.
Mit der APIDas ERP sendet die neuen Preise je Kilogramm. MetronQ zeigt den Unterschied Feld für Feld, und gespeichert wird erst nach der Vorschau.

Werkzeugverwaltung und Maschinenpark

HeuteDie Liste der Fräser und Bohrer steht in einer Tabelle, und die Kalkulationssoftware geht von generischen Werkzeugen aus.
Mit der APIIhr Werkzeugverwaltungssystem sendet die Werkzeugbibliothek jeder Maschine. Der kleinste Fräser bestimmt sofort den kleinsten Innenradius, den diese Maschine noch kalkuliert.

Neue Anfragen

HeuteJemand legt eine Anfrage aus dem Widget im ERP noch einmal von Hand als Angebot an.
Mit der APIDas ERP ruft jede Minute die Anfragen ab, die neuer sind als die letzte, die es kennt, und legt sie mit Datei, Werkstoff, Menge und Preis bei sich an.

Dateien zur Kalkulation

HeuteEin Kunde schickt Modell oder Zeichnung per E-Mail, und jemand lädt den Anhang herunter und legt die Kalkulation im Panel von Hand an.
Mit der APIDas System, in dem die Datei bereits liegt (PDM, Postfach, Kundenportal), sendet sie zur Kalkulation und erhält Preis, Kostenaufschlüsselung und Angebots-PDF zurück.

Arbeitsvorbereitung

HeuteEin Arbeitsvorbereiter öffnet das Modell noch einmal, um Bohrungen und Gewinde für den Arbeitsplan zu zählen.
Mit der APIDie Geometrieauswertung - Abmessungen, Bohrungen, Taschen, Gewinde, dünnste Wand - kommt als Daten in Ihrem System an und nicht als Bild.

Auftragsstatus

HeuteDer Status eines Auftrags wird an zwei Stellen geführt, und der Kunde fragt per E-Mail nach, wo seine Teile bleiben.
Mit der APIDas ERP setzt den Status des Auftrags in MetronQ weiter. Bestätigung und Versandmeldung erreichen den Kunden mit derselben E-Mail, die auch das Panel verschickt.

02Datenwege

Die vier am häufigsten gebauten Datenwege

Wählen Sie einen Weg, um seine Stationen und den wichtigsten Aufruf zu sehen - als echtes Beispiel samt Antwort.

Preise und Kataloge fließen aus Ihrem System in MetronQ. Gespeichert wird nichts, bevor eine Vorschau den Unterschied gezeigt hat.

  1. Export aus dem ERP

    Eine CSV-Tabelle oder ein einziges JSON-Dokument mit Werkstoffen, Maschinen und Behandlungen.

    CSV · JSON
  2. Vorschau

    Was hinzukäme und was sich ändern würde, Feld für Feld, dazu alle Zeilen und Spalten, die das System nicht versteht.

    POST /config/import/preview
  3. Übernahme

    Das System schickt den base_hash der Vorschau zurück. Hat jemand die Preisliste zwischendurch gespeichert, bekommt es 409 und erstellt die Vorschau neu.

    POST /config/import
  4. Verlauf

    Der Import landet Feld für Feld im Änderungsprotokoll der Einstellungen, mit dem Namen des Schlüssels, der ihn ausgeführt hat.

    Änderungsprotokoll
Aufruf: Vorschau einer Werkstofftabelle
curl -X POST "https://app.metronq.com/api/v1/integration/config/import/preview" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "catalog": "materials", "csv_base64": "a2V5O25hbWU7cHJpY2VfcGVyX2tnCmFsdV82MDYxOy..." }'
Antwort: was sich ändern würde200 OK
{
  "ok": true,
  "added": [],
  "updated": ["alu_6061", "steel_c45"],
  "errors": [],
  "ignored_columns": [],
  "changes": [
    {
      "section": "materials",
      "path": "price_per_kg",
      "kind": "edited",
      "default": 6.4,
      "current": 6.9,
      "entity_key": "alu_6061",
      "entity_name": "Aluminium 6061",
      "unit": "field"
    }
  ],
  "changes_total": 2,
  "base_hash": "9c1e4b0f2a7d",
  "config": { "materials": [ "..." ], "machines": [ "..." ], "...": "..." }
}

03Kontrolle

Der Schlüssel gehört dem Betrieb, nicht dem Integrator

Sie legen einen Schlüssel in den Einstellungen an, vergeben Berechtigungen und sehen, was wann damit geschehen ist.

Ein Schlüssel wird nur einmal angezeigt, beim Erstellen, und wir speichern ihn nicht in lesbarer Form. Ein verlorener Schlüssel wird widerrufen und ersetzt. Er gehört dem Betrieb und nicht einer Person und funktioniert deshalb weiter, während die Person, die ihn angelegt hat, im Urlaub ist.

Die Berechtigungen sind bewusst eng gefasst. Ein Schlüssel, der den Katalog liest, kann keine Anfragen lesen, und ein Schlüssel, der Anfragen liest, sieht weder die personenbezogenen Daten des Kunden noch die von ihm hochgeladenen Dateien ohne eigene Berechtigungen dafür. Ein Schlüssel, der Dateien sendet, ist kein Schlüssel, der Kalkulationen liest. Kein Schlüssel kann einen anderen Schlüssel erstellen oder widerrufen.

Sieben Berechtigungen

config:read
Katalog und Kalkulationsregeln lesen.
config:write
Katalog und Kalkulationsregeln ändern, über dieselbe Vorschau und Übernahme wie im Panel.
quotes:read
Anfragen und Aufträge: Teil, Werkstoff, Menge, Preis und Geometrieauswertung.
customers:read
Die Kontaktdaten des Kunden. Ohne diese Berechtigung bleiben die Felder leer.
quotes:write
Ihre eigene Nummer und der Auftragsstatus. Kalkulieren oder freigeben kann dieser Schlüssel nichts.
quotes:create
Teiledateien zur Kalkulation senden und die Parameter einer Kalkulation ändern. Den Preis rechnet die Engine; freigeben oder einen Rabatt gewähren kann der Schlüssel nicht.
files:read
Die von Kunden hochgeladenen Dateien und die 3D-Vorschauen, zusammen mit quotes:read. Bewusst getrennt: Eine Datei ist die Konstruktion eines anderen.
  • Ein Schlüssel läuft 365 Tage nach dem Anlegen ab
  • Ein Widerruf wirkt schon ab dem nächsten Aufruf
  • Ein Zugriffsprotokoll, das zwei Jahre aufbewahrt wird
  • Das Präfix mq_live_ für den Secret-Scanner in Ihrem Repository
app.metronq.com/settings/integrations
Einstellungen
Parameter suchen, z. B. Marge, Rüsten+ Neue KalkulationDE
UnternehmenBenachrichtigungenAngebotsdokumentTeamIntegrationen
API-Schlüssel

Ein Schlüssel erlaubt Ihrem ERP, CRM oder Automatisierungswerkzeug, mit diesem Konto zu arbeiten, ohne dass sich jemand anmeldet: Katalog und Kalkulationsregeln lesen und aktualisieren, Kalkulationen und Bestellungen lesen, Teiledateien zur Kalkulation senden und Dateien herunterladen - jeweils nur mit den Berechtigungen, die Sie ihm geben.

+ Neuer Schlüssel

Limit: 120 Anfragen pro Minute und 20.000 pro Tag, gezählt ab 00:00 UTC. Heute verbraucht: 212.

NameBerechtigungenZuletzt genutztGültig bisTageslimit
ERP-Abgleicha1b2c3d4...config:read, quotes:read, quotes:writeheute 09:1416.09.2027KontolimitWiderrufen
Preislisten-Importe5f6a7b8...config:read, config:writegestern 06:0002.10.2027KontolimitWiderrufen
Zugriffsprotokoll

Wann etwas die Fähigkeit erhalten oder verloren hat, dieses Konto zu lesen. Zwei Jahre aufbewahrt.

  • Katalog importiertPreislisten-Import · e5f6a7b818.09.2026 06:00
  • Schlüssel erstelltERP-Abgleich · a1b2c3d416.09.2026 10:12
  • Schlüssel erstelltPreislisten-Import · e5f6a7b802.10.2026 08:30

Einstellungen, Reiter Integrationen - Beispieldaten

04Limits

Jede Antwort zeigt, wie viel noch übrig ist

Eine Integration weiß, wo sie steht, bevor sie an ein Limit stößt - nicht erst danach.

Den API-Zugang und seine Limits vereinbaren wir mit jedem Betrieb einzeln. Standardmäßig erhält ein Betrieb 120 Aufrufe pro Minute und 20.000 pro Tag, gezählt ab 00:00 UTC; die für ein Konto vereinbarten Werte können abweichen. Ein stündlicher Katalogabgleich und eine minütliche Abfrage neuer Anfragen passen bequem in die Standardwerte.

Header in jeder Antwort

HTTP
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 41
X-RateLimit-Quota: 20000
X-RateLimit-Quota-Remaining: 19863
X-RateLimit-Quota-Reset: 51240
Ein Testschlüssel

Solange eine Integration gebaut wird, kann ein Betrieb einen Schlüssel mit einem Budget für den gesamten Test bekommen. Das Budget erneuert sich nicht und ist im Panel, in whoami und in den Headern sichtbar. Es reicht, um die Anbindung zu bauen - und bewusst nicht, um sie damit zu betreiben.

Was eine Ablehnung bedeutet

StatusCodeWas tun
429rate_limitedDie Minute ist voll. Derselbe Aufruf funktioniert kurz darauf wieder; Retry-After nennt die Sekunden bis dahin.
429daily_quota_exceededDer Tag ist aufgebraucht. Retry-After zählt bis 00:00 UTC herunter.
429total_quota_exceededDas Testbudget ist aufgebraucht. Kein Retry-After, denn Warten ändert nichts.
401invalid_api_keyUnbekannter, widerrufener oder abgelaufener Schlüssel oder ein Konto, dessen API-Zugang gesperrt ist oder dessen Testphase, Tarif oder Lizenz abgelaufen ist. Bewusst eine einzige Antwort für alle diese Fälle.
403missing_scopeDer Schlüssel ist gültig, aber ihm fehlt die Berechtigung für diesen Aufruf. Abhilfe schafft ein Schlüssel mit der richtigen Berechtigung.
404not_foundDiese Anfrage oder diesen Auftrag gibt es in diesem Konto nicht. Ein nicht vorhandener Katalog und eine nicht vorhandene Maschine haben eigene Codes: unknown_catalog, unknown_machine.
404unknown_toolDie Maschine hat kein Werkzeug mit diesem key. Entfernt wurde nichts, so kann ein Abgleich ein Entfernen von einem Tippfehler in der eigenen Zuordnung unterscheiden.
404file_not_foundDie gespeicherte Datei oder Vorschau konnte nicht gelesen werden. Die Kalkulation existiert, ihre Dateien ließen sich aber nicht abrufen.
400invalid_base64Das Feld csv_base64 einer Importvorschau ist kein gültiges Base64. Nichts wurde gelesen oder gespeichert.
409config_changedJemand hat die Preisliste zwischen Vorschau und Übernahme gespeichert. Neu lesen, neue Vorschau erstellen und erneut übernehmen.
409not_analysedDie Anfrage hat noch keine Auswertung: Ihre Datei wird noch analysiert, oder die Analyse ist fehlgeschlagen (Status analysis_failed).
403quoting_blocked:...Der Betrieb darf gerade keine neuen Kalkulationen anlegen. Der Grund steht nach dem Doppelpunkt: trial_limit (die Kalkulationen der Testphase sind aufgebraucht), plan_limit (die Kalkulationen des Tarifs für diesen Monat) oder daily_limit (das eigene Tageslimit des Betriebs).
429analysis_backlogFünf Dateien, die der Betrieb über die API gesendet hat, warten bereits auf die Analyse oder werden analysiert (Kalkulationen aus Widget und Panel zählen nicht). Retry-After: 30 Sekunden.
409file_not_uploadedDer Upload ist nicht im Speicher angekommen. Die Datei erneut senden, solange die Adresse gilt (15 Minuten), dann bestätigen; danach eine neue Kalkulation anlegen.
409upload_expiredZu spät bestätigt: Ab 45 Minuten nach dem Anlegen der Kalkulation (15 Minuten Gültigkeit der Adresse plus 30 Minuten Kulanz) gilt der Upload als abgebrochen. Eine neue Kalkulation anlegen.
409quote_closedEin Mensch hat die Kalkulation freigegeben oder abgelehnt, oder der Kunde hat sie bestellt. Ihre Parameter ändern sich nicht mehr.
409quote_in_reviewDie Arbeitsvorbereitung hat bereits mit der Entscheidung begonnen und einen Preis für die Kalkulation oder eines ihrer Teile eingetragen. Eine Neuberechnung würde diese Arbeit löschen und wird deshalb abgelehnt.
409not_a_drawingDie Kalkulation ist keine Zeichnung, also gibt es nichts zu ergänzen oder an einen Menschen zu übergeben.
409quote_already_analyzedDie Zeichnung wartet nicht mehr auf Angaben: Sie wurde rekonstruiert und kalkuliert, bereits an den Betrieb übergeben oder wird erneut analysiert.
422unknown_material, ...Der Aufruf wurde abgelehnt, gespeichert wurde nichts. Ein bekanntes Problem ist ein einzelner kurzer Code: unknown_material, unknown_treatment, unknown_tolerance_class, unknown_hole_fit, file_too_large, unsupported_file_type, implausible_scale und ähnliche.
422detail: [...]Der Body passt nicht zum Schema: ein unbekanntes Feld, ein Wert außerhalb des zulässigen Bereichs, ein Steuerzeichen im Dateinamen. Zurück kommt die Liste von FastAPI unter detail, jeder Eintrag mit type, loc und msg. Gespeichert wurde nichts.

05API-Referenz

Alle Aufrufe, jeder mit Beispiel

Eine Basisadresse, der Schlüssel im Header und JSON in beide Richtungen. Wählen Sie die Programmiersprache Ihrer Integration - alle Beispiele wechseln mit.

Basisadressehttps://app.metronq.com/api/v1/integrationnur HTTPS
AuthentifizierungAuthorization: Bearer mq_live_...ein Schlüssel aus den Einstellungen des Betriebs
FormatJSONaußer CSV (.csv), PDF (/pdf), Kundendateien (/file) und 3D-Vorschauen (.glb)

Start

GET/whoamiBerechtigung: keine

Wer dieser Schlüssel ist

Zu welchem Betrieb der Schlüssel gehört, was er darf und wie viel ihm noch bleibt. Der erste Aufruf, den es sich zu schreiben lohnt: Funktioniert er, ist der Rest nur noch eine Frage der Pfade.

Aufruf
curl "https://app.metronq.com/api/v1/integration/whoami" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "tenant": { "name": "Precision Works Ltd", "slug": "precision-works", "currency": "EUR" },
  "key": {
    "name": "ERP sync",
    "prefix": "a1b2c3d4",
    "scopes": ["config:read", "quotes:read"],
    "expires_at": "2027-09-16T10:12:00+00:00"
  },
  "rate_limit": {
    "requests_per_minute": 120,
    "requests_per_day": 20000,
    "requests_total": null,
    "requests_total_used": null,
    "requests_total_remaining": null,
    "day_resets": "00:00 UTC"
  }
}

Katalog

GET/configBerechtigung: config:read

Die gesamte Preisliste

Das gesamte Preisdokument: drei Kataloge, alle Parameter, die Prüf-Gates, die Strategien für Maschinen- und Rohteilwahl und die Währung. Der Import nimmt dasselbe Dokument wieder entgegen.

Aufruf
curl "https://app.metronq.com/api/v1/integration/config" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "materials": [ { "key": "alu_6061", "price_per_kg": 6.4, "...": "..." } ],
  "machines": [ { "key": "dmu50", "hourly_rate": 95.0, "...": "..." } ],
  "treatments": [ { "key": "anodising", "...": "..." } ],
  "params": { "margin_pct": 22.0, "...": "..." },
  "gates": { "mode": "review_all", "...": "..." },
  "machine_selection": "cheapest",
  "stock_selection": "cheapest",
  "currency": "EUR"
}
GET/catalog/materialsBerechtigung: config:read

Ein Katalog

Werkstoffe, Maschinen oder Behandlungen als JSON, ohne die ganze Preisliste zu durchlaufen. Maschinen bringen ihre Werkzeugbibliothek und ihre Identifikationsdaten mit.

Aufruf
curl "https://app.metronq.com/api/v1/integration/catalog/materials" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "catalog": "materials",
  "count": 12,
  "items": [
    {
      "key": "alu_6061",
      "name": "Aluminium 6061",
      "kind": "metal",
      "en_number": "EN AW-6061",
      "din_number": "3.3211",
      "density_g_cm3": 2.7,
      "price_per_kg": 6.4,
      "mrr_rough_cm3_min": 50.0,
      "mrr_turning_cm3_min": 60.0,
      "finishing_rate_cm2_min": 90.0,
      "stock_allowance_mm": 3.0,
      "cutting_speed_m_min": 250.0
    }
  ]
}
GET/catalog/machines.csvBerechtigung: config:read

Ein Katalog als Tabelle

Derselbe Katalog als CSV-Datei, wie sie die Schaltfläche Export im Panel erzeugt: mit BOM für Excel und dem eigenen Trennzeichen des Betriebs.

Aufruf
curl "https://app.metronq.com/api/v1/integration/catalog/machines.csv" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
key;name;technology;hourly_rate;min_quantity;envelope_mm.1;envelope_mm.2;...
dmu50;DMU 50;milling;95,00;1;650,0;520,0;...
nlx2500;NLX 2500;turning;78,00;1;366,0;705,0;...
GET/cutting-dataBerechtigung: config:read

Schnittdaten

Je Werkstoff die Schnittgeschwindigkeit und die Zeitspanvolumina, aus denen ein Preis berechnet wird; je Maschine die Spindel, mit der sie skaliert werden. Das ist keine Tabelle für den Zahnvorschub und gibt auch nicht vor, eine zu sein.

Aufruf
curl "https://app.metronq.com/api/v1/integration/cutting-data" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "reference": { "spindle_power_kw": 15.0, "cutting_speed_m_min": 250.0 },
  "materials": [
    {
      "key": "steel_c45",
      "name": "Steel C45",
      "cutting_speed_m_min": null,
      "cutting_speed_effective_m_min": 156.2,
      "machinability_factor": 1.6,
      "mrr_rough_cm3_min": 19.5,
      "mrr_turning_effective_cm3_min": 19.5,
      "...": "..."
    }
  ],
  "machines": [
    {
      "key": "dmu50",
      "name": "DMU 50",
      "spindle_power_kw": 13.0,
      "spindle_power_factor": 0.867,
      "min_tool_radius_mm": 1.0,
      "tool_radius_effective_mm": 6.0,
      "tool_count": 3,
      "...": "..."
    }
  ]
}

Werkzeuge

GET/tools?machine=dmu50Berechtigung: config:read

Die Werkzeuge des Betriebs

Alle Werkzeuge als flache Liste, jedes mit der Maschine, in der es steckt, und dem Eckenradius, den es hinterlässt. Der Parameter machine grenzt die Liste auf eine Maschine ein.

Aufruf
curl "https://app.metronq.com/api/v1/integration/tools?machine=dmu50" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "count": 3,
  "items": [
    {
      "key": "e12",
      "kind": "endmill",
      "name": "12 mm carbide, 4 flutes",
      "diameter_mm": 12.0,
      "nose_radius_mm": null,
      "flute_length_mm": 45.0,
      "designation": "",
      "machine_key": "dmu50",
      "machine_name": "DMU 50",
      "cut_radius_mm": 6.0
    },
    { "key": "d6.8", "kind": "drill", "diameter_mm": 6.8, "cut_radius_mm": 3.4, "...": "..." },
    { "key": "m8", "kind": "tap", "diameter_mm": 8.0, "designation": "M8", "cut_radius_mm": 4.0, "...": "..." }
  ]
}
GET/machines/dmu50/toolsBerechtigung: config:read

Die Werkzeuge einer Maschine

Das Werkzeugmagazin einer Maschine und der Eckenradius, der sich daraus ergibt.

Aufruf
curl "https://app.metronq.com/api/v1/integration/machines/dmu50/tools" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "machine_key": "dmu50",
  "machine_name": "DMU 50",
  "count": 3,
  "min_tool_radius_mm": 1.0,
  "tool_radius_effective_mm": 6.0,
  "items": [ { "key": "e12", "...": "..." }, { "key": "d6.8", "...": "..." }, { "key": "m8", "...": "..." } ]
}
PUT/machines/dmu50/toolsBerechtigung: config:write

Werkzeugbibliothek ersetzen

Idempotent: Das System sendet die Liste, die es führt, ohne zu prüfen, was vorher da war. Eine leere Liste setzt die Maschine auf ihren eingetragenen Radius zurück.

Aufruf
curl -X PUT "https://app.metronq.com/api/v1/integration/machines/dmu50/tools" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "tools": [ { "key": "e12", "kind": "endmill", "name": "12 mm carbide", "diameter_mm": 12.0, "flute_length_mm": 45.0 }, { "key": "d6.8", "kind": "drill", "diameter_mm": 6.8 }, { "key": "m8", "kind": "tap", "diameter_mm": 8.0, "designation": "M8" } ] }'
Antwort200 OK
{
  "machine_key": "dmu50",
  "machine_name": "DMU 50",
  "count": 3,
  "min_tool_radius_mm": 1.0,
  "tool_radius_effective_mm": 6.0,
  "items": [ "..." ]
}
POST/machines/dmu50/toolsBerechtigung: config:write

Ein Werkzeug hinzufügen

Fügt ein Werkzeug hinzu oder ersetzt das mit demselben Werkzeugschlüssel - für ein System, das eine einzelne Änderung meldet.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/machines/dmu50/tools" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "key": "r8h7", "kind": "reamer", "diameter_mm": 8.0 }'
Antwort200 OK
{
  "machine_key": "dmu50",
  "machine_name": "DMU 50",
  "count": 4,
  "min_tool_radius_mm": 1.0,
  "tool_radius_effective_mm": 6.0,
  "items": [ "..." ]
}
DELETE/machines/dmu50/tools/r8h7Berechtigung: config:write

Ein Werkzeug entfernen

Entfernt ein Werkzeug. Ein unbekannter Werkzeugschlüssel ergibt 404, damit ein Abgleich eine Entfernung von einem Tippfehler im eigenen Mapping unterscheiden kann.

Aufruf
curl -X DELETE "https://app.metronq.com/api/v1/integration/machines/dmu50/tools/r8h7" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "machine_key": "dmu50",
  "machine_name": "DMU 50",
  "count": 3,
  "min_tool_radius_mm": 1.0,
  "tool_radius_effective_mm": 6.0,
  "items": [ "..." ]
}

Import

POST/config/import/previewBerechtigung: config:write

Vorschau eines Tabellenimports

Was diese Tabelle bewirken würde. Gespeichert wird nichts: Die Antwort nennt die neuen und geänderten Einträge, die Unterschiede Feld für Feld, fehlerhafte Zeilen, unbekannte Spalten und einen base_hash.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/config/import/preview" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "catalog": "materials", "csv_base64": "a2V5O25hbWU7cHJpY2VfcGVyX2tnCmFsdV82MDYxOy..." }'
Antwort200 OK
{
  "ok": true,
  "added": [],
  "updated": ["alu_6061", "steel_c45"],
  "errors": [],
  "ignored_columns": [],
  "changes": [
    {
      "section": "materials",
      "path": "price_per_kg",
      "kind": "edited",
      "default": 6.4,
      "current": 6.9,
      "entity_key": "alu_6061",
      "entity_name": "Aluminium 6061",
      "unit": "field"
    }
  ],
  "changes_total": 2,
  "base_hash": "9c1e4b0f2a7d",
  "config": { "materials": [ "..." ], "machines": [ "..." ], "...": "..." }
}
POST/config/import/preview-jsonBerechtigung: config:write

Vorschau eines Dokumentimports

Dasselbe für ein ganzes Dokument. Der Modus merge ändert nur, was das Dokument nennt; replace lässt es vollständig gewinnen, Löschungen eingeschlossen.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/config/import/preview-json" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "mode": "merge", "config": { "materials": [ "..." ], "machines": [ "..." ] } }'
Antwort200 OK
{
  "ok": true,
  "added": ["pom_c"],
  "updated": [],
  "changes_total": 1,
  "base_hash": "9c1e4b0f2a7d",
  "...": "..."
}
POST/config/importBerechtigung: config:write

Import übernehmen

Speichert, was eine Vorschau geliefert hat, unter Angabe ihres base_hash. Hat sich die Preisliste zwischendurch geändert, lautet die Antwort 409 config_changed.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/config/import" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "config": { "materials": [ "..." ], "...": "..." }, "base_hash": "9c1e4b0f2a7d" }'
Antwort200 OK
{
  "materials": [ { "key": "alu_6061", "price_per_kg": 6.9, "...": "..." } ],
  "machines": [ "..." ],
  "params": { "margin_pct": 22.0, "...": "..." },
  "currency": "EUR"
}

Anfragen

GET/quotes?since=2026-09-16T00:00:00Z&limit=50Berechtigung: quotes:read

Anfragen auflisten

Anfragen, die neuesten zuerst. Für die regelmäßige Abfrage dient since; status, external_ref, limit und offset erledigen den Rest. Ein Status ist einer von: created, uploaded, analyzing, analyzed, priced, approved, rejected, ordered, analysis_failed.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes?since=2026-09-16T00:00:00Z&limit=50" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "items": [
    {
      "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
      "number": 1042,
      "ref": "WID-1042",
      "status": "priced",
      "created_at": "2026-09-16T08:41:12+00:00",
      "filename": "bracket.step",
      "material_key": "alu_6061",
      "quantity": 25,
      "unit_price": 41.5,
      "total_price": 1037.5,
      "discount_pct": null,
      "customer_unit_price": 41.5,
      "currency": "EUR",
      "customer_email": "purchasing@example.com",
      "customer_data_visible": true,
      "external_ref": "",
      "source": "widget"
    }
  ],
  "limit": 50,
  "offset": 0
}
GET/quotes/QUOTE_IDBerechtigung: quotes:read

Eine Anfrage

Eine Anfrage mit ihrer gespeicherten Preisaufschlüsselung - das, was ein System für den Abgleich in den eigenen Büchern braucht.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
  "number": 1042,
  "status": "priced",
  "unit_price": 41.5,
  "total_price": 1037.5,
  "...": "...",
  "breakdown": {
    "machine_key": "dmu50",
    "machine_name": "DMU 50",
    "machine_hourly_rate": 95.0,
    "material_cost": 172.5,
    "machining_minutes": 11.2,
    "machining_cost": 443.3,
    "setup_cost_batch": 71.3,
    "programming_cost_batch": 47.5,
    "delivery_cost": 25.0,
    "lead_days": 10,
    "...": "..."
  }
}
GET/quotes/QUOTE_ID/metricsBerechtigung: quotes:read

Geometrieauswertung

Was die Analyse gemessen hat: Abmessungen, Volumen, Bohrungen, Taschen, Gewinde, dünnste Wand und die Gründe, aus denen eine Kalkulation angehalten wurde. 409 not_analysed heißt, dass die Datei noch gelesen wird.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/metrics" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "quote_id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
  "status": "priced",
  "gate_status": "instant",
  "gate_reasons": [],
  "complexity": 34.2,
  "material_key": "alu_6061",
  "quantity": 25,
  "tolerance_class": "m",
  "surface_finish": "ra_3_2",
  "confirmed_threads": ["M8"],
  "geometry_metrics": {
    "bounding_box": { "x": 120.0, "y": 80.0, "z": 18.0 },
    "volume": 74210.5,
    "surface_area": 31890.2,
    "holes": [ { "diameter": 6.8, "depth": 18.0, "through": true } ],
    "pockets": [ { "depth": 6.0, "floor_area": 1840.0, "direction": [0, 0, 1], "corner_radius": 5.0, "open": false, "...": "..." } ],
    "min_wall_thickness": 3.1,
    "...": "..."
  },
  "parts": [],
  "...": "..."
}
GET/quotes/QUOTE_ID/detailBerechtigung: quotes:read

Die vollständige Kalkulation

Alles, was die Kalkulationsansicht zeigt: wo der Preis steht und ob ein Kunde ihn sehen darf, die Preiszeilen und die Umsatzsteuer, die Spezifikation, die Werte, die eine Neukalkulation annimmt, aufgeschlüsselte Ablehnungsgründe, die Prüfung, die Geometrieauswertung, die Teile einer Baugruppe und wo die Dateien liegen.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/detail" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
  "ref": "API-1043",
  "status": "priced",
  "unit_price": 41.5,
  "source": "api",
  "...": "...",
  "release": { "state": "needs_review", "customer_may_see_price": false },
  "pricing": {
    "engine_unit_price": 41.5,
    "customer_total": 1037.5,
    "delivery_cost": 25.0,
    "order_total": 1062.5,
    "vat_rate_pct": 19.0,
    "order_gross": 1264.38,
    "lead_days": 10,
    "...": "..."
  },
  "material": { "key": "alu_6061", "name": "Aluminium 6061", "density_g_cm3": 2.7, "...": "..." },
  "part_mass_kg": 0.2004,
  "specification": { "tolerance_class": "m", "surface_finish": "ra_3_2", "treatments": [], "...": "..." },
  "choices": {
    "thread_candidates": [ { "designation": "M8", "count": 4, "total_depth_mm": 72.0, "hole_key": "6.8" } ],
    "hole_fit_options": [ { "key": "8.0", "diameter": 8.0, "count": 2 } ],
    "...": "..."
  },
  "outcome": {
    "gate_status": "pending_review",
    "gate_reasons": [
      {
        "raw": "part_exceeds_envelope:vf2:part_size_y:350:310",
        "code": "part_exceeds_envelope",
        "machine_key": "vf2",
        "machine_name": "Haas VF-2",
        "field": "part_size_y",
        "actual": 350.0,
        "limit": 310.0
      }
    ],
    "review": { "note": null, "reviewed_at": null, "reviewed_by": null },
    "...": "..."
  },
  "readout": { "geometry_metrics": { "...": "..." }, "...": "..." },
  "items": [],
  "files": {
    "original": { "available": true, "path": "/quotes/6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33/file" },
    "preview": { "available": true, "path": "/quotes/6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33/preview.glb" },
    "readable": true,
    "...": "..."
  },
  "created_by_key": { "name": "PDM", "prefix": "a1b2c3d4" },
  "...": "..."
}
GET/quotes/QUOTE_ID/similarBerechtigung: quotes:read

Ähnliche Teile

Die drei geprüften Teile des Betriebs, die diesem am nächsten kommen, mit dem freigegebenen Preis und damit, wie weit die Engine davon entfernt lag.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/similar" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "count": 1,
  "items": [
    {
      "id": "0d9e7c21-5b3a-4f10-8c6d-9a2e4b7f1c05",
      "ref": "WID-1017",
      "original_filename": "bracket-rev-a.step",
      "approved_unit_price": 39.0,
      "quantity": 20,
      "currency": "EUR",
      "auto_error_pct": 4.1,
      "date": "2026-08-30T14:02:11+00:00"
    }
  ]
}
GET/quotes/QUOTE_ID/machine-optionsBerechtigung: quotes:read

Der Preis auf jeder Maschine

Der Maschinenpark, gegen diese Kalkulation gerechnet: ein Stückpreis je Maschine oder die Gründe, warum sie das Teil nicht annehmen kann, und welche Maschine die Engine wählt.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/machine-options" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "count": 2,
  "items": [
    { "key": "dmu50", "name": "DMU 50", "unit_price": 41.5, "feasible": true, "reasons": [], "auto": true, "...": "..." },
    {
      "key": "vf2",
      "name": "Haas VF-2",
      "unit_price": null,
      "feasible": false,
      "reasons": [ { "code": "part_exceeds_envelope", "field": "part_size_y", "actual": 350.0, "limit": 310.0, "...": "..." } ],
      "auto": false,
      "...": "..."
    }
  ]
}
GET/quotes/QUOTE_ID/partsBerechtigung: quotes:read

Die Teile einer Baugruppe

Jedes Teil einer Baugruppe mit eigenen zu bestätigenden Gewinden und Passungen, der Maschine, dem Werkstoff und dem Rohteil, die die Arbeitsvorbereitung dafür gewählt hat, und dem Grund, wenn ein Teil keinen Preis hat.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/parts" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "count": 2,
  "items": [
    {
      "index": 1,
      "label": "Housing cover",
      "count": 1,
      "unpriced_reason": null,
      "price_overrides": { "machine_key": "dmu50" },
      "choices": {
        "thread_candidates": [ { "key": "1:M16", "designation": "M16", "...": "..." } ],
        "hole_fit_options": [ { "key": "1:80.0", "diameter": 80.0, "...": "..." } ],
        "...": "..."
      },
      "...": "..."
    },
    { "index": 2, "label": "Bearing 6208", "count": 2, "gate_status": "tbd", "unpriced_reason": "norm_part", "...": "..." }
  ]
}
PATCH/quotes/QUOTE_IDBerechtigung: quotes:write

Ihre Nummer an der Anfrage

Speichert die Nummer aus Ihrem System und sonst nichts. Preis und Freigabe liegen bei der Engine und bei der Arbeitsvorbereitung.

Aufruf
curl -X PATCH "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "external_ref": "RFQ-2026-0455" }'
Antwort200 OK
{
  "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
  "number": 1042,
  "external_ref": "RFQ-2026-0455",
  "...": "..."
}

Teil senden

POST/quotesBerechtigung: quotes:create

Eine Kalkulation für eine Datei anlegen

Name und Größe der Datei und die Parameter der Kalkulation. Die Antwort enthält die Upload-Adresse und die Header; die Datei geht in den Speicher, nicht über uns. Jede Datei ist eine Kalkulation im Tarif.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/quotes" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "filename": "bracket.step", "file_size_bytes": 482113, "quantity": 25, "material_key": "alu_6061", "tolerance_class": "f", "external_ref": "RFQ-2026-0455" }'
Antwort201 Created
{
  "quote": {
    "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
    "number": 1043,
    "ref": "API-1043",
    "status": "created",
    "source": "api",
    "external_ref": "RFQ-2026-0455",
    "...": "..."
  },
  "release": { "state": "waiting", "customer_may_see_price": false },
  "upload": {
    "method": "PUT",
    "url": "https://OBJECT_STORAGE/...",
    "headers": {
      "x-amz-server-side-encryption-customer-algorithm": "AES256",
      "x-amz-server-side-encryption-customer-key": "...",
      "x-amz-server-side-encryption-customer-key-MD5": "..."
    },
    "content_length": 482113,
    "expires_at": "2026-09-25T10:15:00+00:00"
  }
}
POST/quotes/QUOTE_ID/confirm-uploadBerechtigung: quotes:create

Upload bestätigen

Die Datei ist angekommen: Die Analyse wird eingereiht, und direkt danach wird das Teil kalkuliert. Zweimal zu bestätigen schadet nicht.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/confirm-upload" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort202 Accepted
{
  "quote": { "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33", "ref": "API-1043", "status": "uploaded", "...": "..." },
  "release": { "state": "waiting", "customer_may_see_price": false },
  "poll_after_seconds": 10
}
POST/quotes/QUOTE_ID/repriceBerechtigung: quotes:create

Parameter ändern

Menge, Werkstoff, Toleranzen, Gewinde, Passungen, Behandlungen oder Lieferzeit - die Engine kalkuliert neu. Jede Kalkulation, bis ein Mensch entscheidet.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/reprice" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "quantity": 50, "confirmed_threads": ["M8"], "hole_fits": { "8.0": "H7" } }'
Antwort200 OK
{
  "quote": { "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33", "status": "priced", "quantity": 50, "unit_price": 36.9, "...": "..." },
  "release": { "state": "instant", "customer_may_see_price": true }
}
POST/quotes/QUOTE_ID/drawing-inputsBerechtigung: quotes:create

Eine Zeichnung ergänzen

Werkstoff, Maßstab oder Dicke für eine Zeichnung, die Ihr System gesendet hat und aus der die Engine kein Modell erzeugen konnte. Die Analyse läuft erneut.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/drawing-inputs" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scale_ratio": 2.0, "material_key": "steel_c45" }'
Antwort202 Accepted
{
  "quote": { "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33", "status": "uploaded", "...": "..." },
  "release": { "state": "waiting", "customer_may_see_price": false },
  "poll_after_seconds": 10
}
POST/quotes/QUOTE_ID/submit-drawingBerechtigung: quotes:create

Eine Zeichnung an einen Menschen übergeben

Eine Zeichnung, die Ihr System gesendet hat und die die Engine nicht rekonstruieren konnte, geht an die Arbeitsvorbereitung, die sie von Hand kalkuliert.

Aufruf
curl -X POST "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/submit-drawing" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "quantity": 10 }'
Antwort200 OK
{
  "quote": { "id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33", "status": "priced", "unit_price": null, "...": "..." },
  "release": { "state": "manual", "customer_may_see_price": false }
}

Dateien und Dokumente

GET/quotes/QUOTE_ID/pdf?locale=enBerechtigung: quotes:read

Das Angebotsdokument

Das PDF, das die Schaltfläche Export im Panel erzeugt, in jeder Sprache, die der Betrieb anbietet.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/pdf?locale=en" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -o API-1043.pdf
Antwort200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="quote-API-1043.pdf"
GET/quotes/QUOTE_ID/fileBerechtigung: quotes:read + files:read

Die hochgeladene Datei

Die Datei des Kunden unter ihrem ursprünglichen Namen, beim Abruf entschlüsselt.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/file" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -o bracket.step
Antwort200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="bracket.step"
Content-Length: 482113
GET/quotes/QUOTE_ID/preview.glbBerechtigung: quotes:read + files:read

Die 3D-Vorschau

Das Modell, das der Viewer im Panel zeichnet, als binäres glTF. Seine Flächen sind die Schlüssel der Toleranzen je Fläche.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/preview.glb" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -o bracket.glb
Antwort200 OK
Content-Type: model/gltf-binary
Content-Length: 211904
GET/quotes/QUOTE_ID/items/2/preview.glbBerechtigung: quotes:read + files:read

Ein Teil einer Baugruppe

Die Vorschau eines einzelnen Teils, über den Index, den die vollständige Kalkulation auflistet.

Aufruf
curl "https://app.metronq.com/api/v1/integration/quotes/QUOTE_ID/items/2/preview.glb" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -o part-2.glb
Antwort200 OK
Content-Type: model/gltf-binary
Content-Length: 48212

Aufträge

GET/orders?since=2026-09-16T00:00:00ZBerechtigung: quotes:read

Aufträge auflisten

Aufträge, die neuesten zuerst, mit denselben Filtern. Kundendaten kommen nur mit der Berechtigung customers:read zurück.

Aufruf
curl "https://app.metronq.com/api/v1/integration/orders?since=2026-09-16T00:00:00Z" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "items": [
    {
      "id": "1b7a44c0-9d2e-4e51-8a10-64d1f0a2e777",
      "quote_id": "6f1c0f5a-2a4d-4d7e-9f0b-2c9b8f0a1d33",
      "status": "confirmed",
      "payment_status": "unpaid",
      "created_at": "2026-09-16T09:12:40+00:00",
      "paid_at": null,
      "quantity": 25,
      "unit_price": 41.5,
      "total_price": 1062.5,
      "min_order_top_up": 0.0,
      "delivery_cost": 25.0,
      "currency": "EUR",
      "external_ref": "",
      "customer": { "name": "Alex Morgan", "company": "Example Engineering Ltd", "city": "Riverton", "...": "..." },
      "note": "",
      "customer_data_visible": true
    }
  ],
  "limit": 100,
  "offset": 0
}
GET/orders/ORDER_IDBerechtigung: quotes:read

Ein Auftrag

Ein Auftrag mit dem Kunden, an den Rechnung und Teile gehen.

Aufruf
curl "https://app.metronq.com/api/v1/integration/orders/ORDER_ID" \
  -H "Authorization: Bearer mq_live_YOUR_KEY"
Antwort200 OK
{
  "id": "1b7a44c0-9d2e-4e51-8a10-64d1f0a2e777",
  "status": "confirmed",
  "payment_status": "unpaid",
  "customer": {
    "name": "Alex Morgan",
    "email": "purchasing@example.com",
    "company": "Example Engineering Ltd",
    "address": "12 Industrial Road",
    "postcode": "AB1 2CD",
    "city": "Riverton",
    "...": "..."
  },
  "note": "",
  "...": "..."
}
PATCH/orders/ORDER_IDBerechtigung: quotes:write

Status und Auftragsnummer

Ihre Nummer, der Status und die Zahlungsmarkierung. Geändert werden nur die Felder im Body; Bestätigung und Versand lösen eine E-Mail an den Kunden aus.

Aufruf
curl -X PATCH "https://app.metronq.com/api/v1/integration/orders/ORDER_ID" \
  -H "Authorization: Bearer mq_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "external_ref": "WO-2026-0912", "status": "in_production" }'
Antwort200 OK
{
  "id": "1b7a44c0-9d2e-4e51-8a10-64d1f0a2e777",
  "status": "in_production",
  "payment_status": "unpaid",
  "external_ref": "WO-2026-0912",
  "quantity": 25,
  "total_price": 1062.5,
  "currency": "EUR",
  "...": "..."
}

06Fragen

Häufige Fragen zur API

Wie bekomme ich Zugang zur API?

Den Zugang vereinbaren wir mit jedem Betrieb einzeln - schreiben Sie uns einfach, welches System Sie einsetzen. Die Schlüssel legt danach der Kontoinhaber in den Einstellungen an, im Reiter Integrationen.

Kann ich eine Integration testen, bevor ich mich entscheide?

Ja. Solange die Anbindung entsteht, kann ein Betrieb einen Testschlüssel mit einem Budget an Aufrufen für den gesamten Test bekommen. Das Budget ist im Panel und in jeder Antwort der API sichtbar.

Kann die API von sich aus die Preise ändern, die Kunden sehen?

Nur über Vorschau und Übernahme, genau wie ein Import im Panel, und nur mit einem Schlüssel, der config:write besitzt. Jede Änderung landet im Änderungsprotokoll der Einstellungen, mit dem Namen des Schlüssels, der sie vorgenommen hat.

Kann ein API-Schlüssel eine Kalkulation freigeben oder ihren Preis ändern?

Nein. Ein Schlüssel kann eine Datei senden und die Parameter ändern, mit denen sie kalkuliert wird (den Preis rechnet dann die Engine), Ihre Nummer an eine Anfrage schreiben und den Status eines Auftrags weitersetzen. Ein von Hand eingetragener Preis, die Freigabe und Rabatte liegen bei einem Menschen.

Kann mein System Teiledateien zur Kalkulation senden?

Ja, mit einem Schlüssel, der quotes:create besitzt. Das System legt eine Kalkulation an, lädt die Datei direkt in den verschlüsselten Speicher hoch und bestätigt; die Engine analysiert und kalkuliert das Teil, und die vollständige Kalkulation kommt zurück. Jede Datei ist eine Kalkulation im Tarif des Betriebs, genau wie eine aus dem Widget.

Benachrichtigt MetronQ mein System von selbst über neue Anfragen?

Noch nicht. Heute fragt Ihr System neue Anfragen und Aufträge mit dem Parameter since ab, was bequem in das Standardlimit von 120 Aufrufen pro Minute passt. Wenn Sie Benachrichtigungen von unserer Seite brauchen, sagen Sie es uns - solche Wünsche entscheiden, was wir als Nächstes bauen.

Welche Kundendaten sieht eine Integration?

Nur das, was der Schlüssel erlaubt. Ohne die Berechtigung customers:read kommen Anfragen und Aufträge ohne E-Mail-Adresse, Kontaktdaten und Notizen des Kunden zurück, und das Feld customer_data_visible sagt ausdrücklich, dass diese Daten zurückgehalten wurden.

Kann ich Daten auch ohne Entwickler über Excel austauschen?

Ja. CSV-Export und -Import funktionieren im Panel unter den Kalkulationsregeln: zuerst exportieren, die Tabelle bearbeiten, dann mit einer Vorschau der Änderungen importieren.

Verbinden wir MetronQ mit dem System, das Sie bereits nutzen

Sagen Sie uns, welches ERP oder CRM Sie einsetzen. Wir stimmen Berechtigungen und Limits ab und geben Ihnen einen Testschlüssel, solange die Anbindung entsteht.