Zum Inhalt springen
FrankKi
AnmeldenKostenlos starteniOS Download
Menü

Tool-Referenz

Diese Liste wird beim Build direkt aus der Tool-Registry des Servers generiert, kein Feld ist von Hand gepflegt. Ein registriertes, aktives Tool erscheint mit echten Feldern, ein registriertes aber inaktives Tool zeigt „Bald verfügbar", ein nicht registriertes Tool taucht gar nicht auf. Die Wire-Konventionen (ISO-8601, Cent-Beträge, clientOrderId, dryRun) stehen einmal im Konventionen-Panel, hier nur als kurzer Hinweis pro Tool.

apiVersion v1 · schemaRevision 2 · 68 tools

Jeder Tool-Aufruf kann außerdem einen dieser Transport-Codes zurückgeben, hier nur einmal aufgeführt: UNAUTHORIZED, FORBIDDEN_SCOPE, VALIDATION_ERROR, RATE_LIMITED, INTERNAL_ERROR

Lesen

  • mcp_health

    Verbindungs- und Einrichtungsprobe: prüft das Partner-Token und die Verarbeitungskette von Anfang bis Ende und meldet unter setup, welche Voraussetzungen für einen echten Versand erfüllt sind (Absender-Profil, AVV, Guthaben, Sandbox, Freigabe, Marke, Briefpapier, Vorlagen) und welcher Schritt als nächster ansteht. Bei einem neuen Konto listet setup.goldenPath die Einrichtungsschritte in Reihenfolge. Jeder Schritt trägt humanSummary (de, en), einen Satz in Alltagssprache für den Menschen; Tool-Namen, nextTool, fixUrl und messageDe/messageEn sind maschinenlesbar. checkRender: true prüft zusätzlich, ob das Rendern gerade funktioniert (Vorschau, Thumbnail), etwa vor dem Bau einer Vorlage, die danach als Bild geprüft wird. Die Antwort kommt in etwa 3 Sekunden: eine Prüfung über ihrem Zeitbudget steht unter degraded und meldet ihren vorsichtigen Standardwert.

    FeldTyp
    checkRenderbooleanOptionalPrüft zusätzlich den Render-Pfad (Composer + Rasterizer). Standard false.
  • profile_getScope: profile:read

    Liefert das Partnerprofil im Überblick: Standard-Absenderadresse, hinterlegte Signatur und Briefkopf, gespeicherte Presets, eine kurze Wallet-Zusammenfassung und das aktuelle Preismodell des Partners (Standardpreis oder Mengenstaffel, inklusive nächster Staffelstufe).

    Keine Eingabefelder außer reasoning.

  • wallet_balanceScope: wallet:read

    Liefert den aktuellen Wallet-Stand: Guthaben, den für wartende Briefe reservierten Betrag, das verfügbare Guthaben, Tageslimit für Briefe und Kosten, den nächsten Reset-Zeitpunkt sowie das aktuelle Preismodell (Standardpreis oder Mengenstaffel). Bleibt das verfügbare Guthaben unter den geplanten Versandkosten, liefert wallet_topup_link den Link zum Aufladen.

    Keine Eingabefelder außer reasoning.

  • sender_profile_listScope: sender_profile:read

    Listet alle Absenderprofile des Partners mit ihrer Rechtsform und ob die Pflichtangaben vollständig sind.

    Keine Eingabefelder außer reasoning.

  • sender_profile_getScope: sender_profile:read

    Liefert ein einzelnes Absenderprofil mit allen Pflichtangaben, Bankverbindung und Disclaimer. profileId ist optional und steht sonst für das Standardprofil.

    FeldTyp
    profileIdstring (uuid)OptionalOptional, Standard ist das Standardprofil.

    Fehlercodes: NOT_FOUND

  • mandant_getScope: mandant:read

    Liefert einen Mandanten mit Adressen, Kategorie, Sachbearbeiter, Monatslimit, verbrauchtem Monatsbudget, Aufbewahrungsdauer und der Briefanzahl der letzten 12 Monate.

    FeldTyp
    mandantIdstringOptional
    mandantennummerstringOptional

    Fehlercodes: NOT_FOUND

  • mandant_listScope: mandant:read

    Listet die Mandanten des Partners, optional gefiltert nach Suchbegriff, Kategorie oder Tag.

    FeldTyp
    searchQuerystringOptional
    kategorieFilterstringOptional
    tagFilterstringOptional
    sincestring (date-time)OptionalNur Mandanten, die seit diesem Zeitpunkt angelegt wurden (ISO 8601).
    limitintegerOptionalStandard 20, maximal 100.
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • mandant_searchScope: mandant:read

    Sucht Mandanten über Mandantennummer, Name, Tags oder Sachbearbeiter und nennt für jeden Treffer die passende Spalte. Nächster Schritt mit der gefundenen mandantennummer: document_create erzeugt daraus eine Rechnung, Mahnung, Zahlungserinnerung oder Gutschrift, mandant_get liefert die vollständigen Stammdaten, letter_create_draft schreibt einen normalen Brief.

    FeldTyp
    querystringPflicht
    sincestring (date-time)OptionalNur Mandanten, die seit diesem Zeitpunkt angelegt wurden (ISO 8601).
    limitintegerOptionalStandard 20, maximal 100.
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • template_listScope: template:read

    Listet die Brief-Vorlagen (Vorlagenliste, template list) für Anlässe wie Kündigung, Rechnung, Mahnung, Angebot, Vertrag und Behördenpost, mit Kategorie, Version und Platzhaltern (Merge-Feldern). Der technische Tool-Name ist template_list. Standardmäßig kommen die freigegebenen Vorlagen; statusFilter mit dem Scope template:write liefert auch offene Entwürfe. Jeder Eintrag sagt mit curated: true, ob es eine kuratierte FrankKi-Standardvorlage ist (die Bibliothek zum Kopieren), und mit hasBlocks: true, ob sie ein strukturiertes Layout mit Tabellen und Summen trägt statt Fließtext. Nächster Schritt: template_get liefert eine Vorlage vollständig (bei einer Blockvorlage inklusive blocksTemplate und styleDefs zum Kopieren und Anpassen), template_apply_with_merge_fields füllt sie mit Werten.

    FeldTyp
    querystringOptionalSuchwort für Name und Kategorie, z. B. Mahnung oder Miete.
    kategorieFilterstringOptional
    statusFilterreleased | draft | allOptionalreleased (Standard) zeigt alle freigegebenen Vorlagen. Eigenständige Formularvorlagen tragen sendable:false und brauchen beim Anwenden ein Anschreiben. draft zeigt nur offene Entwürfe, all beide. draft und all brauchen zusätzlich den Scope template:write.
    sourceown | library | allOptionalown liefert die Vorlagen des Kontos, library die FrankKi-Bibliothek, all (Standard) beide, die eigenen zuerst. Jede Zeile nennt ihre Herkunft in source.
    limitintegerOptionalStandard 50, maximal 100.
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • template_getScope: template:read

    Liefert eine einzelne Vorlage mit Betreff- und Inhaltsvorlage, den Merge-Feldern und der empfohlenen Freigabe-Voreinstellung. Eine Blockvorlage liefert zusätzlich blocksTemplate und styleDefs; kopiert und angepasst speichert template_save sie als eigenen Entwurf. Die Gestaltungskette beginnt hier: template_get auf einer kuratierten Standardvorlage (template_list markiert sie mit curated: true), Änderungen an blocksTemplate, letter_preview rendert den Stand, template_save speichert ihn, template_preview zeigt die gespeicherte Version, template_release gibt sie frei. Mit versionId und dem Scope template:write lässt sich auch eine bestimmte Entwurfsversion lesen. Nächster Schritt: template_apply_with_merge_fields füllt die Platzhalter mit Werten.

    FeldTyp
    templateIdstring (uuid)Pflicht
    versionIdstring (uuid)OptionalOptional: eine bestimmte Version, auch ein Entwurf. Braucht zusätzlich den Scope template:write. Ohne Angabe kommt die freigegebene Version.

    Fehlercodes: NOT_FOUND

  • letter_getScope: letter:read

    Liefert einen Brief des Partners samt zugehörigem Auftrag und einer 24 Stunden gültigen Download-URL für die PDF. status ist der Briefstatus; vor dem Auftrag trägt ein Brief in der Freigabe denselben Status wie in order_status: pending_approval, approved_in_grace oder queued_autopilot, dazu approval mit approvalId. letterStatus ist der gespeicherte Briefstatus.

    FeldTyp
    letterIdstring (uuid)Optional
    orderIdstring (uuid)Optional
  • letter_listScope: letter:read

    Listet die Briefe des Partners mit optionalen Filtern nach Empfängername, Betreff, Status und Zeitpunkt. status ist der Briefstatus; vor dem Auftrag trägt ein Brief in der Freigabe denselben Status wie in order_status: pending_approval, approved_in_grace oder queued_autopilot, dazu approval mit approvalId. letterStatus ist der gespeicherte Briefstatus.

    FeldTyp
    recipientNameContainsstringOptional
    subjectContainsstringOptional
    statusFilterdraft | ready | ordered | printed | shipped | delivered | pending_approval | sent | unsentOptionalBriefstatus draft, ready, ordered, printed, shipped oder delivered. pending_approval steht für Briefe, die auf eine Freigabe warten; draft und ready enthalten die übrigen Briefe dieses Stands. sent steht für alle Briefe mit einem angenommenen Auftrag, unsent für alle übrigen.
    sincestring (date-time)Optional
    limitintegerOptional
    offsetintegerOptional
  • sender_profile_validateScope: sender_profile:read

    Prüft, ob ein Absenderprofil (per profileId) oder ein vorgeschlagener Feldsatz alle Pflichtangaben für seine Rechtsform enthält. Der Aufruf nimmt genau eine Form: profileId ODER rechtsform + proposedFields. proposedFields ist ein Objekt; ein JSON-kodierter Objekt-String wird ebenfalls akzeptiert. Liefert valid, missingFields und weiche Hinweise. Meldet eine Lücke als Ergebnis und läuft dabei durch.

    Keine Eingabefelder außer reasoning.

  • analytics_summaryScope: analytics:read

    Liefert die aggregierten Kennzahlen des Partnerkontos: Briefe pro Monat, Kosten pro Mandant zur Weiterberechnung, Laufzeiten bis zur Zustellung, Fehlerquoten und Ausgaben gegen die gesetzten Limits. Beträge sind Netto-Kosten in Cent.

    FeldTyp
    metricoverview | letters_per_month | cost_per_mandant | delivery_times | failure_rates | spend_vs_capsOptionalWelche Auswertung. overview (Standard) fasst die letzten drei Monate zusammen.
    monthsintegerOptionalTrendlänge für letters_per_month und failure_rates, 1 bis 24, Standard 12.
    sincestringOptionalZeitraumbeginn für cost_per_mandant und delivery_times, zum Beispiel 2026-01-01. Standard: letzte 90 Tage.
    untilstringOptionalZeitraumende, Standard jetzt.
    topNintegerOptionalAnzahl Mandanten in cost_per_mandant, 1 bis 50, Standard 10.
  • address_listScope: address:read

    Listet die Adressen im Partner-Adressbuch. Optional nach Name, Stadt oder Mandant gefiltert.

    FeldTyp
    searchQuerystringOptional
    limitintegerOptional
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • address_validateScope: address:read

    Prüft eine Adresse anhand landesspezifischer Regeln und liefert valid (dasselbe Urteil wie die Adressprüfung von order_send) sowie je Feld, was fehlt, falsch geformt ist oder vom Ort abweicht. Nur eine Prüfung, das Adressbuch bleibt unverändert; Anlegen und Ändern übernimmt address_upsert.

    FeldTyp
    namestringPflicht
    companystringOptional
    streetstringPflicht
    houseNumberstringOptional
    poboxstringOptional
    zipstringOptional
    citystringPflicht
    countrystringOptionalISO-3166-alpha-2, default DE.
    mandantennummerstringOptional
    addressTyperecipient | sender | billingOptional
    isDefaultbooleanOptional
  • template_apply_with_merge_fieldsScope: template:read

    Füllt die Platzhalter einer gespeicherten Vorlage mit Werten und gibt Betreff und Inhalt oder ein vollständiges Anschreiben-Formular-Paket zurück. Bei einer Blockvorlage kommen statt content die fertigen blocks zurück. Briefkopf und Marke werden getrennt bei Vorschau oder Versand gewählt. Eine eigenständige Formularvorlage mit sendable:false und releaseBlocker:null braucht coverTemplateId aus einer direkt adressierbaren Briefvorlage; eine gespeicherte Verknüpfung bleibt nur der optionale Standard. order_send versendet das Ergebnis mit templateId, templateVersionId, coverTemplateId, coverTemplateVersionId und den ursprünglichen templateMergeValues und rendert damit genau diese Version neu. order_send erwartet die Paketabschnitte in der Form, in der sie hier zurückkommen. Fehlt eine Pflichtangabe, antwortet das Tool mit MERGE_FIELDS_MISSING und nennt die fehlenden oder ungültigen Felder.

    FeldTyp
    templateIdstring (uuid)PflichtId der Vorlage aus template_list / template_get.
    templateVersionIdstring (uuid)OptionalExakte freigegebene oder ersetzte Vorlagenversion. Ohne Angabe wird die aktuell freigegebene Version verwendet.
    coverTemplateIdstring (uuid)OptionalOptionales Anschreiben für eine eigenständige Formularvorlage. Ohne gespeicherte Verknüpfung ist es zum Anwenden erforderlich.
    coverTemplateVersionIdstring (uuid)OptionalOptional: exakte freigegebene Version des gewählten Anschreibens.
    mergeValuesObjektOptionalZuordnung von Platzhalter-Namen zu Werten, z. B. { "provider": "Telekom" }. Der Typ des Merge-Feldes gilt: date erwartet ISO JJJJ-MM-TT, currency ganzzahlige Cent, number eine Zahl, rows eine Liste von Zeilenobjekten mit den Spaltenschlüsseln der gebundenen Tabelle.
    languagede | enOptionalSprache für die Formatierung von Betrag und Datum. Standard de.
    mandantennummerstringOptionalOptionaler Mandantenbezug (nur Kontext).

    Fehlercodes: NOT_FOUND

  • shipping_quoteScope: letter:read

    Ermittelt Preis, Briefformat, Versandart und voraussichtliche Laufzeit für einen geplanten Brief, bevor er versendet wird. Die Schätzung braucht nur Seitenzahl, Land und Versandart. Steht der Brief schon fest, versendet ihn order_send, und order_send mit dryRun:true liefert den genaueren Preis für genau diesen Brief. Der Preis gilt pro Brief und enthält bereits die Mengenstaffel des Partners, falls eine greift (Feld tierId); die Staffelpreise selbst liefert pricing_tiers. Ob es Einschreiben gibt, richtet sich nach dem aktuellen Katalog des Ziellands. einschreiben_einwurf und einschreiben_uebergabe sind deutsche Produkte; die Schweiz hat ch_einschreiben. Für andere Ziele listet ein Standard-shipping_quote für das Land die verfügbaren Versandarten in availableDeliveryTypes, und ein Quote für den gewählten Code liefert dessen Preis. Eine abgelehnte Kombination aus Land und Versandart gilt für genau dieses Paar, ein Katalogstand für genau diesen Stand. Sendungsverfolgung und Einschreiben sind verschiedene Produkte.

    FeldTyp
    pageCountintegerPflichtSeitenzahl für eine allgemeine Schätzung. Mit letterId verwendet FrankKi die gespeicherte Seitenzahl und ignoriert diesen Wert.
    colorbooleanOptionalFarbe für eine Schätzung. Ohne Angabe gilt die Farbe des Standard-Briefpapiers. Mit letterId liest FrankKi die Farbe aus der gespeicherten Vorschau.
    deliveryTypestandard | einschreiben_einwurf | einschreiben_uebergabe | ch_b_post | ch_a_post | ch_einschreiben | at_eco | at_prio | intl_standard | intl_priority | intl_express | intl_tracked | intl_registeredPflichtVersandart-Code. Einschreiben: einschreiben_einwurf und einschreiben_uebergabe für Deutschland, ch_einschreiben für die Schweiz; für andere Länder nennt ein Standard-Quote die Codes in availableDeliveryTypes.
    expressbooleanOptional
    countrystring, max. 2 ZeichenOptionalISO 3166-1 alpha-2, Standard DE.
    letterIdstring (uuid)OptionalOptional: die letterId eines bestehenden Entwurfs. Dann kommen Seitenzahl und Farbe aus der gespeicherten Vorschau; den endgültigen Preis inklusive Anhängen liefert order_send mit dryRun:true.
  • pricing_tiersScope: letter:read

    Liefert die Staffelpreise (Mengenrabatte) von FrankKi: ab welcher Monatsmenge welcher Beispielpreis pro Brief gilt. Das beantwortet Fragen nach Mengenrabatt, Volumenpreis, Staffelpreis oder Großkundenpreis. Die Beispielpreise gelten für einen einseitigen Standardbrief in Schwarzweiß innerhalb Deutschlands, der echte Preis pro Brief hängt zusätzlich von Seitenzahl, Farbe, Versandart und Zielland ab (den liefert shipping_quote).

    Keine Eingabefelder außer reasoning.

  • order_statusScope: order:read

    Liefert den Stand eines Briefs: Status, deutsche Sendungsverfolgung, Sendungsnummer (bei Einschreiben), voraussichtliche Zustellung und ob er sich noch stornieren lässt. Der Aufruf nimmt genau eine Kennung: orderId, approvalId (aus order_send, solange orderId null ist) oder letterId. Vor dem Versand kommt status queued_autopilot mit dispatchAt, humanSummary (de, en) und cancelWith. Bei awaiting_partner_fix wartet der Brief auf order_fix_resubmit, bei failed nennt failure den Grund und nextStep den Weg zurück. Solange cancellable true ist, stoppt order_cancel den Versand.

    FeldTyp
    orderIdstring (uuid)Optional
    approvalIdstring (uuid)OptionalAus order_send, solange orderId null ist.
    letterIdstring (uuid)Optional

    Fehlercodes: NOT_FOUND

  • order_einlieferungsbelegScope: order:read

    Liefert den Einlieferungsbeleg (Einlieferungsnachweis) zu einem versendeten Auftrag, sobald der Brief eingeliefert ist und der Versanddienstleister einen Beleg ausstellt: eine 7 Tage gültige Download-URL für den Beleg (eine PDF, wenn der Versanddienstleister eine ausstellt, sonst ein JSON-Nachweis aus seinen Statusdaten; belegFormat nennt das Format, ein neuer Aufruf liefert einen frischen Link), den Poststempel, den Versanddienstleister sowie den geprüften Nachweis aus dem GoBD-Archiv. Der Beleg zeigt die Einlieferung bei der Post. Sendungsnummer und Zustellstatus eines Einschreibens liefert order_status.

    FeldTyp
    orderIdstring (uuid)Pflicht

    Fehlercodes: NOT_FOUND

  • approval_listScope: approval:read

    Listet die Freigaben des Kontos, neueste zuerst, mit einer zeitlich begrenzten PDF-Vorschau, den Kosten, dem Grund und den Fristen. Standardmäßig die offenen Freigaben und die freigegebenen Briefe, die noch in ihrem Stornofenster warten (Autopilot, Chat); graceState nennt dispatchAt. status all zeigt alles. approval_decide entscheidet über eine der zurückgegebenen approvalIds.

    FeldTyp
    statuspending | approved | rejected | expired | allOptionalStandard: offen plus Stornofenster.
    sincestring (date-time)OptionalNur Freigaben, die seit diesem Zeitpunkt eingereicht wurden (ISO 8601).
    approvalIdstringOptionalEine einzelne Freigabe mit allen Angaben: alle Diff-Segmente der Vorlage und alle Empfänger eines Stapels. Ohne approvalId kürzt die Liste beides.
    limitintegerOptionalStandard 20, maximal 100.
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • setup_fix_linkScope: profile:read

    Gibt einen Punkt an den Menschen im Browser weiter: Guthaben aufladen, den Auftragsverarbeitungsvertrag (AVV) unterschreiben oder das Absender-Profil vervollständigen. Liefert die passende Seite und eine Karte, die den Briefentwurf sichtbar stehen lässt und selbst merkt, wenn der Mensch zurück ist. Bezahlt wird im Browser.

    FeldTyp
    gapwallet | avv | senderProfilePflichtWelcher Punkt übergeben wird: wallet (Guthaben), avv (Auftragsverarbeitungsvertrag) oder senderProfile (Absender-Profil).
  • wallet_topup_linkScope: wallet:read

    Erstellt einen Stripe-Checkout-Link zum Aufladen des Wallet-Guthabens. Die Kartendaten bleiben bei Stripe; das Guthaben wird nach Abschluss der Zahlung gutgeschrieben.

    FeldTyp
    amountEurosnumberPflichtAufladebetrag in Euro, zwischen 10 und 500.
    requestNoncestring, max. 200 ZeichenOptionalOptionaler stabiler Wiederholungs-Schlüssel. Bei einer Wiederholung denselben Wert senden, um denselben Checkout-Link zu erhalten statt eines zweiten.

    Fehlercodes: INSUFFICIENT_FUNDS

  • template_diff_checkScope: template:read

    Vergleicht einen fertigen Brief mit seiner Vorlage und zeigt, wo er abweicht. Eine Blockvorlage vergleicht finalBlocks an Stelle von finalContent, Text für Text in Lesereihenfolge. Kostenlos und rein lesend.

    FeldTyp
    templateIdstring (uuid)PflichtId der Vorlage aus template_list / template_get.
    versionIdstring (uuid)OptionalOptional: bestimmte Version, sonst die freigegebene.
    finalSubjectstringPflichtDer finale Betreff des Briefs.
    finalContentstringOptionalDer finale Brieftext. Ein Blockbrief kommt als finalBlocks.
    finalBlocksArray<Objekt>OptionalDie finalen Blöcke, wenn der Brief strukturiert ist. Verglichen werden die Texte in Lesereihenfolge.
    mergeFieldsObjektOptionalZuordnung der Platzhalter-Namen zu Werten, z. B. { "provider": "Telekom" }.

    Fehlercodes: NOT_FOUND

  • letter_design_listScope: letter_design:write

    Listet die gespeicherten Briefpapiere (Briefdesigns) des Partners mit Name, ID und Hashes; mit designId liefert es ein Design samt vollständigem Design-JSON. Ein Design wird per Name oder ID beim Versand referenziert und trägt jede Post: Kündigung, Rechnung, Mahnung, Angebot, Vertrag und Behördenpost.

    FeldTyp
    includeArchivedbooleanOptionaltrue schließt archivierte (gelöschte) Designs ein. Standard false.
    designIdstring (uuid)OptionalEin einzelnes Briefdesign samt vollständigem Design-JSON. Ohne designId nennt die Liste je Design Name, ID und Hashes, ohne das Design-JSON.
  • letter_design_previewScope: letter_design:write

    Rendert ein gespeichertes oder inline übergebenes Briefdesign (schemaVersion 1 oder 2) mit demselben Composer wie ein echter Versand, mit echten Absenderdaten, erfundenem Empfänger und Beispieltext. Liefert eine Inline-PNG-Seite, Seite 2 nur für continuationHeader, mit pages 0 nur Links. sampleVariant empty zeigt das Briefpapier allein, wie im Dashboard. Das zeigt vorab Kündigung, Rechnung, Mahnung, Angebot, Vertrag und Behördenpost auf diesem Briefpapier. Kostenfrei, der Brief bleibt ein Entwurf.

    FeldTyp
    designIdstring (uuid)Optional
    designunbekanntOptional
    referenceObjektOptional
    sampleSubjectstring, max. 200 ZeichenOptional
    sampleContentstring, max. 4000 ZeichenOptional
    sampleVarianttypical | emptyOptionaltypical zeigt eine volle Beispielseite, empty das Briefpapier allein mit freier Textfläche. sampleContent geht vor.
    pagesintegerOptionalStandard 1, Seite 2 nur mit continuationHeader, 0 nur Links.
    resolutionthumb | fullOptional

    Fehlercodes: DESIGN_NOT_FOUND, DESIGN_RENDER_FAILED, DESIGN_ZONE_VIOLATION

  • letter_design_list_presetsScope: letter_design:write

    Liefert die vom Inhaber freigegebenen native-v2 Briefpapiere als sichere Ausgangspunkte für Kündigung, Rechnung, Mahnung, Angebot, Vertrag und Behördenpost. Sie wächst mit jeder abgenommenen Vorlage. Die normale Liste nennt je Vorlage ID, Name, Beschreibung und Schlagwörter; mit presetId kommen das vollständige Design und genau eine echte Composer-Vorschau samt Inline-PNG.

    FeldTyp
    presetIdstringOptionalOptional: lädt genau eine Vorlage samt gerenderter Vorschau. Ohne presetId bleibt die Liste bildfrei und günstig.
    pagesintegerOptional
    resolutionthumb | fullOptional
  • brand_kit_getScope: profile:read

    Liest die gespeicherten Markenwerte für das nutzerseitige Ergebnis Briefkopf & Marke. Liefert Logo-Referenzen, Farben und Schrift für die weitere Gestaltung mit letter_design_preview und letter_design_save. Technischer Tool-Name: brand_kit_get.

    Keine Eingabefelder außer reasoning.

  • signature_listScope: profile:read

    Listet die im Partnerprofil gespeicherten Unterschriften mit einer kurzlebigen Vorschau-URL (24 Stunden gültig).

    Keine Eingabefelder außer reasoning.

  • letterhead_listScope: profile:read

    Listet die im Partnerprofil gespeicherten Briefköpfe mit einer kurzlebigen Vorschau-URL (24 Stunden gültig).

    Keine Eingabefelder außer reasoning.

  • schedule_listScope: letter:schedule

    Listet die geplanten Sendungen des Partners mit Termin, Status und reservierter Summe.

    FeldTyp
    statusFilterscheduled | sent | cancelled | failedOptionalNur Planungen mit diesem Status.
  • address_search_companyScope: address:read

    Sucht Firmen und Behörden im Verzeichnis und liefert die passende Versandadresse inklusive Behörden-Postfach.

    FeldTyp
    querystringPflicht
    countrystringOptional
  • letter_searchScope: letter:read

    Durchsucht die Briefe des Partners per Freitext über Betreff, Empfängername und Briefinhalt. status ist der Briefstatus; vor dem Auftrag trägt ein Brief in der Freigabe denselben Status wie in order_status: pending_approval, approved_in_grace oder queued_autopilot, dazu approval mit approvalId. letterStatus ist der gespeicherte Briefstatus.

    FeldTyp
    querystringPflicht
    sincestring (date-time)OptionalNur Briefe, die seit diesem Zeitpunkt geändert wurden (ISO 8601).
    limitintegerOptionalStandard 20, maximal 100.
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • archive_exportScope: archive:read

    Plant einen Archiv-Export (GoBD-CSV, DATEV, PDF-Bundle oder Mandanten-Allokation) für einen Zeitraum ein und liefert eine Job-ID zur Statusabfrage.

    FeldTyp
    sincestring (date-time)Pflicht
    untilstring (date-time)Pflicht
    formatgobd_csv | datev_export | pdf_bundle | mandant_allocation_pdf | mandant_allocation_csvPflicht
    targetstringOptional
    mandantennummerFilterstringOptional
    senderProfileFilterstring (uuid)Optional
    notifyEmailstring (email)Optional

    Fehlercodes: NOT_FOUND

  • archive_export_statusScope: archive:read

    Liefert den Status eines Archiv-Export-Jobs und bei Fertigstellung eine 90 Tage gültige Download-URL.

    FeldTyp
    jobIdstring (uuid)Pflicht

    Fehlercodes: NOT_FOUND

  • letter_previewScope: order:send

    Rendert einen Brief, Entwurf oder ein Formular als Bild, so wie ein echter Versand ihn komponiert, und liefert Inline-PNGs, PDF-Link, Seitenzahl, Preis und designRender mit dem tatsächlichen documentMode, den gezeichneten Brief-Elementen und bodyStartMm. Die Vorschau ist kostenfrei, und der Brief bleibt liegen. Der Brief kommt über letterId, über eine freigegebene Vorlage (templateId, templateVersionId, templateMergeValues) oder inline mit content ODER blocks; der Empfänger über recipientAddressId oder die recipient-Felder. Bei letterId ist die eingebettete Karte die Vorschau für den Menschen; PDF-Link und Brieftext stehen zusätzlich im Ergebnis, für reine Textansichten. Ein ungespeichertes design gilt nur für diese eine Vorschau. Eigenständige Formulare (Selbstauskunft, Fragebogen, Zertifikat) rendern mit design: { "schemaVersion": 1, "documentMode": "form" } als Formular: dann entfallen Empfängerblock, Datum und Betreff, und der Inhalt beginnt bei 27 mm. Kompaktes blocks-Beispiel: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Schema-Referenz: frankki://blocks-guide. Beim Nachbau eines Originals zeigen die PNGs Seite für Seite, ob Seitenzahl und wesentliche Geometrie passen; geänderte blocks oder ein geändertes design rendern im nächsten letter_preview-Aufruf neu. Das passende Layout speichert template_save als Entwurf, template_release gibt es frei.

    FeldTyp
    letterIdstring (uuid)OptionalGespeicherter Entwurf für die Vorschau. Alternativ kommt der Brief inline.
    subjectstring, max. 200 ZeichenOptionalBetreff. Ohne letterId erforderlich.
    contentstring, max. 30000 ZeichenOptionalBrieftext als Fließtext. Genau eines von content und blocks.
    blocksArray<unbekannt> (min 1, max 200)OptionalStrukturierter Briefinhalt als typisierte Blöcke, an Stelle von content. Limits: 200 Blöcke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes.
    styleDefsObjektOptionalBenannte Stile für das ganze Dokument (max. 24). Blöcke referenzieren sie über style.
    languagede | enOptional
    designIdstring (uuid)OptionalGespeichertes Briefdesign für diese Vorschau.
    designObjektOptionalUngespeichertes Briefdesign nur für diese Vorschau. Hat Vorrang vor designId und erzeugt keinen Eintrag im Konto. Eigenständige Formulare rendern mit documentMode: "form".
    referenceObjektOptionalWerte für diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie füllen Infoblock und Barcode in der Vorschau.
    senderProfileIdstring (uuid)Optional
    pagesintegerOptionalWie viele Seiten als Bild zurückkommen. Standard 3, Maximum 8. Der PDF-Link enthält alle Seiten.
    resolutionthumb | fullOptionalthumb (96 dpi, Standard, schnell und klein) oder full (150 dpi, zum Prüfen von Details).
    templateIdstring (uuid)Optional
    templateVersionIdstring (uuid)OptionalFreigegebene Vorlagenversion, zusammen mit templateId und templateMergeValues: zeigt genau den Brief, den order_send damit verschickt.
    templateMergeValuesObjektOptional
    recipientAddressIdstring (uuid)OptionalEmpfänger aus dem Adressbuch. Alternativ die recipient-Felder; fehlt beides, steht ein Musterempfänger im Fenster.
    recipientNamestringOptional
    recipientCompanystringOptional
    recipientStreetstringOptional
    recipientHouseNumberstringOptional
    recipientZipstringOptional
    recipientCitystringOptional
    recipientCountrystringOptionalISO-3166-alpha-2, Standard DE.
  • template_previewScope: template:read

    Rendert eine GESPEICHERTE Vorlage mit Beispielwerten und liefert Inline-PNGs, PDF-Link und designRender. designId oder ein ungespeichertes design bestimmen das Briefpapier; eigenständige Formulare rendern mit documentMode: "form". Die Vorschau ist kostenfrei und rein zum Ansehen. Ein blocks-Layout, das erst entsteht, rendert letter_preview; eine fertige Version speichert template_save (technischer Tool-Name template_save).

    FeldTyp
    templateIdstring (uuid)PflichtId der Vorlage aus template_list / template_get.
    versionIdstring (uuid)OptionalExakte Vorlagenversion, die geprüft werden soll. Ohne Angabe gilt die freigegebene Version, danach der neueste Entwurf.
    designIdstring (uuid)OptionalGespeichertes Briefdesign für diese Vorlagenvorschau.
    designVersionIdstring (uuid)OptionalExakte unveränderliche Briefkopf-Version für diese Vorschau.
    designObjektOptionalUngespeichertes Briefdesign nur für diese Vorschau. Formulare rendern mit documentMode: "form".
    pagesintegerOptionalWie viele Seiten als Bild zurückkommen. Standard 1, Maximum 3. 0: nur PDF-Link.

    Fehlercodes: NOT_FOUND

  • document_listScope: letter:read

    Listet die erzeugten Dokumente des Kontos (Rechnung, Zahlungserinnerung, Mahnung, Gutschrift), neueste zuerst, gefiltert nach Art, Mandant, Empfänger oder Bezugsbeleg. Nächster Schritt: document_get liefert die vollständigen Belegdaten, document_create legt mit references einen Folgebeleg dazu an.

    FeldTyp
    documentTyperechnung | zahlungserinnerung | mahnung | gutschriftOptional
    mandantennummerstringOptional
    recipientQuerystringOptionalFreitext über Name, Firma oder Ort des Empfängers.
    referencesDocumentIdstring (uuid)OptionalNur Dokumente, die sich auf dieses FrankKi-Dokument beziehen (z. B. alle Mahnungen zu einer Rechnung).
    referencesNumberstringOptional
    sincestring (date-time)Optional
    limitintegerOptionalStandard 20, maximal 100.
    offsetintegerOptionalVersatz für die Seitennavigation. Standard 0.
  • document_getScope: letter:read

    Liefert ein Dokument mit allen Belegdaten (Positionen, Summen, USt-Sätze, Bezug) sowie letterId und orderId des Briefs, in dem es steckt. Das Feld referencePrefill enthält den fertigen references-Block für einen Folgebeleg: document_create übernimmt ihn unverändert als document.references für Mahnung, Zahlungserinnerung oder Gutschrift. Unter exports liefert FrankKi für versendete Rechnungen und Gutschriften signierte Download-Links: zugferdPdfUrl ist ein PDF/A-3 mit eingebetteter EN-16931-XML (ZUGFeRD), xrechnungXmlUrl die reine XRechnung-XML. Beide sind zum Herunterladen und Archivieren gedacht; die Übermittlung an ein Portal liegt beim Partner. Fehlt ein Export, nennt das Feld den Grund: DOCUMENT_EXPORT_NOT_READY heißt vorläufig, ein späterer Aufruf liefert den Export (Versand oder Freischaltung stehen noch aus), DOCUMENT_EXPORT_NOT_SUPPORTED heißt dauerhaft (der Export gilt für Rechnungen und Gutschriften; für Mahnung und Zahlungserinnerung trägt die Rechnung, auf die sie sich beziehen, den Export). Nächster Schritt: order_status verfolgt den Versand, document_create legt mit references eine Mahnung oder Gutschrift dazu an.

    FeldTyp
    documentIdstring (uuid)Pflicht

