Skip to content
FrankKi
Sign inStart freeiOS Download

Dedicated tool guide

approval_submit and approval_decide

Submit an exact letter for review, then record an authorized human approve or reject decision.

Generated contract: apiVersion v1, schemaRevision 2. Examples use placeholders and do not call production.

approval_submit

actionscope: order:send

Submits a letter for human approval: checks mandatory details, recipient, data processing agreement and limits, creates the final PDF, calculates the price, reserves the cost and adds an approval to the queue. The embedded card is the preview and approval. Once it appears, a short chat confirmation is enough; PDF links and letter text belong in text-only views. With approval:self_approve, the card shows Approve and Reject. In every other case it opens the signed-in portal. With dryRun, the balance and queue remain untouched.

Input contract

FieldTypeRequirementMeaning
letterIdstringoptionalExisting draft. Alternatively provide the letter inline.
subjectstringoptional
contentstringoptional
recipientNamestringoptional
recipientCompanystringoptional
recipientStreetstringoptional
recipientHouseNumberstringoptional
recipientZipstringoptional
recipientCitystringoptional
recipientCountrystringoptionalISO 3166-1 alpha-2, defaults to 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_registeredoptionalDefaults to standard.
expressbooleanoptional
colorbooleanoptionalIf omitted, colour is detected automatically.
includeSignaturebooleanoptional
signatureIdstringoptional
senderAddressIdstringoptional
senderProfileIdstringoptional
mandantennummerstringoptional
clientOrderIdstringoptionalIdempotency key. A repeat call with the same value returns the same approval instead of submitting a second time. The 'approval:' prefix is reserved.
scheduledAtstringoptional
approvalModeauto | draft | reviewoptional
maxCostEurosnumberoptionalMaximum amount in euros. If the price is above it, the call is aborted.
presetNamestringoptional
auditTagstringoptional
templateIdstringoptional
reasonstringoptionalShort reason for the approval, shown to the reviewer on the card.
requesterContextstringoptionalAdditional context about the submitter or the occasion.
dryRunbooleanoptional

approval_decide

actionscope: approval:decide

Approves or rejects a pending approval. 'approve' is allowed only when this OAuth connection was explicitly granted the additional approval:self_approve scope. When that scope is absent, the human opens the returned approvalUrl and decides in the signed-in portal. approval:decide is also required. An agent approval dispatches after 10 minutes and can be stopped with order_cancel until then.

Input contract

FieldTypeRequirementMeaning
approvalIdstringrequired
decisionapprove | rejectrequired
commentstringoptional
clientOrderIdstringoptional

Contract-shaped example

approval_submit({
  "letterId": "REVIEWED_LETTER_ID",
  "recipientName": "Max Mustermann",
  "recipientStreet": "Musterstrasse",
  "recipientHouseNumber": "1",
  "recipientZip": "10115",
  "recipientCity": "Berlin",
  "clientOrderId": "contract-482-approval-v1",
  "maxCostEuros": 10,
  "reason": "Reviewed contract notice"
})

approval_decide({
  "approvalId": "APPROVAL_ID",
  "decision": "approve",
  "user_saw_preview": true,
  "clientOrderId": "contract-482-decision-v1"
})

Only set user_saw_preview:true after the authorized human saw the preview, exact price, and delivery type. A model statement is not human approval.

For conditional fields and nested object limits, the generated complete tool reference remains authoritative. See errors and safe agent onboarding before implementing retries or a live send.

Trust and live status

Machine-readable service facts and the current operational status of the partner interface are publicly available at all times, no login needed.