Aktion

  • sender_profile_upsertScope: sender_profile:writekein dryRun

    Legt ein Absenderprofil an oder bearbeitet es: Rechtsform, Pflichtangaben, optional Bankverbindung, Haftungsausschluss und Standard-Briefpapier. Ein unvollständiges Profil wird gespeichert und meldet die fehlenden Felder zurück, sodass es sich schrittweise ergänzen lässt. Versenden ist mit vollständigen Pflichtangaben möglich.

    FeldTyp
    idstringOptionalID eines bestehenden Profils zum Bearbeiten, dann genügen die geänderten Felder. null in pflichtangaben entfernt ein Feld. Wechselt die Rechtsform, fallen die Felder der alten Form weg. Weglassen legt ein neues an.
    rechtsformstringOptionalRechtsform des Absenders, zum Beispiel gmbh, ug, gbr, verein, freiberufler. Sie bestimmt die verlangten Pflichtangaben.
    pflichtangabenObjektOptionalPflichtangaben als Objekt, zum Beispiel firmenname, strasse, plz, ort, land, registergericht, ustIdNr. sender_profile_validate nennt die je Rechtsform verlangten Felder.
    bankverbindungObjektOptionalOptionale Bankverbindung mit iban, bic und bankname, unabhängig von der Vollständigkeit. Sie steht in der Fußzeile und unter Rechnungen.
    disclaimerstringOptionalOptionaler Haftungsausschluss oder Fußzeilentext, unabhängig von der Vollständigkeit.
    displayNamestringOptionalOptionaler Anzeigename in Listen.
    isDefaultbooleanOptionaltrue macht dieses Profil zum Standardabsender; jedes andere verliert die Markierung. Das erste angelegte Profil wird automatisch Standard.
    defaultDesignIdstringnullOptionalBriefpapier für Briefe, die selbst keines nennen. Weglassen behält den Wert, null löscht ihn.
  • address_upsertScope: address:writekein dryRun

    Legt eine Adresse im Partner-Adressbuch an oder aktualisiert sie. Validiert die Adresse anhand landesspezifischer Regeln.

    FeldTyp
    addressIdstring (uuid)Optional
    namestringPflicht
    companystringOptional
    streetstringPflicht
    houseNumberstringOptional
    poboxstringOptional
    zipstringOptional
    citystringPflicht
    countrystringOptionalISO-3166-alpha-2, default DE.
    mandantennummerstringOptional
    addressTyperecipient | sender | billingOptional
    isDefaultbooleanOptional

    Fehlercodes: ADDRESS_INVALID

  • letter_create_draftScope: order:sendkein dryRun

    Legt einen Briefentwurf an: erstellt eine Vorschau-PDF im hinterlegten Briefdesign (nur der Brieftext), speichert den Entwurf und liefert Seitenzahl, Vorschau-Link (24 Stunden gültig) und eine unverbindliche Kostenvorschau. Der Entwurf bleibt kostenfrei liegen, bis er versendet wird. Der Brieftext ist entweder content (Fließtext) ODER blocks (strukturiert: Tabellen, Überschriften, Summenzeilen), genau eines von beiden. Kompaktes blocks-Beispiel: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Schema-Referenz inkl. styleDefs und Limits: MCP-Ressource frankki://blocks-guide. Die ersten Seiten kommen als Bild zurück und zeigen Betreff, Anschrift im Adressfenster, Absender, Datum und Umbrüche so, wie sie gedruckt werden. Die eingebettete Karte ist die Vorschau für den Menschen; PDF-Link und Brieftext stehen zusätzlich im Ergebnis, für reine Textansichten. Gemeldete Auffälligkeiten stehen in warnings. Ein neuer Aufruf legt einen korrigierten Entwurf an; ein gedruckter Brief ist endgültig. Für eine Mahnung, Kündigung, Mieterhöhung oder einen anderen Brief mit Frist gibt es das Einschreiben mit Nachweis; seinen Preis liefert shipping_quote. Nächster Schritt mit der zurückgegebenen letterId: letter_preview zeigt den Entwurf als Bild zum Nachbessern, order_send versendet ihn, letter_schedule versendet ihn zu einem späteren Zeitpunkt.

    FeldTyp
    subjectstring, max. 200 ZeichenPflicht
    contentstring, max. 30000 ZeichenOptionalBrieftext als Fließtext. Genau eines von content und blocks.
    blocksArray<unbekannt> (min 1, max 200)OptionalStrukturierter Briefinhalt als typisierte Blöcke, an Stelle von content. Limits: 200 Blöcke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes.
    styleDefsObjektOptionalBenannte Stile für das ganze Dokument (max. 24). Blöcke referenzieren sie über style.
    languagede | enOptionalStandard de.
    senderAddressIdstring (uuid)Optional
    senderProfileIdstring (uuid)OptionalAbsenderprofil, mit dem später versendet wird. Für die Vorschau zählt daraus nur das Standard-Briefdesign.
    recipientAddressIdstring (uuid)OptionalEine gespeicherte Adresse aus dem Adressbuch (address_list) als Empfänger. Gleichwertig: recipientAddressInline oder die Felder recipientName bis recipientCountry wie bei order_send.
    recipientNamestringOptional
    recipientCompanystringOptional
    recipientStreetstringOptional
    recipientHouseNumberstringOptional
    recipientZipstringOptional
    recipientCitystringOptional
    recipientCountrystringOptional
    recipientAddressInlineObjektOptional
    presetNamestringOptional
    includeSignaturebooleanOptionaltrue setzt die hinterlegte Unterschrift unter den Brieftext. Standard aus, wie beim Versand.
    signatureIdstring (uuid)OptionalEine bestimmte gespeicherte Unterschrift an Stelle der zuerst hinterlegten.
    clientLetterIdstringOptionalIdempotenzschlüssel. Ein erneuter Aufruf mit demselben Wert UND derselben Nutzlast liefert denselben Entwurf, statt einen zweiten anzulegen. Ein anderer Brief braucht einen neuen Schlüssel: derselbe Schlüssel mit anderem Inhalt endet mit IDEMPOTENCY_CONFLICT, und es entsteht kein Entwurf.
    designIdstring (uuid)OptionalGespeichertes Briefdesign für diesen Brief. Es wird bereits in der Vorschau-PDF gerendert und am Entwurf gespeichert, sodass ein späterer Versand über die letterId es übernimmt (außer der Versand nennt selbst ein Design). Ohne Angabe gilt das Standard-Design des Absenderprofils, in der Vorschau wie beim Versand.
    referenceObjektOptionalWerte für diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie füllen den Infoblock und den Barcode.
  • attachment_upload_pdfScope: order:sendkein dryRun

    Lädt ein PDF als Anhang zu einem Partner-Brief hoch. Prüft vor dem Speichern die Dateigröße (max. 50 MB) und die zusammengeführte Seitenzahl (max. 30 Seiten inkl. Brief und übriger Anhänge). Gedruckt wird nur A4 hochkant: eine andere Seite (US Letter, A5, quer) setzt FrankKi verkleinert auf A4, und die Antwort nennt sie in pageFormatNote.

    FeldTyp
    letterIdstring (uuid)Pflicht
    pdfUrlstringOptionalÖffentliche URL des PDF (Alternative zu pdfBase64).
    pdfBase64stringOptionalPDF als Base64 (Alternative zu pdfUrl).
    titlestringOptional
    positionintegerOptional
  • attachment_upload_imageScope: order:sendkein dryRun

    Lädt ein Bild (PNG/JPEG) als Anhang zu einem Partner-Brief hoch. Das Bild wird serverseitig auf eine A4-PDF-Seite skaliert (optional gedreht) und wie ein PDF gespeichert. Prüft vor dem Speichern die zusammengeführte Seitenzahl (max. 30 Seiten). Die EXIF-Orientierung wird automatisch in die Pixel eingerechnet, ein Handyfoto steht also von selbst aufrecht. rotation dreht das Bild zusätzlich um die angegebenen Grad weiter; 0 lässt es so, wie es hochgeladen wurde.

    FeldTyp
    letterIdstring (uuid)Pflicht
    imageUrlstringOptionalÖffentliche URL des Bildes (Alternative zu imageBase64).
    imageBase64stringOptionalBild als Base64 (Alternative zu imageUrl).
    rotation0 | 90 | 180 | 270OptionalZusätzliche Drehung in Grad, im Uhrzeigersinn. Die EXIF-Orientierung des Bildes wird bereits automatisch in die Pixel eingerechnet, das Bild steht also von sich aus richtig. Dieser Wert dreht es danach ein zweites Mal. Für ein Handyfoto ist deshalb 0 richtig.
    titlestringOptional
    positionintegerOptional
  • letter_upload_pdfScope: order:sendkein dryRun

    Lädt einen fertigen Brief als PDF hoch, der genau so verschickt wird, wie er ist. Die Prüfung schaut, ob die Empfängeradresse im Adressfeld der Versandart steht. Beim Standardbrief liegt es 60 bis 85,5 mm von oben, beim Einschreiben 68 bis 85,5 mm, jeweils 22 bis 107,5 mm von links. Der übrige Fensterbereich bleibt leer, an jeder Kante bleiben 5 mm frei, und jede Seite ist A4 hochkant. Zurück kommen pdfStorageKey, die Funde mit den Millimetern zum Verschieben und Seite 1 mit eingezeichneten Zonen. sendable sagt, ob order_send diesen pdfStorageKey annimmt. Weichen nur PLZ oder Ort ab, lassen sich entweder die Empfängerfelder oder die PDF korrigieren; jeder andere Fund braucht eine korrigierte PDF und einen neuen Upload. Kostenlos.

    FeldTyp
    pdfBase64stringOptionalDie Brief-PDF als Base64 (Alternative zu pdfUrl).
    pdfUrlstringOptionalÖffentliche URL der Brief-PDF (Alternative zu pdfBase64).
    deliveryTypestandard | einschreiben_einwurf | einschreiben_uebergabe | ch_b_post | ch_a_post | ch_einschreiben | at_eco | at_prio | intl_standard | intl_priority | intl_express | intl_tracked | intl_registeredOptionalVersandart, für die das Adressfeld geprüft wird; dieselbe wie später bei order_send. Standard standard.
    recipientZipstringOptionalOptional: PLZ des Empfängers, wird mit der gedruckten Adresse verglichen.
    recipientCitystringOptionalOptional: Ort des Empfängers, wird mit der gedruckten Adresse verglichen.
  • order_sendScope: order:senddryRun verfügbar

    Versendet einen Brief per Post: prüft die Pflichtangaben des Absenders, die Empfängeradresse, den AVV und die Limits, erstellt die PDF und berechnet den Preis. Der Brief kommt über letterId (ein Entwurf) oder inline: dann ist der Text content (Fließtext) oder blocks (strukturiert: Tabellen, Überschriften, Summenzeilen), genau eines von beiden. Kompaktes blocks-Beispiel: {"blocks":[{"type":"heading","text":"Rechnung"},{"type":"table","columns":[{"key":"text","label":"Artikel","width":"grow"},{"key":"sum","label":"Summe","align":"right","format":"eur"}],"rows":[{"text":"Beratung","sum":32000}]},{"type":"totals","lines":[{"label":"Gesamt","amountCents":32000,"emphasis":true}]}]} Schema-Referenz: frankki://blocks-guide. dryRun: true ist eine kostenfreie Probe: sie liefert Preis, Seite 1 als Bild und die Liste checks (jede Prüfung mit passed, failed oder skipped), und der Brief bleibt unversandt; ein zweiter Aufruf mit denselben Werten und dryRun: false versendet genau diesen Brief. Ein echter Versand wartet auf Freigabe. Autopilot ist eine Dashboard-Einstellung, die die Person selbst steuert: mit ihm geht ein Standardbrief aus eigener freigegebener Vorlage (templateId plus templateVersionId) an einen Empfänger aus dem Adressbuch nach 10 Minuten raus. saveRecipient: true trägt den Empfänger dabei ein, humanSummary nennt die Uhrzeit, order_status und order_cancel nehmen die approvalId. mcp_health meldet unter setup, welcher Freigabeweg gilt. Für eine Mahnung, Kündigung, Mieterhöhung oder einen anderen Brief mit Frist gibt es das Einschreiben mit Nachweis; seinen Preis liefert shipping_quote. Eine fertige eigene PDF geht unverändert raus: letter_upload_pdf prüft und speichert sie, order_send versendet sie dann mit pdfStorageKey und Empfänger.

    FeldTyp
    letterIdstring (uuid)OptionalBestehender Entwurf. Alternativ kommt der Brief inline.
    pdfStorageKeystringOptionalDer Schlüssel aus letter_upload_pdf, wenn eine eigene fertige PDF der Brief ist, an Stelle von Betreff und Text. Dazu gehören die Empfängerfelder, so wie sie auf der PDF stehen, und die deliveryType. Der Versand prüft, ob die Adresse im Adressfeld der Versandart steht, beim Standardbrief 60 bis 85,5 mm von oben, beim Einschreiben 68 bis 85,5 mm. Steht sie woanders, nennt PDF_LAYOUT_INVALID die Millimeter zum Verschieben.
    subjectstring, max. 200 ZeichenOptional
    contentstring, max. 30000 ZeichenOptionalBrieftext als Fließtext. Genau eines von content und blocks.
    blocksArray<unbekannt> (min 1, max 200)OptionalStrukturierter Briefinhalt als typisierte Blöcke, an Stelle von content. Limits: 200 Blöcke, 100 Zeilen/Tabelle, 20 Spalten, 2000 Zeichen/Zelle, 10 Bilder, 262144 Bytes.
    styleDefsObjektOptionalBenannte Stile für das ganze Dokument (max. 24). Blöcke referenzieren sie über style.
    recipientAddressIdstring (uuid)OptionalEine gespeicherte Adresse aus dem Adressbuch (address_list) als Empfänger, an Stelle der Felder recipientName bis recipientCountry.
    recipientNamestringOptional
    recipientCompanystringOptional
    recipientStreetstringOptional
    recipientHouseNumberstringOptional
    recipientZipstringOptional
    recipientCitystringOptional
    recipientCountrystringOptionalISO-3166-alpha-2, Standard DE.
    priceVersionstringOptionalOptional: die priceVersion aus einem vorherigen shipping_quote. Weicht der Preis beim Versand davon ab, wird mit PRICE_CHANGED abgebrochen, bevor etwas berechnet wird.
    quotedUnitPriceCentsintegerOptionalOptional: der Stückpreis in Cent aus einem vorherigen shipping_quote (unitPriceCents). Ist er gesetzt, entscheidet er den PRICE_CHANGED-Abgleich und liefert den alten Preis im Fehler mit.
    deliveryTypestandard | einschreiben_einwurf | einschreiben_uebergabe | ch_b_post | ch_a_post | ch_einschreiben | at_eco | at_prio | intl_standard | intl_priority | intl_express | intl_tracked | intl_registeredOptionalStandard standard.
    expressbooleanOptional
    colorbooleanOptionalOhne Angabe wird die Farbe automatisch erkannt.
    includeSignaturebooleanOptional
    signatureIdstring (uuid)Optional
    letterheadIdstring (uuid)OptionalBestimmter Briefkopf für diesen Versand. Ohne Angabe wird der Standard-Briefkopf verwendet.
    letterheadEnabledbooleanOptionalfalse lässt den Briefkopf für diesen einen Versand weg.
    senderAddressIdstring (uuid)Optional
    senderProfileIdstring (uuid)Optional
    mandantennummerstringOptional
    clientOrderIdstring, max. 200 ZeichenOptionalIdempotenzschlüssel: eine beliebige Zeichenkette (1-200 Zeichen, z. B. 'mahnung-kunde42-2026-07-20'; kein UUID-Format nötig). Ein erneuter Aufruf mit demselben Wert liefert dieselbe Bestellung, statt ein zweites Mal zu versenden. Der Namensraum 'approval:' ist reserviert.
    scheduledAtstring (date-time)Optional
    approvalModeauto | draft | reviewOptionalWie der Versand freigegeben wird. 'draft' und 'review' stellen ihn in die Freigabe-Warteschlange, statt sofort zu versenden. 'auto' wird derzeit genauso behandelt wie 'review': der Brief wartet auf die Freigabe durch einen Menschen. Mit einem Test-Token läuft jeder Modus als Probe. Auch diese beiden reservieren den Betrag beim Einreichen im Wallet, damit ein freigegebener Brief später nicht am Guthaben scheitert. Ohne Deckung kommt INSUFFICIENT_FUNDS zurück und es wird nichts angelegt. Einen Entwurf ohne Wallet-Deckung legt letter_create_draft an.
    maxCostEurosnumberOptionalMaximalbetrag in Euro. Liegt der Preis darüber, wird abgebrochen.
    presetNamestringOptional
    auditTagstringOptional
    templateIdstring (uuid)Optional
    templateVersionIdstring (uuid)OptionalExakte freigegebene Vorlagenversion. Nur gemeinsam mit templateId; der Server rendert sie mit templateMergeValues neu und ignoriert mitgesendeten Betreff/Inhalt.
    templateMergeValuesObjektOptionalMerge-Werte für die exakte Vorlagenversion.
    coverTemplateIdstring (uuid)OptionalAnschreiben für eine eigenständige Formularvorlage.
    coverTemplateVersionIdstring (uuid)OptionalExakte freigegebene Version des Anschreibens.
    designIdstring (uuid)OptionalGespeichertes Briefdesign für diesen Versand. Ohne Angabe gilt in dieser Reihenfolge: das am Entwurf gespeicherte Design (beim Versand über letterId), sonst das Standard-Design des Absenderprofils, sonst keins.
    designObjektOptionalExakter Briefdesign-Snapshot aus template_apply_with_merge_fields.composition.design. Hat Vorrang vor designId und verhindert, dass eine spätere Designänderung die freigegebene Vorlagenkomposition verändert.
    referenceObjektOptionalWerte für diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie füllen den Infoblock und den Barcode.
    dryRunbooleanOptionalProbe ohne Kosten; liefert Seite 1 als Bild und die Liste checks (jede Prüfung mit passed, failed oder skipped).
    saveRecipientbooleanOptionaltrue übernimmt den Empfänger mit diesem Versand ins Adressbuch (für Autopilot).
    includeGeometrybooleanOptionalLiefert zusätzlich die Layoutdaten der Seiten.

    Idempotenzschlüssel: clientOrderId (siehe Konventionen).

    Fehlercodes: SENDER_PFLICHTANGABEN_INCOMPLETE, ADDRESS_INVALID, AVV_REQUIRED, DAILY_CAP_EXCEEDED, MANDANT_CAP_EXCEEDED, COST_OVER_LIMIT, CONTENT_REJECTED, COUNTRY_NOT_SUPPORTED, LEGAL_PROOF_UNAVAILABLE_FOR_COUNTRY, PRICE_UNAVAILABLE, PDF_LETTER_UNSUPPORTED, SANDBOX_DISABLED, IDEMPOTENCY_CONFLICT, DESIGN_NOT_FOUND, DESIGN_RENDER_FAILED, DESIGN_ZONE_VIOLATION

  • approval_submitScope: order:senddryRun verfügbar

    Reicht einen Brief zur menschlichen Freigabe ein: prüft Pflichtangaben, Empfänger, AVV und Limits, erstellt die finale PDF, berechnet den Preis, reserviert die Kosten und legt eine Freigabe in der Warteschlange an. Sie wartet auf die Entscheidung eines Menschen, auch mit Autopilot. Die eingebettete Karte ist Vorschau und Freigabe. PDF-Link und Brieftext stehen zusätzlich im Ergebnis, für reine Textansichten. Mit approval:self_approve zeigt die Karte Freigeben und Ablehnen. In allen anderen Fällen führt sie ins angemeldete Portal. Mit dryRun bleiben Guthaben und Warteschlange unberührt, und die Antwort enthält die Liste checks (jede Prüfung mit passed, failed oder skipped).

    FeldTyp
    letterIdstring (uuid)OptionalBestehender Entwurf. Alternativ kommt der Brief inline.
    subjectstring, max. 200 ZeichenOptional
    contentstring, max. 30000 ZeichenOptional
    recipientAddressIdstring (uuid)OptionalEine gespeicherte Adresse aus dem Adressbuch (address_list) als Empfänger, an Stelle der Felder recipientName bis recipientCountry.
    recipientNamestringOptional
    recipientCompanystringOptional
    recipientStreetstringOptional
    recipientHouseNumberstringOptional
    recipientZipstringOptional
    recipientCitystringOptional
    recipientCountrystringOptionalISO-3166-alpha-2, Standard DE.
    deliveryTypestandard | einschreiben_einwurf | einschreiben_uebergabe | ch_b_post | ch_a_post | ch_einschreiben | at_eco | at_prio | intl_standard | intl_priority | intl_express | intl_tracked | intl_registeredOptionalStandard standard.
    expressbooleanOptional
    colorbooleanOptionalOhne Angabe wird die Farbe automatisch erkannt.
    includeSignaturebooleanOptional
    signatureIdstring (uuid)Optional
    senderAddressIdstring (uuid)Optional
    senderProfileIdstring (uuid)Optional
    mandantennummerstringOptional
    clientOrderIdstringOptionalIdempotenzschlüssel. Ein erneuter Aufruf mit demselben Wert liefert dieselbe Freigabe, statt ein zweites Mal einzureichen. Der Präfix 'approval:' ist reserviert.
    scheduledAtstring (date-time)Optional
    approvalModeauto | draft | reviewOptional
    maxCostEurosnumberOptionalMaximalbetrag in Euro. Liegt der Preis darüber, wird abgebrochen.
    presetNamestringOptional
    auditTagstringOptional
    templateIdstring (uuid)Optional
    reasonstring, max. 500 ZeichenOptionalKurzer Grund für die Freigabe, den die prüfende Person auf der Karte liest.
    requesterContextstring, max. 500 ZeichenOptionalZusatzkontext zur einreichenden Person oder zum Anlass.
    dryRunbooleanOptional

    Idempotenzschlüssel: clientOrderId (siehe Konventionen).

    Fehlercodes: SENDER_PFLICHTANGABEN_INCOMPLETE, ADDRESS_INVALID, AVV_REQUIRED, DAILY_CAP_EXCEEDED, MANDANT_CAP_EXCEEDED, COST_OVER_LIMIT, CONTENT_REJECTED, IDEMPOTENCY_CONFLICT

  • approval_decideScope: approval:decidekein dryRun

    Gibt eine wartende Freigabe frei oder lehnt sie ab. 'approve' setzt voraus, dass diese OAuth-Verbindung die zusätzlich erteilte Berechtigung approval:self_approve trägt. Fehlt diese Berechtigung, öffnet der Mensch den zurückgegebenen approvalUrl und entscheidet im angemeldeten Portal. approval:decide bleibt ebenfalls erforderlich. Bei Freigabe durch den Agenten geht der Brief nach 10 Minuten raus und kann bis dahin mit order_cancel gestoppt werden.

    FeldTyp
    approvalIdstring (uuid)Pflicht
    decisionapprove | rejectPflicht
    commentstring, max. 1000 ZeichenOptional
    clientOrderIdstringOptional

    Idempotenzschlüssel: clientOrderId (siehe Konventionen).

    Fehlercodes: APPROVAL_ALREADY_DECIDED, NOT_FOUND

  • order_cancelScope: order:sendkein dryRun

    Storniert einen Brief und schreibt den Betrag dem Wallet des Kontos gut (geschlossener Kreislauf, Gutschrift ins Wallet statt auf die Karte). Mit orderId wird eine bereits erstellte Bestellung im Stornofenster storniert; ist der Brief bereits im Druck, wird sauber abgelehnt. Mit approvalId wird eine per Chat freigegebene Sendung im 10-Minuten-Stornofenster gestoppt, bevor sie überhaupt versendet wird (der Mensch sagt 'stopp').

    FeldTyp
    orderIdstring (uuid)OptionalDie zu stornierende Bestellung.
    approvalIdstring (uuid)OptionalAn Stelle von orderId: stoppt eine per Chat freigegebene Sendung im 10-Minuten-Stornofenster, bevor sie versendet wird (der Mensch sagt 'stopp').
    reasonstring, max. 500 ZeichenOptionalOptionaler Stornogrund.

    Fehlercodes: NOT_FOUND

  • template_saveScope: template:writekein dryRun

    Speichert eine Vorlage als ENTWURF (Vorlage speichern, Vorlagenversion speichern, Vorlagenentwurf anlegen). documentKind ist letter oder form. Briefkopf und Marke sind eine externe Schicht, die erst bei Vorschau oder Versand aufgelöst wird, und bleiben außerhalb der Vorlage. designId bleibt nur als veralteter Hinweis zur Ableitung der Dokumentart kompatibel; explizites documentKind gewinnt. Ein Formular lässt sich eigenständig speichern. coverTemplateId kann eine Anschreibenversion für ein Paket pinnen. Fehlt templateId, entsteht eine neue Vorlage; mit templateId eine neue Entwurfsversion. Der Entwurf wird mit der Freigabe nutzbar; die Antwort enthält den Prüflink. Der technische Tool-Name ist template_save. Der Vorlageninhalt ist entweder contentTemplate (Fließtext) ODER blocksTemplate (strukturiert: Tabellen, Überschriften, Summenzeilen), genau eines von beiden. Merge-Felder sind typisiert (text, date, number, currency, rows); ein Tabellenblock bindet eine rows-Liste über rowsFrom. Der schnellste Start ist eine Standardvorlage aus template_get, kopiert und angepasst. letter_preview rendert den Stand vor dem Speichern, Seite für Seite neben dem Original; ein Nachbau ist fertig, wenn Seitenzahl und wesentliche Geometrie zum Original passen. Eigenständige Formulare rendern in letter_preview mit einem design im documentMode "form".

    FeldTyp
    templateIdstring (uuid)OptionalBestehende Vorlage: es entsteht eine NEUE Entwurfsversion. Ohne Angabe wird eine neue Vorlage angelegt.
    namestringPflichtName der Vorlage.
    kategoriestringnullOptionalFachliche Kategorie, z.B. kuendigung (der Wert ist ein Schlüssel und bleibt so geschrieben).
    subjectTemplatestringPflichtBetreffvorlage, darf {{platzhalter}} enthalten.
    contentTemplatestringOptionalInhaltsvorlage als Fließtext, darf {{platzhalter}} enthalten. Entweder contentTemplate ODER blocksTemplate.
    blocksTemplateArray<unbekannt> (min 1, max 200)OptionalStrukturierte Inhaltsvorlage (Tabellen, Überschriften, Summenzeilen). Textfelder dürfen {{platzhalter}} enthalten; ein Tabellenblock kann mit rowsFrom: "<schlüssel>" ein Merge-Feld vom Typ rows binden und bekommt dessen Zeilen beim Anwenden. Entweder contentTemplate ODER blocksTemplate.
    styleDefsObjektOptionalBenannte Stile der Blockvorlage. Nur zusammen mit blocksTemplate.
    mergeFieldsArray<Objekt> (max 100)OptionalDie Platzhalter der Vorlage.
    approvalModeRecommendedauto | review | draft | OptionalEmpfohlener Freigabemodus für Briefe aus dieser Vorlage.
    documentKindletter | formOptionalUnveränderliche Dokumentart der Vorlagenversion. letter ist direkt adressierbar, form benötigt ein Anschreiben.
    designIdstring (uuid)OptionalVeralteter Autor-Hinweis zur Ableitung von documentKind. Das Design wird nicht in der Vorlage gespeichert. Explizites documentKind gewinnt.
    clearDesignbooleanOptionalVeralteter kompatibler Autor-Hinweis. Es gibt keine Design-Bindung an neuen Vorlagenversionen.
    coverTemplateIdstring (uuid)OptionalDeckvorlage für ein Formular ohne Empfängerblock. Beim Speichern wird exakt ihre aktuelle freigegebene Version gepinnt.
    clearCoverTemplatebooleanOptionalEntfernt die geerbte Deckvorlagen-Bindung. Ohne coverTemplateId und ohne clearCoverTemplate erbt eine neue Version die bisherige Bindung.

    Fehlercodes: NOT_FOUND, TEMPLATE_SLUG_CONFLICT

  • template_releaseScope: template:writekein dryRun

    Gibt eine Entwurfsversion frei, sodass sie versendet werden kann; letzter Schritt der Gestaltungskette (template_get, anpassen, letter_preview, template_save, template_preview, template_release). template_preview zeigt dem Menschen eine Freigabekarte mit Freigeben-Knopf. template_release macht die Version sofort versandbereit, an dieser Karte vorbei, die die Person sonst selbst bestätigt; die Antwort vermerkt die Freigabe als Freigabe durch den Agenten. Über MCP geht das bei einem Konto mit genau einem aktiven Nutzer. Bei mehreren Nutzern gibt ein Mensch im Dashboard frei (Vier-Augen-Prinzip), und die Antwort enthält den Link dorthin. Danach füllt template_apply_with_merge_fields die Vorlage mit Werten, und letter_create_draft oder order_send verschickt das Ergebnis.

    FeldTyp
    templateIdstring (uuid)Pflicht
    versionIdstring (uuid)PflichtDie freizugebende Entwurfsversion.

    Fehlercodes: NOT_FOUND, TEMPLATE_VERSION_NOT_DRAFT, TEMPLATE_FOUR_EYES_REQUIRED

  • template_archiveScope: template:writekein dryRun

    Archiviert eine Vorlage. Sie verschwindet aus den Listen und aus dem Versand, bleibt aber erhalten. Der Inhalt bleibt vollständig erhalten, und ein erneuter Aufruf ist unschädlich.

    FeldTyp
    templateIdstring (uuid)Pflicht

    Fehlercodes: NOT_FOUND

  • template_draft_discardScope: template:writekein dryRun

    Verwirft eine Entwurfsversion, solange sie noch auf ihre Freigabe wartet. Freigegebene und ersetzte Versionen bleiben unantastbar und vollständig erhalten. Ein erneuter Aufruf ist unschädlich.

    FeldTyp
    templateIdstring (uuid)OptionalOptional. Bindet die Version zusätzlich an diese Vorlage.
    versionIdstring (uuid)PflichtDie zu verwerfende Entwurfsversion.

    Fehlercodes: NOT_FOUND, TEMPLATE_VERSION_IMMUTABLE

  • template_clone_from_libraryScope: template:writekein dryRun

    template_clone_from_library kopiert ein bis fünf FrankKi-Standardvorlagen in einem Aufruf in die eigenen Vorlagen des Kontos, etwa Rechnung, Mahnung, Angebot, Kündigung oder Behördenpost, und zeigt die erste als Bild. Mit release true gibt es sie frei, wenn das Konto genau einen aktiven Nutzer hat. Danach sendet order_send mit templateId und templateVersionId.

    FeldTyp
    itemsArray<Objekt> (min 1, max 5)PflichtIds aus mcp_health oder template_list (curated).
    releasebooleanOptionalGibt frei, wenn das Konto genau einen aktiven Nutzer hat.
    previewFirstbooleanOptional
  • preset_saveScope: preset:writekein dryRun

    Speichert eine benannte Voreinstellung (Konfigurations-Bundle) im Partnerprofil. Der Name ist pro Partner eindeutig. Limits in der Voreinstellung werden unverändert gespeichert und dienen als Notiz. Durchgesetzt werden ausschließlich die im Web gesetzten Konto- und Sub-Wallet-Limits.

    FeldTyp
    namestringPflichtEindeutiger Name der Voreinstellung (pro Partner).
    presetObjektPflichtDas Konfigurations-Bundle (Absender/Unterschrift/Briefkopf, Versand, Kennzeichnung, Freigabe, Planung, Limits, auditTagPrefix).
  • signature_uploadScope: signature:writekein dryRun

    Lädt eine Unterschrift als PNG hoch und speichert sie im Partnerprofil. Die Unterschrift wird beim Versand unterhalb des Brieftexts eingefügt. Nur PNG wird unterstützt.

    FeldTyp
    pngBase64stringPflichtDie Unterschrift als PNG (Base64).
    widthMmnumberOptionalGewünschte Breite in mm (optional).
    displayNamestringOptionalAnzeigename der Unterschrift (optional).
  • letterhead_uploadScope: letterhead:writekein dryRun

    Lädt einen Briefkopf als PNG oder PDF hoch und speichert ihn im Partnerprofil. Quelle ist entweder fileUrl oder fileBase64, genau eine von beiden; fileUrl hält die Datei aus dem Aufruf heraus. PNG wird auf die Seite gedruckt; ein PDF-Briefkopf wird vorerst nur abgelegt, gedruckt wird bisher nur PNG (rendered=false). Beim Nachbau eines vorhandenen Briefs: Logo und Titelblock aus dem Kopf der Seite gehören hierher (dann letter_design_save); der Brieftext bleibt den blocks vorbehalten.

    FeldTyp
    fileBase64stringOptionalDer Briefkopf als PNG oder PDF (Base64), Alternative zu fileUrl.
    fileUrlstringOptionalÖffentliche http(s)-URL des Briefkopfs (PNG oder PDF), Alternative zu fileBase64. fileUrl überträgt die Datei in voller Farbtiefe, ohne sie inline in den Aufruf zu legen; ein farbreduziertes Base64-Bild druckt sichtbar schlechter. Maximal 20 MB.
    widthMmnumberOptionalBreite in mm (optional).
    heightMmnumberOptionalHöhe in mm (optional).
    placementheader | footer | fullOptionalPlatzierung auf der Seite.
    displayNamestringOptionalAnzeigename des Briefkopfs (optional).
  • letter_design_saveScope: letter_design:writekein dryRun

    Speichert ein wiederverwendbares Briefpapier (Briefdesign) mit schemaVersion 1 oder 2 im Partnerprofil und gibt designId sowie den Hash der gespeicherten Quelldaten zurück. Dasselbe Briefpapier trägt danach jede Post: Kündigung, Rechnung, Mahnung, Angebot, Vertrag und Behördenpost. Der technische Tool-Name ist letter_design_save. Das Design wird vor dem Speichern vollständig validiert und gegen die Zustellzonen geprüft.

    FeldTyp
    namestring, max. 120 ZeichenPflichtEindeutiger Name des Briefdesigns.
    designunbekanntPflicht
    designIdstring (uuid)Optional
    brandingOwnershipConfirmedbooleanOptionalBei einer Neuanlage oder geänderten Branding-Asset-Referenz zwingend true. Unveränderte Folgespeicherungen brauchen keine erneute Bestätigung.

    Fehlercodes: DESIGN_ZONE_VIOLATION

  • letter_design_deleteScope: letter_design:writekein dryRun

    Archiviert (löscht) ein gespeichertes Briefpapier (Briefdesign). Neue Sendungen laufen danach über die verbleibenden Briefpapiere, egal ob Kündigung, Rechnung, Mahnung, Angebot, Vertrag oder Behördenpost; bereits versendete Briefe behalten ihr Original zur Nachvollziehbarkeit.

    FeldTyp
    designIdstring (uuid)PflichtDas zu löschende Briefdesign.

    Fehlercodes: NOT_FOUND

  • brand_kit_saveScope: letter_design:writekein dryRun

    Speichert Logo-Referenzen, Farben und Schrift für das nutzerseitige Ergebnis Briefkopf & Marke. brandingOwnershipConfirmed muss true sein und bestätigt die Nutzungsrechte an den angegebenen Marken-Assets. Die Antwort enthält den gespeicherten Stand und den Prüflink. Technischer Tool-Name: brand_kit_save.

    FeldTyp
    brandKitObjektPflicht
    brandingOwnershipConfirmedbooleanPflichtBestätigt die Nutzungsrechte an Logo und eigener Schrift. Muss true sein.
  • brand_import_from_websiteScope: letter_design:writekein dryRun

    Liest eine öffentliche Firmenwebsite aus und schlägt daraus ein Briefkopf-Design vor: Markenfarben, Hausschriftzuordnung, Logo-Kandidaten und Firmendaten aus dem Impressum. Die gefundenen Logos landen als Design-Assets im Konto und sind sofort verwendbar. Das Ergebnis ist ein Vorschlag zur Abstimmung mit der Kundin oder dem Kunden; übernommen wird die Marke erst durch einen anschließenden Aufruf von brand_kit_save mit brandingOwnershipConfirmed. Technischer Tool-Name: brand_import_from_website.

    FeldTyp
    websiteUrlstring, max. 2048 ZeichenPflichtÖffentliche Adresse der Firmenwebsite, zum Beispiel https://beispiel.de.
    maxLogoCandidatesintegerOptionalWie viele Logo-Kandidaten heruntergeladen und gespeichert werden. Standard 3.
  • brand_setup_from_websiteScope: letter_design:writekein dryRun

    Firmenwebsite zu Absender, Marke und Briefpapier in zwei Aufrufen. apply false liest die Website und liefert einen Vorschlag: Logo, Farben, Schrift, Absenderprofil mit Pflichtangaben aus dem Impressum, Absenderadresse und ein passendes Briefpapier, dazu die fehlenden Pflichtangaben, die eine Frage an die Person und Seite 1 dieses Briefpapiers als Bild (letterheadPreview). apply true speichert alles auf einmal mit der proposalId daraus und brandingOwnershipConfirmed true: Marke, Absenderprofil, Absenderadresse, Briefpapier mit Logo als Standard, und zeigt eine Vorschau als Bild. Bestehende Angaben der Person bleiben erhalten, senderOverrides gehen vor. Nächster Schritt: template_clone_from_library. Technischer Tool-Name: brand_setup_from_website.

    FeldTyp
    websiteUrlstring, max. 2048 ZeichenPflichtÖffentliche Firmenwebsite, z.B. https://beispiel.de.
    applybooleanOptionalfalse liefert den Vorschlag, true speichert ihn.
    proposalObjektOptionalDas proposal aus der Antwort mit apply false, gern von der Person korrigiert. Spart den zweiten Website-Abruf.
    proposalIdstringOptionalBei apply true erforderlich: die proposalId aus der Antwort mit apply false, 30 Minuten gültig.
    brandingOwnershipConfirmedbooleanOptionalBei apply true erforderlich: die Person bestätigt, dass sie Logo und Marke verwenden darf.
    designPresetIdstringOptionalBriefpapier-Vorlage aus letter_design_list_presets. Standard ist der Vorschlag.
    senderOverridesObjektOptionalKorrekturen und fehlende Angaben von der Person, sie gehen allem anderen vor.
  • letter_scheduleScope: letter:scheduledryRun verfügbar

    Plant den Versand eines bestehenden Entwurfs für einen späteren Zeitpunkt (fester Termin, relative Verzögerung oder wiederkehrend per cron). Alle Prüfungen und der Preis werden sofort ermittelt und die Kosten reserviert. Eine echte OAuth-Verbindung legt zuerst eine Freigabe an. Die eingebettete Karte ist Vorschau und Freigabe. PDF-Link und Brieftext stehen zusätzlich im Ergebnis, für reine Textansichten. Eine OAuth-Verbindung mit approval:self_approve darf über die Karte entscheiden. Nach der Freigabe entsteht die Planung, der eigentliche Versand läuft zum geplanten Zeitpunkt durch dieselbe Versandpipeline und denselben Freigabeweg wie order_send.

    FeldTyp
    letterIdstring (uuid)PflichtBestehender Entwurf, der geplant versendet wird.
    modeat | in | cronPflichtat = fester Zeitpunkt, in = relative Verzögerung, cron = wiederkehrend.
    sendAtstringOptionalZeitpunkt bei mode='at' (ISO 8601, Berlin-Zeit wenn ohne Offset).
    delaystringOptionalVerzögerung bei mode='in': '2d', '1w', '3h', 'next-business-day', 'next-monday', 'end-of-month'.
    cronExpressionstringOptional5-Felder cron bei mode='cron': 'min std tag monat wochentag'.
    endDatestringOptionalEnddatum für eine cron-Serie (ISO 8601, Berlin-Zeit wenn ohne Offset).
    businessDaysOnlybooleanOptionaltrue versendet nur an Werktagen und verschiebt einen Termin am Wochenende oder Feiertag auf den nächsten Werktag zur selben Uhrzeit. Standard true.
    sendBeforeHournumberOptionalVersand-Cutoff in Berliner Ortszeit, Standard 16. Ein Termin ab dieser Stunde rückt auf den nächsten Werktag (mit businessDaysOnly false: auf den nächsten Tag), jeweils 9:00 Uhr. timing im Ergebnis nennt Wunschtermin, tatsächlichen Termin und Grund.
    deliveryTypestandard | einschreiben_einwurf | einschreiben_uebergabe | ch_b_post | ch_a_post | ch_einschreiben | at_eco | at_prio | intl_standard | intl_priority | intl_express | intl_tracked | intl_registeredOptional
    expressbooleanOptional
    colorbooleanOptional
    includeSignaturebooleanOptional
    signatureIdstring (uuid)Optional
    senderAddressIdstring (uuid)Optional
    senderProfileIdstring (uuid)Optional
    mandantennummerstringOptional
    presetNamestringOptional
    auditTagstringOptional
    templateIdstring (uuid)Optional
    templateVersionIdstring (uuid)OptionalExakte freigegebene Vorlagenversion, zusammen mit templateId. Der Entwurf liefert Empfänger und Anlagen. Betreff und Text rendert der Server bei jedem Versand aus der Vorlage und templateMergeValues. Der Autopilot prüft nur Planungen dieser Art.
    templateMergeValuesObjektOptionalMerge-Werte für die exakte Vorlagenversion.
    coverTemplateIdstring (uuid)OptionalAnschreiben für eine eigenständige Formularvorlage.
    coverTemplateVersionIdstring (uuid)OptionalExakte freigegebene Version des Anschreibens.
    maxCostEurosnumberOptionalMaximalbetrag in Euro. Liegt der Preis darüber, wird abgebrochen.
    dryRunbooleanOptionalPrüft und bepreist die Planung, legt aber nichts an und reserviert nichts. Liefert dryRunWouldHaveCost.

    Fehlercodes: SENDER_PFLICHTANGABEN_INCOMPLETE, ADDRESS_INVALID, AVV_REQUIRED, COST_OVER_LIMIT

  • schedule_cancelScope: letter:scheduledryRun verfügbar

    Bricht eine geplante Sendung ab und gibt die dafür reservierte Summe im Wallet wieder frei. Die scheduleId liefern letter_schedule und schedule_list.

    FeldTyp
    scheduleIdstring (uuid)PflichtDie abzubrechende Planung.
    dryRunbooleanOptionaltrue liefert die Summe, die frei würde, ohne die Planung abzubrechen.

    Fehlercodes: NOT_FOUND

  • order_send_batchScope: order:senddryRun verfügbar

    Reicht mehrere Briefe als einen Stapel ein. Jeder Eintrag wird einzeln geprüft und bepreist. Der Stapel landet als eine Freigabe für alle Empfänger in der Warteschlange. Mit Autopilot geht ein Stapel, dessen Briefe alle die Autopilot-Regeln erfüllen, nach 10 Minuten raus; order_cancel stoppt ihn bis dahin. Unter dem zurückgegebenen approvalUrl prüft der Mensch Empfängerliste, Anzahl und Gesamtkosten im angemeldeten Portal und entscheidet dort. Selbst freigeben kann eine OAuth-Verbindung mit der zusätzlich erteilten Berechtigung approval:self_approve. Bei Ablehnung wird die gesamte Reservierung zurückgebucht. Mit dryRun bleibt es bei einer kostenfreien Probe.

    FeldTyp
    itemsArray<Objekt> (min 1, max 100)PflichtDie Briefe des Stapels. Jeder Eintrag trägt seinen eigenen clientOrderId und genau eine Quelle: eine letterId ODER einen inline Brief.
    presetNamestringOptionalOptionales Preset für den ganzen Stapel; pro Eintrag überschreibbar ist nicht vorgesehen.
    stopOnErrorbooleanOptionalBricht den Stapel beim ersten Fehler ab. Standard false.
    dryRunbooleanOptionalSimuliert den ganzen Stapel: prüft jeden Eintrag, berechnet aber nichts und versendet nichts.

    Fehlercodes: SENDER_PFLICHTANGABEN_INCOMPLETE, ADDRESS_INVALID, AVV_REQUIRED, DAILY_CAP_EXCEEDED, MANDANT_CAP_EXCEEDED, COST_OVER_LIMIT, CONTENT_REJECTED, COUNTRY_NOT_SUPPORTED, LEGAL_PROOF_UNAVAILABLE_FOR_COUNTRY, PRICE_UNAVAILABLE, SANDBOX_DISABLED, IDEMPOTENCY_CONFLICT, DESIGN_NOT_FOUND, DESIGN_RENDER_FAILED, DESIGN_ZONE_VIOLATION

  • order_fix_resubmitScope: order:sendkein dryRun

    Korrigiert die Empfängeradresse eines Briefs im Status awaiting_partner_fix und reicht ihn erneut ein. Das setzt voraus, dass die OAuth-Verbindung approval:self_approve trägt. Andernfalls liefert der Aufruf einen Link, über den der Mensch im angemeldeten Portal entscheidet. Der Preis bleibt unverändert.

    FeldTyp
    orderIdstring (uuid)Pflicht
    recipientunbekanntPflichtDie korrigierte Empfängeradresse als Einzelfelder oder als { addressId } aus dem Partner-Adressbuch.
    clientOrderIdstringOptional

    Idempotenzschlüssel: clientOrderId (siehe Konventionen).

  • document_createScope: order:sendkein dryRun

    Erzeugt aus strukturierten Belegdaten ein fertiges Dokument und legt es als Briefentwurf an: FrankKi rechnet Positionen, Netto, USt-Sätze und Brutto nach, prüft die Pflichtangaben nach § 14 UStG, vergibt auf Wunsch die Belegnummer aus dem Nummernkreis des Kontos und setzt alles im DIN-5008-Layout mit dem Briefdesign des Absenders. Der Entwurf bleibt kostenfrei liegen, bis er versendet wird. Alle Beträge in ganzen Cent. Kompaktes Beispiel: {"document":{"documentType":"rechnung","documentNumber":"RE-2026-014","documentDate":"2026-07-30","leistungszeitraum":{"von":"2026-06-01","bis":"2026-06-30"},"zahlungszielTage":14,"lineItems":[{"description":"Beratung Juni","quantity":4,"unit":"Std","unitPriceCents":12000,"ustRate":19,"lineNetCents":48000}],"totals":{"nettoCents":48000,"ustLines":[{"rate":19,"netCents":48000,"ustCents":9120}],"bruttoCents":57120}},"recipientAddressId":"…"} Nächster Schritt mit der zurückgegebenen letterId: order_send versendet den Brief, approval_submit legt ihn stattdessen einem Menschen zur Freigabe vor, letter_schedule versendet ihn später.

    FeldTyp
    documentObjektPflichtDie Belegdaten. Alle Beträge in ganzen Cent. Der Aufruf liefert die Summen mit, FrankKi rechnet sie nach und lehnt Abweichungen ab.
    sequenceScopeObjektOptional
    subjectstring, max. 200 ZeichenOptionalBetreff des Briefs. Ohne Angabe setzt FrankKi ihn aus Dokumentart und Belegnummer, z. B. 'Rechnung RE-2026-014'.
    languagede | enOptionalStandard de.
    recipientAddressIdstring (uuid)OptionalEmpfänger aus dem Adressbuch (address_list / mandant_search liefern die id). Entweder das oder recipientAddressInline.
    recipientAddressInlineObjektOptional
    mandantennummerstringOptionalMandant, dem das Dokument zugeordnet wird. Nur Zuordnung für Liste und Auswertung.
    senderAddressIdstring (uuid)Optional
    senderProfileIdstring (uuid)OptionalAbsenderprofil, aus dem die Pflichtangaben (USt-IdNr oder Steuernummer) gelesen werden. Ohne Angabe gilt das Standardprofil.
    designIdstring (uuid)Optional
    referenceObjektOptional
    includeSignaturebooleanOptional
    signatureIdstring (uuid)Optional
    clientLetterIdstringOptionalIdempotenzschlüssel für den Briefentwurf.

Vertrauen und Live-Status

Maschinenlesbare Servicefakten und der aktuelle Betriebsstatus der Partner-Schnittstelle stehen jederzeit offen zur Verfügung, ohne Login.