Preview. Newest description of the ePost API, not yet the official developer portal

Preview

ePost API documentation

Send documents through the ePost communication platform and let it choose the channel. Digital letterbox, eBill, email, SMS or printed and posted, from one integration.

A draft of a new documentation for the ePost API. The API itself is the productive one on api.epost.ch, nothing here is experimental. What is not final is this page: it is the most current description of the API, but not yet the official developer portal. Onboarding and anything that needs a human go through enterprise support.

48Endpoints
6Domains
RESTover HTTPS

Getting started

Five steps from nothing to a delivery you can verify. Where this page and the specification disagree, the specification is authoritative.

1. Get credentials

You need an ePost business account. The API accepts either an API key that you generate in the ePost interface, or a token you obtain with your ePost username and password. See Authentication.

2. Register on the test environment

You can onboard yourself as a sender on the test environment without asking anyone. It takes about ten minutes and it is the only safe way to try a delivery. See Getting access.

3. Ask before you send

Post to /epost/preview/delivery-channels to learn which channels a recipient can be reached on, or /epost/preview/delivery-prices for what it would cost. Neither delivers anything. See Channels and prices.

4. Send your first delivery

This calls the test environment Nothing is charged and nothing is physically posted. Switch EPOST_HOST to https://api.epost.ch only when you are ready to deliver for real.
export EPOST_HOST=https://api-test.klara-epost.tech

curl -X POST "$EPOST_HOST/epost/v2/deliveries" \
  -H "X-API-KEY: $EPOST_API_KEY" \
  -F "metadata=@delivery.json;type=application/json" \
  -F "files=@letter.pdf;type=application/pdf"

The request is multipart/form-data, not JSON. The file part is called files and the metadata part metadata; those two names come from the specification and nothing else works. Both files are ready to download:

delivery.json letter.pdf

Open delivery.json and replace the two placeholders marked REPLACE_ME with a recipient you control. On the test environment, use the account you registered in step 2.

The answer is 201 with the delivery id in the body:

{
  "id": "8f1c0c22-4c6d-4b1a-9a3e-2b4d7f0e51aa"
}

The field is called id here. The status response returns the same value as deliveryId, so read the right name on each side.

Keep that id. It is the only way to ask what happened. See Sending documents.

5. Check what happened

curl -X GET "$EPOST_HOST/epost/v2/deliveries/{delivery-id}/status" \
  -H "X-API-KEY: $EPOST_API_KEY"

Immediately after sending you get CREATED or PROCESSING. A finished delivery looks like this:

{
  "deliveryId": "8f1c0c22-4c6d-4b1a-9a3e-2b4d7f0e51aa",
  "status": "DELIVERED",
  "document": {
    "deliveredDocument": [
      {
        "documentTitle": "Quickstart test letter",
        "detail": [
          {
            "senderUserId": "quickstart-recipient-1",
            "deliveryChannel": "DIGITAL",
            "participantId": "1a234567-1234-12a3-a1bc-12a3b4c5d678"
          }
        ]
      }
    ],
    "failedDocument": []
  }
}

The detail list is only filled when the delivery was sent with displayDeliveredDocument: true. Without it you learn that the delivery went through, but not to which of your recipients.

Treat DELIVERED, DELIVERED_WITH_ERROR and ERROR as final and stop polling. The complete state machine is not published yet, see Known limitations.

Getting access

Test environment

Self-service, no approval needed. The API lives on https://api-test.klara-epost.tech, the web interface on test.klara-epost.tech.

  1. Open test.klara-epost.tech in a desktop browser and register. The email address and password you set here are the credentials you will use in the API token flow. You may use different ones on production.
  2. Register as a business tenant, accept the terms and enter your company details.
  3. Open the widgets and activate eLetter: Versand, free of charge.
Which endpoints you may call depends on what you activated This is the most common reason for an unexpected 403. The eLetter: Versand subscription unlocks Sending, Preview Services, Monitoring and Standard Identity Matching. The Digital Letterbox has to be activated separately and unlocks the letterbox endpoints. Detailed identity matching is restricted and chargeable on top.

Receiving as well as sending

If you also want to receive, activate the digital letterbox on the same tenant or register a second one. Either way you get a company tenant. The step that surprises people: you have to verify the company with a code, and on test no letter is ever posted. The code comes by email from enterprise support, so ask for it in writing.

Send this email to support.enterprise@epostservice.ch and replace the three values with what you entered when you registered:

Subject: Verification code for my ePost TEST tenant

Hello

I am onboarding myself to the ePost TEST environment and need a
verification code for my tenant.

It concerns the following tenant:

  Company name:    Example AG
  Company address: Teststrasse 1, 1001 Fribourg
  User name:       hans.muster@epost.ch

Best regards

You get the code in a reply. With it, sign in at test.klara-epost.tech using your sender account and enter the code to verify the company. Then the letterbox endpoints work on the test environment.

What you can actually test

ChannelOn the test environment
ePost digital letterboxSelf-service. Works as soon as you are onboarded
eBillPossible, but not self-service. Ask enterprise support
SMSPossible, but not self-service. Ask enterprise support
EmailPossible, but only with a special test domain. Ask enterprise support
Physical letterPossible, but only with close support from ePost. Ask enterprise support

Production environment

Not self-service. Onboarding happens together with an ePost administrator. Contact enterprise support to start it.

Accessing the letterbox with a private account

Private accounts are onboarded through the ePost mobile app and sign in with SwissID, which the API does not accept. To use the letterbox endpoints with a private tenant you first have to set a password:

  1. Sign in at app.epost.ch with SwissID.
  2. In the same browser, open the account page at login.epost.ch, go to authentication and set a password.
  3. Authenticate against the API with that email and password.

API basics

API routes

Two hosts, the same endpoints on both. Paths in this reference are relative and must be combined with a host:

EnvironmentHostWhat it does
Testhttps://api-test.klara-epost.tech Self-service, free, nothing is physically posted
Productionhttps://api.epost.ch Deliveries are chargeable
POST /epost/v2/deliveries
→ https://api-test.klara-epost.tech/epost/v2/deliveries

Two prefixes are in use. /epost/v2 holds deliveries, identity matching and the digital letterbox. /epost/preview holds the two preview services. The three authentication endpoints sit on /core/latest, because they are shared with KLARA business software and run on the same platform.

HTTP verbs

VerbUsed forEndpoints
GETRetrieving resources24
POSTCreating resources, and some actions such as /send19
DELETERemoving a resource2
PATCHPartial updates3

48 endpoints in total, which is the same number as in the reference below and in the downloadable specification.

Headers

HeaderValueWhen
X-API-KEYyour API keyAPI key authentication
AuthorizationBearer <JWT> Token authentication
Acceptdepends on the endpoint Mostly application/json. The onboarding endpoint returns text/html or image/png depending on what you ask for
Content-Typedepends on the endpoint Deliveries and previews take multipart/form-data, identity matching takes application/json, see below

Media types

Request bodies

Send the matching Content-Type. Form-encoded endpoints reject a JSON body, which is the most common reason a first token request fails.

Media typeEndpointsWhich ones
application/json9PATCH /epost/signing/processes/{processId}
PATCH /epost/signing/processes/{processId}/participants/{participantId}
POST /epost/onboarding
POST /epost/signing/billing-allowlist
POST /epost/v2/letters/read
POST /epost/v2/matching-runs
POST /epost/v2/matchings
POST /epost/v2/standard-matching-runs
POST /epost/v2/standard-matchings
multipart/form-data6POST /epost/preview/delivery-channels
POST /epost/preview/delivery-prices
POST /epost/signing/processes
POST /epost/v2/archives/upload
POST /epost/v2/deliveries
POST /epost/v2/synchronous-deliveries
application/x-www-form-urlencoded3POST /core/latest/tenants
POST /core/latest/token
POST /core/latest/token/by-microsoft

Responses

Ask for what the endpoint returns. Accept: application/json is correct almost everywhere, but not for the binary and PDF responses below.

Media typeEndpointsWhich ones
application/json48every endpoint that has one
application/octet-stream2GET /epost/v2/iletters/{iletter-id}/response-files/{response-file-id}/content
GET /epost/v2/letters/{letter-id}/thumbnail
application/octet-stream, application/json1GET /epost/v2/letters/{letter-id}/content
application/pdf1GET /epost/signing/processes/{processId}/document
image/png, application/json1POST /epost/onboarding
text/html;charset=UTF-8, application/json1POST /epost/onboarding

Authentication

The API accepts two mechanisms, and every endpoint that requires authentication accepts either.

MechanismHowBest for
apiKeyAuthHeader X-API-KEY Server-to-server integrations. Generate the key in the ePost interface
bearerAuthHeader Authorization: Bearer <JWT> Flows that act for a signed-in user

SwissID is not supported for API authentication.

Token flow

A user can belong to several tenants. Resolve the tenant first, then request a token. Both endpoints take a form body, not JSON.

curl -X POST "https://api.epost.ch/core/latest/tenants" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "username=$EPOST_USER" \
  --data-urlencode "password=$EPOST_PASSWORD"

curl -X POST "https://api.epost.ch/core/latest/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=password" \
  --data-urlencode "username=$EPOST_USER" \
  --data-urlencode "password=$EPOST_PASSWORD" \
  --data-urlencode "tenant_id=$TENANT_ID" \
  --data-urlencode "company_id=$COMPANY_ID"

Refreshing works the same way with grant_type=refresh_token and the refresh_token you received.

The specification marks no form field as required The table above is taken from the endpoint descriptions, not from the schema. Expect 400 if a field is missing, and treat this as the working contract until the specification is corrected.

Endpoints that need no authentication

3 endpoints require no authentication, because they are how you obtain a token in the first place. Everything else in this reference accepts either an API key or a bearer token, and no endpoint accepts only one of the two.

Sending documents

A delivery carries one or more documents to one or more recipients. The platform decides how to reach each one, or you decide for it.

Asynchronous or synchronous

EndpointReturnsUse it when
POST /epost/v2/deliveries201 and a delivery id Normal case. Accepts the delivery and processes it in the background. Poll the status endpoint afterwards
POST /epost/v2/synchronous-deliveries200 with the result You need the outcome in the same request. Limited in volume, see below

Limits that the specification states

Checking what happened

GET /epost/v2/deliveries/{delivery-id}/status

Keep the delivery id. It is the only way back to a delivery you created.

What the channel logic actually does

With deliveryChannelPreferences: ["AUTO"] the platform picks the channel from the credentials you supply. Four patterns, taken from the published examples:

You supplyWhat happens
Postal addressDelivered into the ePost app if the recipient is there, otherwise printed and posted
Email address, document type invoice ePost app first, then eBill, then plain email as the last resort. eBill only applies to invoices
Mobile number, short messagePush notification and message in ePost if the recipient is there, otherwise an ordinary SMS
Several recipients at onceEach one is routed on its own. One may get a printed letter while the others get email

Set deliveryChannelPreferences: ["DIGITAL"] when you want digital delivery only and no physical fallback.

Fields worth knowing

Monitoring across deliveries

GET /epost/deliveries/monitoring returns monitoring data for deliveries regardless of the channel they went out on. Use it for reporting rather than for checking a single item.

Channels in detail

One delivery call reaches six destinations. Each has its own requirements, and ignoring them is the usual reason a delivery is accepted and then fails.

PDF/A, not just PDF Documents have to be PDF/A, and PDF/A-3 for eBill. A plain PDF is accepted by the upload and then cannot be processed downstream.

ePost app and ePost online

The digital letterbox of a recipient who is on ePost. Covered under identity matching and digital letterbox.

eBill

An invoice that lands in the recipient's e-banking through their financial institution. Format: invoice as PDF/A-3, prepared according to the eBill Six specification.

eBill has its own mandatory metadata on top of the normal delivery fields.

FieldRequiredNote
email or companyUid or billRecipientId one of them email for consumers, companyUid for businesses, billRecipientId for either
firstName and lastName, or companyName, or universalNameone of them
ebillAdditionalInfo.paymentAmountyes
ebillAdditionalInfo.qrReferenceyes
ebillAdditionalInfo.dueDateno Left out, ePost sets 30 days
documentTypesyes Must be invoice. Any other value and the eBill channel is not considered

Reminders, credit notes and notifications are possible but not enabled by default. Ask enterprise support.

SMS

A short message is not a PDF. Set mediaType to application/vnd.ch.klara.epost.v1+simple_short_message and put the text in documentMessage; the document carries no file. If the recipient is on ePost, the message arrives in the app with a push notification, otherwise as an ordinary SMS.

One part carries 160 characters. Above that the message is split, and each part then carries 157 characters because the rest is needed for the join.

LengthParts
160 characters1
161 characters2
320 characters3

Parts are billed individually, so a message of 161 characters costs twice a message of 160.

Email

Plain email through the platform. Two sender domains are available today, noreply@klara.ch and noreply@epost.ch. You cannot send from your own domain. The service is being reworked, so check with enterprise support before you build on it.

Physical letter

Printed and posted through a print partner. Three rules decide whether this works.

The address in the PDF must equal the address in the metadata A deviation leads to delivery problems or to wrong franking. The print partner reads the PDF, the platform bills the metadata.

A4 portrait only. Every page of the document. A page in another format or in landscape orientation cannot be processed for physical delivery.

The address has to sit in the envelope window. Either you move the address block in your templates, or you add a cover sheet, which is the cheaper route if you have many templates.

The physical channel is steered through physicalAdditionalInfo on the document. All fields are in the reference; these are the ones that change the result or the price.

FieldValuesWhat it does
windowLocationLEFT, RIGHT Which envelope window your template is laid out for. See the two address positions below
postageA_POST, B_POST, B_POST_LARGEVOLUME, A_PLUS, REGISTERED Service level. Decides speed and price
envelopeSizeC4, C5, BOX, AUTOAUTO leaves the choice to the print partner
duplexboolean, default false Print on both sides
shippingCountryISO country code, default CH Destination country
qrInvoicePageNumberinteger Which page carries the QR invoice slip

Use the price preview to see what a combination costs before you send it.

Two window positions are in use and the address field sits in a different place for each. You declare which one your template uses with physicalAdditionalInfo.windowLocation. Both are shown below, because mirroring one in your head is a good way to print an unusable batch.

Envelope with the window on the left
Address field Recipient Company Ltd Department Sample Street 12 8000 Zurich 20 52 64 30 C5 fold line 148.5 mm, no fold for C4 Measuring point: top left corner of the page A4 portrait, 210 x 297 mm. C5 or C4 envelope with window. All values in millimetres
Address field 64 x 30 mm, 20 mm from the left edge and 52 mm from the top edge of the sheet. Values from the Swiss Post address position specification for A4 with a C5 or C4 window envelope.
Envelope with the window on the right
Address field Recipient Company Ltd Department Sample Street 12 8000 Zurich 117 52 64 30 C5 fold line 148.5 mm, no fold for C4 Measuring point: top left corner of the page A4 portrait, 210 x 297 mm. C5 or C4 envelope with window. All values in millimetres
Same field, same distance from the top, 117 mm from the left edge. Everything else is identical, including the C5 fold line at 148.5 mm, which does not apply to C4.

The specification dimensions the address field and nothing else. The franking line and the barcode that a print partner adds are not part of it; agree those with enterprise support if you print yourself.

Onboarding for the physical channel needs a test round together with ePost. Get in touch through enterprise support.

Post office box addresses

A PO box is addressed through its own fields, not through the street.

FieldRequiredNote
firstName and lastName, or companyName, or universalNameone of them
postOfficeBoxNumberyes If you do not know the number, put the words for «PO box» in the local language
postOfficeBoxZipyes
postOfficeBoxTownNameyes Including the delivery office number where there is one, for example Vevey 1
street, streetNumber, cityno The domicile address, when you know it as well
Three worked examples
AddressFields
Peter Muster
P.O. Box 123
6340 Baar
firstName: Peter
lastName: Muster
postOfficeBoxNumber: P.O. Box 123
postOfficeBoxZip: 6340
postOfficeBoxTownName: Baar
Peter Muster
Neuhofstrasse 3a
P.O. Box
6340 Baar
universalName: Peter Muster
postOfficeBoxNumber: P.O. Box
postOfficeBoxZip: 6340
postOfficeBoxTownName: Baar
street: Neuhofstrasse
streetNumber: 3 a
Peter Muster
Muehlegasse 15, Bolligen
P.O. Box
3000 Berne 8
firstName: Peter
lastName: Muster
postOfficeBoxNumber: P.O. Box
postOfficeBoxZip: 3000
postOfficeBoxTownName: Berne 8
street: Muehlegasse
streetNumber: 15
city: Bolligen

c/o addresses

c/o addresses are supported in the physical channel only. The complete recipient information, including the c/o line, must appear identically in the PDF and in the delivery metadata.

Never leave the c/o line out of the metadata Without it, the platform may match the postal address against a digital letterbox and deliver the document digitally, to the resident rather than to your recipient. The address in the PDF would also differ from the address in the metadata, which is not allowed.

Put the complete recipient name in universalName. Only where that is technically impossible, append the c/o information to lastName.

Address in the PDFPreferredAlternative
Anna Beispiel
c/o Max Muster
Musterstrasse 8
9999 Beispielstadt
universalName: Anna Beispiel, c/o Max Muster
street: Musterstrasse
streetNumber: 8
zipCode: 9999
city: Beispielstadt
firstName: Anna
lastName: Beispiel, c/o Max Muster
street: Musterstrasse
streetNumber: 8
zipCode: 9999
city: Beispielstadt

iLetter

An iLetter is an interactive letter. You design it once as a Template in Studio and send it to many recipients through the normal delivery endpoints. The recipient reads it in the ePost app, fills it in and answers. While the letter is in use, the platform calls two endpoints of yours: one to fetch data for the letter, one to hand over the answer.

iLetter replaces Smart Letter The media type for Smart Letter is no longer listed in the specification. Use iLetter for interactive letters.

Sending an iLetter

  1. Copy the Template ID in Studio. Supply it on the document as digitalAdditionalInfo.iLetter.templateId. Every iLetter document needs one.
  2. Mark the document as an iLetter. Set mediaType to application/vnd.ch.klara.epost.v1+iletter. Such a document carries no file binary, the content comes from the Template. The iLetter object is considered only on a document with this media type. On any other document it has no effect, and the delivery is neither rejected nor altered.
  3. Group deliveries if you want to. Deliveries with the same iLetter.batchId add their recipients to one iLetter record in Studio. Without it, every delivery creates its own record. A batchId is at most 128 characters.
  4. Supply the values the Template needs, see below.
  5. Send with POST /epost/v2/deliveries or POST /epost/v2/synchronous-deliveries, as for any other document.

Two optional fields shape how answers are collected: confidentialResponses keeps answers apart from who gave them, and responseDeadline tells recipients by when to answer.

URL parameters and placeholders

A Template can declare two kinds of values. You find them in Studio in the Data view of the Template.

KindFieldWhat it does
URL parametersiLetter.parameters Appended to the calls the letter makes to your data source, so your endpoint returns only the data for that recipient's case
PlaceholdersiLetter.placeholders Substituted into the text the recipient reads

Both are lists of { "key": "…", "value": "…" } entries and can be given at two levels. Under digitalAdditionalInfo.iLetter they are the default for every recipient of the document. Under recipients[].iLetter they override that default for one recipient. The rule applies per key: the recipient's value if supplied, otherwise the document's. A blank value does not fall back to the other level; leave the key out to inherit.

URL parametersPlaceholders
Entries per levelat most 20 entriesat most 100 entries
Key lengthat most 64 charactersat most 64 characters
Value lengthat most 128 charactersat most 2000 characters

Keys start with a letter or an underscore, followed by letters, digits, underscores or hyphens. A placeholder key the letter does not define is ignored. An optional placeholder left without an effective value renders the fallback text from the Template, or an empty string when the Template defines none.

When something is missing or wrong

SituationOutcome
A recipient has no value for a required URL parameter The request is accepted, but the whole document ends in status ERROR with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING, naming the key. No recipient of that document is delivered
A recipient has no value for a required placeholder The request is accepted. That one recipient fails with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING, the others are delivered and the document ends in DELIVERED_WITH_ERROR
A URL parameter key the Template does not declare Rejected with ILETTER_PARAMETER_KEY_UNKNOWN
Too many placeholders or a value that is too long Rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED, naming the first offending key

Example: one iLetter, three recipients

The metadata part of the multipart request. The Template declares the URL parameters customerNumber (required) and advisorName, and the placeholders claimNumber (required) and greeting. Recipient 2 overrides advisorName, the others inherit it. Recipient 3 has no claimNumber: the request is accepted, recipient 3 fails, recipients 1 and 2 are delivered.

{
  "costCenter": "Claims 2026",
  "fileMetadata": [
    {
      "mediaType": "application/vnd.ch.klara.epost.v1+iletter",
      "senderName": "Example Insurance AG",
      "senderCaseId": "CASE-2026-0815",
      "senderEndToEndId": "e2e-7f3a1c",
      "documentTitle": "Your claim - please confirm",
      "documentDescription": "Confirm the details of your claim",
      "documentTypes": ["message"],
      "deliveryChannelPreferences": ["DIGITAL"],
      "digitalAdditionalInfo": {
        "iLetter": {
          "templateId": "6ac910d20d2b211929b4280d",
          "batchId": "claims-2026-10",
          "parameters":   [ { "key": "advisorName", "value": "Anna Keller" } ],
          "placeholders": [ { "key": "greeting", "value": "Grüezi" } ]
        },
        "documentInfoByLanguage": {
          "DE": {
            "title": "Ihr Schadenfall - bitte bestätigen",
            "description": "Bestätigen Sie die Angaben zu Ihrem Schadenfall"
          }
        }
      },
      "recipients": [
        {
          "senderUserId": "K-88421",
          "unhashedCredentials": { "email": "a.muster@example.ch" },
          "iLetter": {
            "parameters":   [ { "key": "customerNumber", "value": "K-88421" } ],
            "placeholders": [ { "key": "claimNumber", "value": "CLM-2026-000471" } ]
          }
        },
        {
          "senderUserId": "K-88422",
          "unhashedCredentials": { "email": "b.muster@example.ch" },
          "iLetter": {
            "parameters": [
              { "key": "customerNumber", "value": "K-88422" },
              { "key": "advisorName", "value": "Marc Bieri" }
            ],
            "placeholders": [ { "key": "claimNumber", "value": "CLM-2026-000472" } ]
          }
        },
        {
          "senderUserId": "K-88423",
          "unhashedCredentials": { "email": "c.muster@example.ch" },
          "iLetter": {
            "parameters": [ { "key": "customerNumber", "value": "K-88423" } ]
          }
        }
      ]
    }
  ]
}

documentTitle and documentDescription become the title and description of the iLetter record the platform creates from the Template. Each one you omit keeps the Template's own value. A delivery that joins an existing record through batchId leaves that record's title and description unchanged: the first delivery of a batch sets them.

documentInfoByLanguage works for any digital document, not only iLetters: a recipient whose letterbox language has an entry sees that title and description instead of documentTitle and documentDescription.

Checking the result

The two calls the platform makes to you

You configure both endpoints on the Template in Studio. They are not part of the OpenAPI specification, so this section is the reference for them.

CallMethodWhen
Data sourceGET to your data-source URL When a recipient opens the letter and it needs your data
OutputPOST to your output URL When a recipient submits an answer

Headers on both calls

HeaderValue
X-iLetter-Sender-Case-IdsenderCaseId from the document
X-iLetter-Sender-End-To-End-IdsenderEndToEndId from the document
X-iLetter-Sender-User-IdsenderUserId from the recipient
X-iLetter-Participant-IdIdentifies the recipient on the platform

Header values are percent-encoded. A value that was blank on the delivery produces no header. Authentication is what you configured for the endpoint: Authorization: Bearer …, an X-API-Key header or an apikey= query parameter.

Your data-source endpoint

Every data-source call carries the letter's URL parameters, so return only what they ask for: the recipient's own case, not the whole table.

Plan for the traffic. A data source is called when a recipient's letter needs its data: on opening, again whenever an input a parameter is bound to changes, and in sequence for chained data sources. A send to 5000 recipients therefore means at least 5000 calls per data source, spread over the time recipients open and fill in their letters.

A parameter value need not come from your delivery In Studio a URL parameter can also take its value from what the recipient types or selects in the letter, or from what an earlier data source of the same letter returned. Your endpoint can therefore receive query values that never passed through your integration. Validate them.

Limits of the call:

While a call fails, the part of the letter that needs its data is blocked for that recipient. After a timeout, a 5xx or a 429 the recipient can retry; after a 401, 403, 404, 405, 400 or 422 the recipient is told to contact you. Your error status therefore decides what the recipient sees.

GET /claims/options?customerNumber=K-88422 HTTP/1.1
Host: api.example-insurance.ch
X-iLetter-Sender-Case-Id: CASE-2026-0815
X-iLetter-Sender-End-To-End-Id: e2e-7f3a1c
X-iLetter-Sender-User-Id: K-88422
X-iLetter-Participant-Id: 1a234567-1234-12a3-a1bc-12a3b4c5d678
Authorization: Bearer <the token configured on the data source>

The output call

The output call is asynchronous. The recipient's answer is accepted whether or not your endpoint responds. Every attempt carries the same Idempotency-Key, a UUID assigned per endpoint delivery, and its attempt number in X-iLetter-Attempt, counted from 1. The body is identical on every attempt, so de-duplicate on Idempotency-Key. If you configure an HMAC signature, it is sent in a header of your choice (default X-Signature) and is computed over the body, so values inside the body are covered and header values are not.

Retries run for 48 hours, not for a few minutes Three quick attempts first, then on a widening schedule of 1, 2, 4, 8, 16, 32 and 60 minutes and hourly after that, each interval jittered, until 48 hours after the first attempt. Only then is the delivery marked failed. Keep your de-duplication window wide enough to cover two days, or you will process the same answer twice.

An answer your endpoint did give is not retried: a 4xx other than 408 or 429, an unresolved 3xx, or any outcome after a redirect was followed ends the delivery at once.

An endpoint of your own, added in Studio as a Custom Webhook, always receives the format structured-v2; there is no alternative for it. The formats without a payloadFormat belong to the preset integrations, where the platform renders the body in the shape of the respective provider.

With structured-v2 the platform builds the body:

Return data that comes from your data source is what the recipient's session reported. The platform does not verify it, so validate it again in your system.

POST /claims/answers HTTP/1.1
Host: api.example-insurance.ch
Content-Type: application/json
X-iLetter-Attempt: 1
Idempotency-Key: cd6c92ea-b379-4f02-9250-05bd11b8d778
X-iLetter-Sender-Case-Id: CASE-2026-0815
X-iLetter-Sender-End-To-End-Id: e2e-7f3a1c
X-iLetter-Sender-User-Id: K-88422
X-iLetter-Participant-Id: 1a234567-1234-12a3-a1bc-12a3b4c5d678
X-Signature: <HMAC over the body>

{
  "recipient": { "customerNumber": "K-88422" },
  "answers": {
    "confirmClaim": { "value": "yes", "label": "Yes, the details are correct" }
  },
  "meta": {
    "letterId": "9f1e2d3c-4b5a-4678-9abc-def012345678",
    "letterName": "Claim confirmation",
    "webhookCallId": "8319ca98-31fa-4f54-bdd9-bf9ac3e3130e",
    "submittedAt": "2026-10-08T09:12:33Z",
    "senderCaseId": "CASE-2026-0815",
    "senderEndToEndId": "e2e-7f3a1c",
    "senderUserId": "K-88422",
    "participantId": "1a234567-1234-12a3-a1bc-12a3b4c5d678"
  },
  "questions": { "confirmClaim": "Are the claim details correct?" }
}

Previewing channel and price

Two services answer the question «what would happen if I sent this» without sending anything. Both are two-step: you post the request, then poll for the result.

QuestionPost toThen poll
Which channels can I reach this recipient on? POST /epost/preview/delivery-channels GET /epost/preview/delivery-channels/{preview-id}/status
What would this delivery cost? POST /epost/preview/delivery-prices GET /epost/preview/delivery-prices/{preview-id}/status

Both take multipart/form-data and both carry the same size limits as a real delivery: 2 GB per request, 200 MB per document.

Both need a document, as a real delivery does. If all you want to know is whether a recipient exists in ePost and can be reached digitally, identity matching answers that without a document and in a single call.

Why this matters more than it looks Delivery is charged per item and the price depends on the channel. Asking first turns a cost surprise into a decision you make in code.

Identity matching

Identity matching answers whether a recipient of yours exists in ePost, so you know before sending whether a digital channel is available.

The detailed tier is chargeable and needs approval POST /epost/v2/matchings and POST /epost/v2/matching-runs return detailed recipient feedback. The specification states that access is restricted and available against a fee. Clarify this with enterprise support before you design around them. The standard tier needs no approval.

Two tiers, and the difference matters commercially

TierEndpointsReturnsAccess
Standard POST /epost/v2/standard-matchings
POST /epost/v2/standard-matching-runs
The user's basic information Included
Detailed POST /epost/v2/matchings
POST /epost/v2/matching-runs
Detailed information on whether a credential matched Restricted and chargeable. The specification says access is restricted and available against a fee, and asks you to contact an administrator

Single call or run

The -matchings endpoints answer in the same request. The -matching-runs endpoints return 202 and are polled through /processing/{matching-run-id} and then read with /{matching-run-id}. Use runs for larger sets.

What to send

One limit in the specification is incomplete The description reads «The limit size of the metadata is 5» without a unit. It is not the number of recipients: the schema allows up to 50,000 per request. What is limited in practice is the size of the request, and a request that is too large is rejected. Split large sets into smaller requests, or use the matching runs.

Before delivery or on delivery

There are two ways to combine matching with sending, and the choice matters at volume.

Matching before deliveryMatching on delivery
HowYou match first, keep the participant ids, then deliver against them You pass the credentials with the delivery and the platform matches and routes in one call
Use it forHigh volume. Explicitly recommended Small numbers, and when you want the fallback to happen automatically
You get backParticipant ids you can storeA delivery result

Matching before delivery

Sender ePost Matching lookup, optional Request credentials Hashed credentials Lookup on your side Identity matching Send credentials at least one primary Matching at ePost Matches incl. participant id
Matching before delivery. You get participant ids back and use them for the delivery.

Matching on delivery

Sender ePost Recipient Print partner Document and credentials, one call Identity matching match Delivered digitally no match, physical delivery allowed Handed over for printing Posted no match, physical delivery not allowed Error returned to you
Matching on delivery. One call, and the channel is decided inside it.

Which credentials identify a recipient

Every letterbox carries a participant id, a long unique key such as 1a234567-1234-12a3-a1bc-12a3b4c5d678. It is not published anywhere. You obtain it through matching and then use it for delivery.

A credential is either primary or not. Only primary credentials can produce a match, and at least one primary credential must be present. Everything else narrows the result.

Private recipients

CredentialPrimaryHow it gets verified
Postal addressyesCode by physical letter
Email addressyesCode by email
Mobile phone numberyesCode by SMS
PO boxyesCode by physical letter
Participant IDyesThe unique id of a letterbox. Can be used directly for delivery
Legacy IDyesOld key from E-Post Office
First name, last name, date of birthnoWould need identity document verification, which is not available
Social security numberno

Company recipients

CredentialPrimaryNote
Postal addressyesCode by physical letter
PO boxyesCode by physical letter
Participant IDyesCan be used directly for delivery
UIDnoTwo companies carrying the same UID in their profile cannot be told apart, and a company that has not entered its UID there cannot be matched on it at all. Cannot produce a match on its own. Supply a postal address, PO box or participant id as well
Only verified credentials count If a recipient entered a new email address but has not confirmed it, that address is not used for matching. This is why an address you know to be correct can still fail to match.
Matching lookup is not the default path The optional lookup step in the diagram above is open to selected partners only, it is not recommended, and it lowers the match rate noticeably. Use plain matching unless you have agreed otherwise with enterprise support.

How to get the best match rate

Level of trust

Every recipient carries a level that says how well they are identified. You can require a minimum through minimumLevelOfTrust.

LevelPrivate recipientsCompany recipients
BRONZEEmail and mobile number verified. Every private recipient starts herenot applicable
SILVERPostal address verified by letter Postal address verified by letter. Every company starts here
GOLDNot implemented. Identity document plus live photo. Ask enterprise support if you need it
A higher requirement means fewer matches Recipients are encouraged to raise their level but never forced. Requiring SILVER excludes everyone who has not verified a postal address, even though they exist in ePost and could be reached.

Hashing the credentials

You may send credentials hashed instead of in clear text. It is not recommended, because match quality drops, particularly for postal addresses. If your data protection rules require it, the rules are exact.

Two tenant types, and what they may do

ePost distinguishes private and company tenants. It affects what you can expect.

Digital letterbox

Thirteen endpoints read and manage the letters of the authenticated user: list, search, read status, content, thumbnail, accept, reject, archive, delete and restore.

These act on the letterbox of the user behind the credentials, not on a company mailbox. They are the receiving side of ePost, where the rest of this documentation is about sending.

A private account needs a password first Private recipients are onboarded through the mobile app only, companies through the web app at app.epost.ch. Private accounts sign in with SwissID, which the API does not accept. Set a password once, then authenticate with email and password. Steps under Getting access.

See the reference for the full list. Note that most of these endpoints carry only a one-line summary in the specification today.

When a letterbox will not accept your delivery

Recipients control their own letterbox, and three of those controls cause deliveries to fail in ways that look like a technical error but are not.

The recipient hasWhat happens to your delivery
Deactivated the letterbox entirelyNo digital delivery
Blocked you as a senderNo digital delivery from you, while other senders still get through
Opted out of a document typeNo digital delivery for that type. The platform reads the type from your documentTypes field
Letterboxes go dormant after 200 days If a recipient receives a new eLetter and does not open their letterbox for 200 days, ePost deactivates it. Recipients are warned beforehand by email, push notification and SMS. So a participant id that matched last year may no longer be deliverable today. Match again rather than caching participant ids indefinitely.

This is also why matching before delivery pays off at volume: it tells you who is actually reachable before you commit to a run.

eArchive

The ePost archive is the storage behind a tenant's letters. Its endpoints list the folders of the storage, list the letters in the root storage or in one folder, and upload a document together with its metadata into the archive of the authenticated tenant. They act on the archive of the tenant behind the credentials, like the rest of this chapter.

eArchive is new to this documentation and the specification carries little prose for it: the parameters and schemas are complete, the descriptions are thin. See the reference.

Getting recipients onto ePost

POST /epost/onboarding generates a link or a QR code. When a recipient opens or scans it, the actions you defined in the request body are carried out. Useful for getting a customer into ePost from your own onboarding flow.

The Accept header decides the format: text/html returns the URL, image/png returns the QR code image.

The verification score accepts 0 or 50, and only one credential in the request body may carry one.

Limits and rate limiting

The API enforces a rate limit. When you exceed it, the response is 429 API rate limit exceeded. It is declared on 39 of the 48 endpoints.

The limit is not published yet The specification declares the 429 response but names no threshold, no time window, no counting scope and no Retry-After or rate limit headers. Until those are confirmed, retry with exponential backoff and do not assume a number.

How to build for it

Do not retry a delivery automatically Backing off and retrying is right for reads. POST /epost/v2/deliveries is chargeable, and the API defines no idempotency key, no request id and no deduplication rule. A retry after an ambiguous response can produce a second paid delivery. Until that contract is published, treat a timeout as possibly successful. Before sending it again, list the most recent records of GET /epost/deliveries/monitoring, newest first, and check whether your senderUserId is already there.

Size limits

WhatLimitApplies to
Delivery2 GBDeliveries and both preview services
Single document200 MBBinary and metadata counted together
Asynchronous delivery2,000 documents, 2,000 recipients Per call to POST /epost/v2/deliveries
Synchronous delivery1500 documents One document per recipient, or one document to 1500 recipients
Identity matching metadata5Unit not stated, see above

All size figures are decimal, not binary. One kilobyte is 103 bytes, one megabyte 106, one gigabyte 109. In exact numbers: the platform rejects anything above 2,000,000,000 bytes per request and 200,000,000 bytes per document.

Compare against the decimal value, not against 1024 A client that treats 200 MB as 209,715,200 bytes lets a 205 MB file through, and the platform then rejects it. The error appears after the upload, not before it.

Pagination

7 endpoints accept pagination parameters:

EndpointParameters
GET /epost/deliveries/monitoringlimit, offset
GET /epost/signing/processeslimit, offset
GET /epost/v2/archives/letterslimit, offset
GET /epost/v2/letterslimit, offset
GET /epost/v2/letters/deletedlimit, offset
GET /epost/v2/letters/searchlimit, offset
GET /epost/v2/recipientslimit, offset

Searching and filtering

Free-text search

1 endpoint takes a search term and matches it against several fields at once. This is the only way to find a record without knowing an id.

EndpointParameter
GET /epost/v2/letters/searchvalue

Filtering by field

11 endpoints narrow the result by a field value, 24 parameters in total. Filtering is not searching: you have to know the value you are filtering on.

EndpointParameters
GET /epost/deliveries/monitoringdelivery-id
POST /epost/preview/delivery-channelspreview-option
POST /epost/preview/delivery-pricespreview-option
GET /epost/signing/processesstatus
GET /epost/v2/archives/lettersdirectory-id
GET /epost/v2/lettersfrom-date, is-business-tenant, letter-folder, letter-types, read-status, senderCaseId, senderEndToEndId, senderParticipantId, senderUserId, to-date, with-reminder
GET /epost/v2/letters/deletedsender-participant-id
GET /epost/v2/letters/inbox/countsender-participant-id
GET /epost/v2/letters/searchsearch-location, sender-participant-id
PATCH /epost/v2/letters/{letter-id}/archivedestination-directory-id
GET /epost/v2/recipientsmin-timestamp, minimum-level-of-trust, primary-credential

Sorting

1 endpoint accepts a sort order: /epost/deliveries/monitoring. Everywhere else the order is not guaranteed, which matters when you page through a large collection.

OpenAPI specification and tooling

Download the specification The ePost API is published as an OpenAPI 3.0.3 document. Generate clients, import it into Postman or Insomnia, spin up a mock server, or run contract tests against it.

epost-openapi.json

Machine-readable versions of this pageBesides the specification there is llms.txt, an index in Markdown that lists every chapter of this documentation and every area of the reference as a separate Markdown file. Built in the same run as this page, from the same source. Useful for coding assistants, retrieval and anything that would otherwise parse the HTML.
WhatWhere
Swagger, productionhttps://api.epost.ch/docs
Swagger, testhttps://api-test.klara-epost.tech/docs
Postman collectionA ready-made collection for sending a document, with an environment file, is published on the ePost developer portal under «Swagger Documentation and Postman Collection». It covers choosing a tenant, requesting a token, sending one or several documents and reading the delivery status

API reference

48 endpoints. Click any endpoint for its description, parameters, request body and responses. Everything below is generated from epost-openapi.json, which contains exactly the operations the platform publishes under the ePost group.

Want to try a request? Download the OpenAPI specification and import it into Postman, Insomnia or Bruno. You get every endpoint, parameter and example as a ready-made collection. Never paste a production API key into a tool you do not control.

Sending

ePost Communication Platform Delivery4

POST/epost/v2/deliverieskey / tokenCreates a delivery and send documents for a sender.

Delivery size limit: 2GB

Each document size (binary + metadata) limit: 200MB

Total number of documents per delivery limit: 2,000

Total number of recipients per delivery limit: 2,000

operationId

createDelivery — the method name a generated client uses.

Request body

multipart/form-data DeliveryRequestV2

  • files array of string (binary)
  • largeFile object format: binary
    A binary file, users can push the binary via API document for testing.
    PDF binaries have to be delivered in the format PDF/A.
  • metadata object
    Metadata of one delivery v2 contain list metadata of files.
    show fields
    • costCenter string
      In each delivery, you can input the specific department name sending the delivery. In order to see the cost generated by each business unit/department in the invoice. This is an optional field and maximum of 1 value per each delivery is accepted.
    • fileMetadata array of DocumentMetadataV2
      List of file's metadata
      show fields

      Array of DocumentMetadataV2.

      • allCredentialShouldMatch boolean
        Decides if this document should be delivered to ONLY the recipients that have their credentials all matched or not.
        If not specified, then default value of TRUE is used.
        This flag is only considered for the DIGITAL delivery in ePost.
      • fileName string required
        Name of document file.
      • mediaType string example: application/vnd.ch.klara.epost.v1+iletter
        Indicate the specific media type of the document. For sending a standard classic letter like a PDF leave this field empty.
        Acceptable values:
        "application/vnd.ch.klara.epost.v1+simple_short_message" for simple short message. To send simple short message, leave the document type empty.
        "application/vnd.ch.klara.epost.v1+incamail" Please use SecureSend instead of IncaMail.
        "application/vnd.ch.klara.epost.v1+securesend" for SecureSend.
        "application/vnd.ch.klara.epost.v1+iletter" for iLetter. An iLetter document carries no binary file; provide the reference in digitalAdditionalInfo.iLetter instead.
        null for Physical delivery.
      • deliveryChannelPreferences array of string required write-only
        This value defines your preference & priority among delivery channels. It defines that your letter/message/document should be delivered via which one of the available channels. You can input more than one delivery channel.


        The order of delivery channels defines the priority of each channel. Meaning, at first we try to deliver via the first mentioned delivery channel, if it's unsuccessful, we would try via the second channel mentioned, and so on.


        If delivery is not successful via any of the delivery methods, then an error response will be returned to the sender.


        DIGITAL delivering it to the recipient's ePost letterbox (available for all types of documents/letters/messages)

        PHYSICAL printing and sending the letter physically (only specific pdf formats are accepted)

        SMS delivering the "simple short message" as a SMS to the recipient's mobile phone. (only for simple short message media type)

        EBILL delivering it to the recipient's eBill (available for invoice document type with pdf format)

        EMAIL delivering it to the recipient who using email

        AUTO will try to find most suitable one from all available channel in order like this (DIGITAL, SMS, EBILL, PHYSICAL, EMAIL) then do the delivering
        Allowed values: DIGITAL, PHYSICAL, SMS, AUTO, EBILL, EMAIL
      • senderName string write-only example: Canton Bern
        This value will be shown to the recipient as the delivery sender name.
      • senderEndToEndId string write-only
        This id provided by the sender. It helps the sender to reference the document during the whole process.
      • senderCaseId string write-only
        This id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documents
      • documentReferenceDate string (date) format: date write-only example: 1990-01-02
        This date is relevant for a document from a business point of view, it differs from the date at which the document is entered in the "KLARA Documents" system.
        For eBill, The business case date can not be more than 90 days in the past and it can not be in the future.
      • documentTitle string example: nameOfTheFile
        This title will be shown to the recipient of the delivery on the application.
      • documentDescription string example: Your health check invitation with questionnaire.
        A short description of the document shown to the recipient as a preview text.
      • documentTypes array of string write-only
        This is the types of the document. In order to send a simple short message, leave this field empty.
        Accepted values: message, invoice, contract, hr.
        Allowed values: message, invoice, contract, hr
      • recipients array of Recipient required minItems: 1
        Recipients's informations include hashed and unhashed datas for identity matching process.
        show fields

        Array of Recipient.

        • senderUserId string
          This id is for the sender to recognize the recipient.
        • hashedPrimaryCredential object example: email
          Type of the primary credential which is hashed.
        • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
          Value of the primary credential.
        • derivedHashedCredentials array of string
          These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
          Allowed values: birthDate
        • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
          This hash value is derived from the other value "hashedPrimaryValue".
        • unhashedCredentials object
          Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
          show fields
          • universalName string example: KLARA Business AG / Peter Muster
            If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
          • firstName string example: Peter
            First name of a recipient.
          • lastName string example: Muster
            Last name of a recipient.
          • companyName string example: KLARA
            If the tenant entry is a business customer, i.e a Company, enter the company name here.
          • companyUid string example: CHE-123.456.789
            If the tenant entry is a business customer, i.e a Company, enter the company UID here.
            In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • street string example: Bahnhofstrasse 10a
            Street name in the address of a recipient.
            As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
          • streetNumber string example: 20
            Street number in the address of a recipient.
          • zipCode string example: 3000
            Zip code in the address of a recipient.
          • city string example: Bern
            City in the address of a recipient.
          • email string example: peter.muster@gmail.com
            Email of a recipient.
            In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • mobileNumber string example: +41909112233
            Mobile number of the recipient.
            Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
          • birthDate string (date) format: date example: 1990-01-02
            Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
          • participantId string
            This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
          • clientLegacyId string
            This id is optional and is used to support legacy systems.
          • minimumLevelOfTrust object
            The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
          • socialSecurityNumber string example: 756.1234.5678.97
            Social security number of a recipient and must be unique.
          • taxId string example: 263125
            Tax ID of a recipient and must be unique.
          • postOfficeBoxNumber string example: 12
            Post office box number
          • postOfficeBoxZip string example: 1212
            Post office box zipcode
          • postOfficeBoxTownName string example: Vervey 1
            Post office box town name
          • unstructuredAddressLine01 string example: Peter Muster
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine02 string example: Bahnhofsstr 20
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
            If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • billRecipientId string example: 41010560425610173
            Bill recipient Id from eBill. Using in eBill channel only.
            In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
      • allRecipientsRequired boolean
        True if all recipients are required to be valid in case Digital channel otherwise not send to anyone and mark as failed.
        If this flag true we just consider Digital delivery channel.
      • displayDeliveredDocument boolean
        When this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitle
      • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
        The message content of the simple short message
      • ebillAdditionalInfo EbillAdditionalInfo
        Group of the eBill delivery information.
        show fields
        • dueDate string (date) format: date write-only example: 2022-12-22
          Due date of business case
        • paymentAmount number write-only example: 20
          Amount to be paid for the invoice document
        • qrReference string write-only example: RF012345QF67T8910UI123
          Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
      • emailAdditionalInfo EmailAdditionalInfo
        Group of the email delivery information.
        show fields
        • emailText string write-only example: Hello world.
          Content of the email.
        • emailHtml string write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>
          Content of the email in html format.
        • emailSubject string write-only example: your invoice from KLARA
          Subject of the email.
        • sender object
          Contain email and its name
          show fields
          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • replyTo array of AdditionalEmailInfo write-only
          Reply to the given emails.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • cc array of AdditionalEmailInfo write-only
          Sending email as cc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • bcc array of AdditionalEmailInfo write-only
          Sending email as bcc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • inlineImages array of EmailInlineImage
          Inline images of the email
          show fields

          Array of EmailInlineImage.

          • filename string required pattern: \S example: picture1.png
            filename of the inline image
          • base64 string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQ
            file content of the inline image as base64.
      • digitalAdditionalInfo DigitalAdditionalInfo
        Group of the digital delivery information.
        show fields
        • digitalDeliveryVariant object example: STANDARD
          Specifies the tier for the delivery via channel DIGITAL. This selection determines the availability of digital receipts, tracking capabilities, and recipient identification requirements. If digitalDeliveryVariant is omitted, the system defaults to 'STANDARD'.

          STANDARD: Standard digital delivery with proof of dispatch. Includes a digital timestamp and signature upon acceptance by ePost. [ePost Standard]
          NO_CONFIRMATION: Basic digital delivery. Provides a digital delivery without additional digital receipts or tracking features. [ePost Light]
          TRACKED: Enhanced delivery with retrieval tracking. Includes all features of STANDARD, plus 'Retrieval' and 'Non-retrieval' receipts to track if and when the recipient opened the message. [ePost Plus]
          REGISTERED: Full legal-grade digital registered mail. Includes all TRACKED features, as well as recipient acceptance/rejection tracking and mandatory Person Identification. Important note: 'minimumLevelOfTrust' must be set to GOLD for the recipient, as verification of the recipient as a person by an online identification process is prerequisite for ePost Registered. [ePost Registered]
        • letterAnswer string
          Specifies an optional recipient response option for the delivery via channel DIGITAL. When set to a supported value, the recipient is offered a corresponding action on the delivered document in the digital letterbox. This field is only considered for the DIGITAL channel; it is ignored for all other channels. Supported values are provisioned per agreement with ePost. If omitted, empty, or set to an unrecognised value, no response option is offered and the delivery proceeds normally.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
        • documentInfoByLanguage object
          Optional localised overwrite of the top-level documentTitle and documentDescription, keyed by uppercase language code (DE, FR, IT, EN). A recipient whose letterbox language has an entry is shown that entry's title and description instead of the top-level values; a recipient whose language has no entry is shown the top-level documentTitle and documentDescription. Relevant only for the DIGITAL channel.
          show fields
          • DE LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • FR LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • IT LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • EN LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
      • forcedOnboarding object
        This object is optional. Defines whether all recipients of this document should be forced to register to ePost in order to receive this document. If the recipient is already registered to ePost, the normal delivery flow applies. If the recipient is not yet registered to ePost, we will send him an email asking him to register to ePost in order to receive the document. The document is stored for up to 60 days and will be delivered to the recipient as soon as he registers to ePost. After 60 days the delivery will expire.
        Reminder emails are sent to the recipient after 2, 25, 40 and 55 days.
        Forced onboarding is only available for the delivery channel DIGITAL. Additionally the unhashed credential EMAIL is required for forced onboarding (onboarding request email will be sent to this email address) and the minimum level of trust must be BRONZE.
        show fields
        • channel object example: EMAIL
          The channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.
        • language object example: EN
          Language of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.
        • emailToBeInformedWhenExpired string example: peter.muster@gmail.com
          This email address is used to inform the sender, in case the forced onboarding eLetter expires after 60 days (recipient didn't register) or should an error occur in the delivery of the forced onboarding eLetter.
      • physicalAdditionalInfo PhysicalAdditionalInfo
        Group of the physical delivery information.
        show fields
        • duplex boolean default: false example: False
          If this flag is true, the Printer will print the document as both sides, otherwise just 1 side.
        • shippingCountry string default: CH example: CH
          The country which the sender customer can send letters to
          All acceptable country codes for shipping country.
        • envelopeSize object example: C5
          Size of the envelope (values: C4, C5, BOX, AUTO)
        • postage object example: A_POST
          Type of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)
        • qrInvoicePageNumber integer (int32) format: int32 default: 0 example: 0
          The qr Invoice page number
        • windowLocation object example: LEFT
          The position of the letter(values: LEFT, RIGHT)
        • coverPrinterLogoId string default: example: BKW.tif
          Optional field. This field is used to print your logo on the envelope by our printer partner. If you wish to do so, please contact the KLARA administrator.
        • attachment string default: example: myAttachment01.pdf
          Optional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.
        • senderAddress object
          Address to be printed on the letter as sender address. Optional (if no sender address is provided, the company address of the sender tenant will be printed on the letter as sender address).
          show fields
          • name string example: ePost Service AG
            Sender name to be printed on the letter as part of the sender address.
          • street string example: Bahnhofstrasse
            Sender street to be printed on the letter as part of the sender address.
          • streetNumber string example: 20
            Sender street number to be printed on the letter as part of the sender address.
          • zipCode string example: 3000
            Sender zip code to be printed on the letter as part of the sender address.
          • city string example: Bern
            Sender city to be printed on the letter as part of the sender address.
    • featurePricePlan string
      This value is optional and is used for special pricing agreement between KLARA and the sender customer. For more information, please contact KLARA admin.

      If you don't have a value given by KLARA admin team, you can set it to null which will result in standard pricing.
Responses 6
201 Delivery created show body

application/json DeliveryResponseV2

  • id string
    The id of this delivery after created
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
415 Unsupported Media Type

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/deliveries/{delivery-id}/statuskey / tokenGet Delivery status.
operationId

getDeliveryStatus — the method name a generated client uses.

Parameters 1
NameDescription
delivery-id required
path string
The id of the delivery
example: 1
Responses 5
200 OK show body

application/json DeliveryStatusResponseV2

  • deliveryId string
    Delivery's id
  • status object
    All statuses which a delivery could have
  • document object
    Document information
    show fields
    • failedDocument array of DeliveryStatusResponseV2.FailedDocument
      Failed delivery documents
      show fields

      Array of DeliveryStatusResponseV2.FailedDocument.

      • senderEndToEndId string
        End to end id defined by you for each document. It helps you keep track the document
      • documentTitle string
        Document title
      • status object
        Status of document:
        • DELIVERED_WITH_ERROR or FAILED: Fail to deliver to some recipients
        • NOT_MATCH_ALL_RECIPIENTS: Unable to find matching for all recipients. Note: Only available in case allRecipientsRequired attribute on
      • errorCode string
        Error code:
        • FILE_CONTAINS_MALWARE: The file has viruses
        • DOCUMENT_SIZE_EXCEEDED: Document size exceeded
        • DOCUMENT_IMPORT_UNKNOWN_ERROR: Internal server error
      • errorMessage string
        Error message
      • detail array of DeliveryStatusResponseV2.FailedDetail
        A list of recipients we could not deliver to
        show fields

        Array of DeliveryStatusResponseV2.FailedDetail.

        • deliveryChannel object
          Delivery channel
        • errorCode string
          Error code
        • errorMessage string
          Error message
        • senderUserId string
          User id was defined by you for each recipient
    • deliveredDocument array of DeliveryStatusResponseV2.DeliveredDocument
      Delivered documents
      show fields

      Array of DeliveryStatusResponseV2.DeliveredDocument.

      • senderEndToEndId string
        End to end id defined by sender for each document
      • documentTitle string
        Document title
      • detail array of DeliveryStatusResponseV2.DeliveredDetail
        List of recipient successfully received the document. This list is only returned when displayDeliveredDocuments is set to true when sending the delivery.
        show fields

        Array of DeliveryStatusResponseV2.DeliveredDetail.

        • deliveryChannel object
          Delivery channel
        • participantId string
          The participant id of the user that was delivered
        • senderUserId string
          User id was defined by sender for each recipient
        • trackingNumber string
          Tracking number of the document that was delivered. It's only relevant for the postage REGISTERED and APLUS.
    • delivered object
      The number of recipients have been already delivered to
      show fields
      • recipientsDeliveredDigitally integer (int32) format: int32
        Number of recipients that have been delivered digitally to
      • recipientsDeliveredPhysically integer (int32) format: int32
        Number of recipients that have been delivered physically to
      • recipientsWithSmsDelivered integer (int32) format: int32
        Number of recipients that received SMS
      • recipientsDeliveredEbill integer (int32) format: int32
        Number of recipients that have been delivered via eBill
      • recipientsDeliveredEmail integer (int32) format: int32
        Number of recipients that have been delivered via email
    • pendingDocuments integer (int32) format: int32
      Number of documents that are in process
400 Delivery id is invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/iletters/{iletter-id}/response-files/{response-file-id}/contentkey / tokenDownload a file a recipient uploaded as an answer to an iLetter.
Only the sender tenant of the iLetter can read its response files. The content is available for 90 days after the answer was submitted; after that the call returns 410 with the file metadata.
operationId

getILetterResponseFileContent — the method name a generated client uses.

Parameters 2
NameDescription
iletter-id required
path string
Id of the iLetter, as sent in the letterId field of the answer webhook.
example: 65e7e536aae6544ca8dce48f
response-file-id required
path string
Id of the response file, as sent in the files field of the answer webhook.
example: 66f1a2b3c4d5e6f708192a3b
Responses 7
200 The file content. Content-Type and Content-Disposition carry the original type and file name. show body

application/octet-stream object

401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
410 The file content was removed: its 90-day retention ended, or the answer was replaced or deleted.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ResponseFileGoneResponse

  • fileName string example: id-card.pdf
    Original file name
  • mimeType string example: application/pdf
    MIME type of the file
  • size integer (int64) format: int64 example: 2048
    Size of the file in bytes
  • removedAt string example: 2026-12-12T08:00:00Z
    When the content was removed (ISO 8601 UTC). Before the daily clean-up has run, this is the expiry time.
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/synchronous-deliverieskey / tokenCreates a synchronous delivery to send documents for a sender and receive status immediately.

Delivery size limit: 2GB

Each document size (binary + metadata) limit: 200MB

Total number of documents per delivery limit: 1500

Total number of recipients per delivery limit: 1500

operationId

createSynchronousDelivery — the method name a generated client uses.

Request body

multipart/form-data DeliveryRequestV21

  • files array of string (binary)
  • metadata object
    Metadata of one delivery v2 contain list metadata of files.
    show fields
    • costCenter string
      In each delivery, you can input the specific department name sending the delivery. In order to see the cost generated by each business unit/department in the invoice. This is an optional field and maximum of 1 value per each delivery is accepted.
    • fileMetadata array of DocumentMetadataV2
      List of file's metadata
      show fields

      Array of DocumentMetadataV2.

      • allCredentialShouldMatch boolean
        Decides if this document should be delivered to ONLY the recipients that have their credentials all matched or not.
        If not specified, then default value of TRUE is used.
        This flag is only considered for the DIGITAL delivery in ePost.
      • fileName string required
        Name of document file.
      • mediaType string example: application/vnd.ch.klara.epost.v1+iletter
        Indicate the specific media type of the document. For sending a standard classic letter like a PDF leave this field empty.
        Acceptable values:
        "application/vnd.ch.klara.epost.v1+simple_short_message" for simple short message. To send simple short message, leave the document type empty.
        "application/vnd.ch.klara.epost.v1+incamail" Please use SecureSend instead of IncaMail.
        "application/vnd.ch.klara.epost.v1+securesend" for SecureSend.
        "application/vnd.ch.klara.epost.v1+iletter" for iLetter. An iLetter document carries no binary file; provide the reference in digitalAdditionalInfo.iLetter instead.
        null for Physical delivery.
      • deliveryChannelPreferences array of string required write-only
        This value defines your preference & priority among delivery channels. It defines that your letter/message/document should be delivered via which one of the available channels. You can input more than one delivery channel.


        The order of delivery channels defines the priority of each channel. Meaning, at first we try to deliver via the first mentioned delivery channel, if it's unsuccessful, we would try via the second channel mentioned, and so on.


        If delivery is not successful via any of the delivery methods, then an error response will be returned to the sender.


        DIGITAL delivering it to the recipient's ePost letterbox (available for all types of documents/letters/messages)

        PHYSICAL printing and sending the letter physically (only specific pdf formats are accepted)

        SMS delivering the "simple short message" as a SMS to the recipient's mobile phone. (only for simple short message media type)

        EBILL delivering it to the recipient's eBill (available for invoice document type with pdf format)

        EMAIL delivering it to the recipient who using email

        AUTO will try to find most suitable one from all available channel in order like this (DIGITAL, SMS, EBILL, PHYSICAL, EMAIL) then do the delivering
        Allowed values: DIGITAL, PHYSICAL, SMS, AUTO, EBILL, EMAIL
      • senderName string write-only example: Canton Bern
        This value will be shown to the recipient as the delivery sender name.
      • senderEndToEndId string write-only
        This id provided by the sender. It helps the sender to reference the document during the whole process.
      • senderCaseId string write-only
        This id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documents
      • documentReferenceDate string (date) format: date write-only example: 1990-01-02
        This date is relevant for a document from a business point of view, it differs from the date at which the document is entered in the "KLARA Documents" system.
        For eBill, The business case date can not be more than 90 days in the past and it can not be in the future.
      • documentTitle string example: nameOfTheFile
        This title will be shown to the recipient of the delivery on the application.
      • documentDescription string example: Your health check invitation with questionnaire.
        A short description of the document shown to the recipient as a preview text.
      • documentTypes array of string write-only
        This is the types of the document. In order to send a simple short message, leave this field empty.
        Accepted values: message, invoice, contract, hr.
        Allowed values: message, invoice, contract, hr
      • recipients array of Recipient required minItems: 1
        Recipients's informations include hashed and unhashed datas for identity matching process.
        show fields

        Array of Recipient.

        • senderUserId string
          This id is for the sender to recognize the recipient.
        • hashedPrimaryCredential object example: email
          Type of the primary credential which is hashed.
        • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
          Value of the primary credential.
        • derivedHashedCredentials array of string
          These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
          Allowed values: birthDate
        • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
          This hash value is derived from the other value "hashedPrimaryValue".
        • unhashedCredentials object
          Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
          show fields
          • universalName string example: KLARA Business AG / Peter Muster
            If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
          • firstName string example: Peter
            First name of a recipient.
          • lastName string example: Muster
            Last name of a recipient.
          • companyName string example: KLARA
            If the tenant entry is a business customer, i.e a Company, enter the company name here.
          • companyUid string example: CHE-123.456.789
            If the tenant entry is a business customer, i.e a Company, enter the company UID here.
            In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • street string example: Bahnhofstrasse 10a
            Street name in the address of a recipient.
            As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
          • streetNumber string example: 20
            Street number in the address of a recipient.
          • zipCode string example: 3000
            Zip code in the address of a recipient.
          • city string example: Bern
            City in the address of a recipient.
          • email string example: peter.muster@gmail.com
            Email of a recipient.
            In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • mobileNumber string example: +41909112233
            Mobile number of the recipient.
            Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
          • birthDate string (date) format: date example: 1990-01-02
            Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
          • participantId string
            This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
          • clientLegacyId string
            This id is optional and is used to support legacy systems.
          • minimumLevelOfTrust object
            The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
          • socialSecurityNumber string example: 756.1234.5678.97
            Social security number of a recipient and must be unique.
          • taxId string example: 263125
            Tax ID of a recipient and must be unique.
          • postOfficeBoxNumber string example: 12
            Post office box number
          • postOfficeBoxZip string example: 1212
            Post office box zipcode
          • postOfficeBoxTownName string example: Vervey 1
            Post office box town name
          • unstructuredAddressLine01 string example: Peter Muster
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine02 string example: Bahnhofsstr 20
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
            If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • billRecipientId string example: 41010560425610173
            Bill recipient Id from eBill. Using in eBill channel only.
            In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
      • allRecipientsRequired boolean
        True if all recipients are required to be valid in case Digital channel otherwise not send to anyone and mark as failed.
        If this flag true we just consider Digital delivery channel.
      • displayDeliveredDocument boolean
        When this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitle
      • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
        The message content of the simple short message
      • ebillAdditionalInfo EbillAdditionalInfo
        Group of the eBill delivery information.
        show fields
        • dueDate string (date) format: date write-only example: 2022-12-22
          Due date of business case
        • paymentAmount number write-only example: 20
          Amount to be paid for the invoice document
        • qrReference string write-only example: RF012345QF67T8910UI123
          Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
      • emailAdditionalInfo EmailAdditionalInfo
        Group of the email delivery information.
        show fields
        • emailText string write-only example: Hello world.
          Content of the email.
        • emailHtml string write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>
          Content of the email in html format.
        • emailSubject string write-only example: your invoice from KLARA
          Subject of the email.
        • sender object
          Contain email and its name
          show fields
          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • replyTo array of AdditionalEmailInfo write-only
          Reply to the given emails.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • cc array of AdditionalEmailInfo write-only
          Sending email as cc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • bcc array of AdditionalEmailInfo write-only
          Sending email as bcc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • inlineImages array of EmailInlineImage
          Inline images of the email
          show fields

          Array of EmailInlineImage.

          • filename string required pattern: \S example: picture1.png
            filename of the inline image
          • base64 string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQ
            file content of the inline image as base64.
      • digitalAdditionalInfo DigitalAdditionalInfo
        Group of the digital delivery information.
        show fields
        • digitalDeliveryVariant object example: STANDARD
          Specifies the tier for the delivery via channel DIGITAL. This selection determines the availability of digital receipts, tracking capabilities, and recipient identification requirements. If digitalDeliveryVariant is omitted, the system defaults to 'STANDARD'.

          STANDARD: Standard digital delivery with proof of dispatch. Includes a digital timestamp and signature upon acceptance by ePost. [ePost Standard]
          NO_CONFIRMATION: Basic digital delivery. Provides a digital delivery without additional digital receipts or tracking features. [ePost Light]
          TRACKED: Enhanced delivery with retrieval tracking. Includes all features of STANDARD, plus 'Retrieval' and 'Non-retrieval' receipts to track if and when the recipient opened the message. [ePost Plus]
          REGISTERED: Full legal-grade digital registered mail. Includes all TRACKED features, as well as recipient acceptance/rejection tracking and mandatory Person Identification. Important note: 'minimumLevelOfTrust' must be set to GOLD for the recipient, as verification of the recipient as a person by an online identification process is prerequisite for ePost Registered. [ePost Registered]
        • letterAnswer string
          Specifies an optional recipient response option for the delivery via channel DIGITAL. When set to a supported value, the recipient is offered a corresponding action on the delivered document in the digital letterbox. This field is only considered for the DIGITAL channel; it is ignored for all other channels. Supported values are provisioned per agreement with ePost. If omitted, empty, or set to an unrecognised value, no response option is offered and the delivery proceeds normally.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
        • documentInfoByLanguage object
          Optional localised overwrite of the top-level documentTitle and documentDescription, keyed by uppercase language code (DE, FR, IT, EN). A recipient whose letterbox language has an entry is shown that entry's title and description instead of the top-level values; a recipient whose language has no entry is shown the top-level documentTitle and documentDescription. Relevant only for the DIGITAL channel.
          show fields
          • DE LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • FR LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • IT LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • EN LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
      • forcedOnboarding object
        This object is optional. Defines whether all recipients of this document should be forced to register to ePost in order to receive this document. If the recipient is already registered to ePost, the normal delivery flow applies. If the recipient is not yet registered to ePost, we will send him an email asking him to register to ePost in order to receive the document. The document is stored for up to 60 days and will be delivered to the recipient as soon as he registers to ePost. After 60 days the delivery will expire.
        Reminder emails are sent to the recipient after 2, 25, 40 and 55 days.
        Forced onboarding is only available for the delivery channel DIGITAL. Additionally the unhashed credential EMAIL is required for forced onboarding (onboarding request email will be sent to this email address) and the minimum level of trust must be BRONZE.
        show fields
        • channel object example: EMAIL
          The channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.
        • language object example: EN
          Language of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.
        • emailToBeInformedWhenExpired string example: peter.muster@gmail.com
          This email address is used to inform the sender, in case the forced onboarding eLetter expires after 60 days (recipient didn't register) or should an error occur in the delivery of the forced onboarding eLetter.
      • physicalAdditionalInfo PhysicalAdditionalInfo
        Group of the physical delivery information.
        show fields
        • duplex boolean default: false example: False
          If this flag is true, the Printer will print the document as both sides, otherwise just 1 side.
        • shippingCountry string default: CH example: CH
          The country which the sender customer can send letters to
          All acceptable country codes for shipping country.
        • envelopeSize object example: C5
          Size of the envelope (values: C4, C5, BOX, AUTO)
        • postage object example: A_POST
          Type of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)
        • qrInvoicePageNumber integer (int32) format: int32 default: 0 example: 0
          The qr Invoice page number
        • windowLocation object example: LEFT
          The position of the letter(values: LEFT, RIGHT)
        • coverPrinterLogoId string default: example: BKW.tif
          Optional field. This field is used to print your logo on the envelope by our printer partner. If you wish to do so, please contact the KLARA administrator.
        • attachment string default: example: myAttachment01.pdf
          Optional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.
        • senderAddress object
          Address to be printed on the letter as sender address. Optional (if no sender address is provided, the company address of the sender tenant will be printed on the letter as sender address).
          show fields
          • name string example: ePost Service AG
            Sender name to be printed on the letter as part of the sender address.
          • street string example: Bahnhofstrasse
            Sender street to be printed on the letter as part of the sender address.
          • streetNumber string example: 20
            Sender street number to be printed on the letter as part of the sender address.
          • zipCode string example: 3000
            Sender zip code to be printed on the letter as part of the sender address.
          • city string example: Bern
            Sender city to be printed on the letter as part of the sender address.
    • featurePricePlan string
      This value is optional and is used for special pricing agreement between KLARA and the sender customer. For more information, please contact KLARA admin.

      If you don't have a value given by KLARA admin team, you can set it to null which will result in standard pricing.
Responses 6
200 Status of the delivery show body

application/json DeliveryStatusResponseV2

  • deliveryId string
    Delivery's id
  • status object
    All statuses which a delivery could have
  • document object
    Document information
    show fields
    • failedDocument array of DeliveryStatusResponseV2.FailedDocument
      Failed delivery documents
      show fields

      Array of DeliveryStatusResponseV2.FailedDocument.

      • senderEndToEndId string
        End to end id defined by you for each document. It helps you keep track the document
      • documentTitle string
        Document title
      • status object
        Status of document:
        • DELIVERED_WITH_ERROR or FAILED: Fail to deliver to some recipients
        • NOT_MATCH_ALL_RECIPIENTS: Unable to find matching for all recipients. Note: Only available in case allRecipientsRequired attribute on
      • errorCode string
        Error code:
        • FILE_CONTAINS_MALWARE: The file has viruses
        • DOCUMENT_SIZE_EXCEEDED: Document size exceeded
        • DOCUMENT_IMPORT_UNKNOWN_ERROR: Internal server error
      • errorMessage string
        Error message
      • detail array of DeliveryStatusResponseV2.FailedDetail
        A list of recipients we could not deliver to
        show fields

        Array of DeliveryStatusResponseV2.FailedDetail.

        • deliveryChannel object
          Delivery channel
        • errorCode string
          Error code
        • errorMessage string
          Error message
        • senderUserId string
          User id was defined by you for each recipient
    • deliveredDocument array of DeliveryStatusResponseV2.DeliveredDocument
      Delivered documents
      show fields

      Array of DeliveryStatusResponseV2.DeliveredDocument.

      • senderEndToEndId string
        End to end id defined by sender for each document
      • documentTitle string
        Document title
      • detail array of DeliveryStatusResponseV2.DeliveredDetail
        List of recipient successfully received the document. This list is only returned when displayDeliveredDocuments is set to true when sending the delivery.
        show fields

        Array of DeliveryStatusResponseV2.DeliveredDetail.

        • deliveryChannel object
          Delivery channel
        • participantId string
          The participant id of the user that was delivered
        • senderUserId string
          User id was defined by sender for each recipient
        • trackingNumber string
          Tracking number of the document that was delivered. It's only relevant for the postage REGISTERED and APLUS.
    • delivered object
      The number of recipients have been already delivered to
      show fields
      • recipientsDeliveredDigitally integer (int32) format: int32
        Number of recipients that have been delivered digitally to
      • recipientsDeliveredPhysically integer (int32) format: int32
        Number of recipients that have been delivered physically to
      • recipientsWithSmsDelivered integer (int32) format: int32
        Number of recipients that received SMS
      • recipientsDeliveredEbill integer (int32) format: int32
        Number of recipients that have been delivered via eBill
      • recipientsDeliveredEmail integer (int32) format: int32
        Number of recipients that have been delivered via email
    • pendingDocuments integer (int32) format: int32
      Number of documents that are in process
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
415 Unsupported Media Type

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

ePost Communication Platform Preview Services4

POST/epost/preview/delivery-channelskey / tokenCreates a preview of all the available delivery channels without delivering any document.

Delivery size limit: 2GB

Each document size (binary + metadata) limit: 200MB

operationId

createDeliveryChannelPreview — the method name a generated client uses.

Parameters 1
NameDescription
preview-option
query object
Specify should include 1st or all channels in the result.
Acceptable values:
ALL_AVAILABLE_CHANNELS include all channels in result
FIRST_AVAILABLE_CHANNEL include only first channel in result


ALL_AVAILABLE_CHANNELS is chosen by default
Request body required
Preview delivery's metadata

multipart/form-data OneApiPreviewRequest

  • files array of string (binary)
  • largeFile object format: binary
    A binary file, users can push the binary via API document for testing.
    PDF binaries have to be delivered in the format PDF/A.
  • metadata object
    Metadata of one delivery v2 contain list metadata of files.
    show fields
    • costCenter string
      In each delivery, you can input the specific department name sending the delivery. In order to see the cost generated by each business unit/department in the invoice. This is an optional field and maximum of 1 value per each delivery is accepted.
    • fileMetadata array of DocumentMetadataV2
      List of file's metadata
      show fields

      Array of DocumentMetadataV2.

      • allCredentialShouldMatch boolean
        Decides if this document should be delivered to ONLY the recipients that have their credentials all matched or not.
        If not specified, then default value of TRUE is used.
        This flag is only considered for the DIGITAL delivery in ePost.
      • fileName string required
        Name of document file.
      • mediaType string example: application/vnd.ch.klara.epost.v1+iletter
        Indicate the specific media type of the document. For sending a standard classic letter like a PDF leave this field empty.
        Acceptable values:
        "application/vnd.ch.klara.epost.v1+simple_short_message" for simple short message. To send simple short message, leave the document type empty.
        "application/vnd.ch.klara.epost.v1+incamail" Please use SecureSend instead of IncaMail.
        "application/vnd.ch.klara.epost.v1+securesend" for SecureSend.
        "application/vnd.ch.klara.epost.v1+iletter" for iLetter. An iLetter document carries no binary file; provide the reference in digitalAdditionalInfo.iLetter instead.
        null for Physical delivery.
      • deliveryChannelPreferences array of string required write-only
        This value defines your preference & priority among delivery channels. It defines that your letter/message/document should be delivered via which one of the available channels. You can input more than one delivery channel.


        The order of delivery channels defines the priority of each channel. Meaning, at first we try to deliver via the first mentioned delivery channel, if it's unsuccessful, we would try via the second channel mentioned, and so on.


        If delivery is not successful via any of the delivery methods, then an error response will be returned to the sender.


        DIGITAL delivering it to the recipient's ePost letterbox (available for all types of documents/letters/messages)

        PHYSICAL printing and sending the letter physically (only specific pdf formats are accepted)

        SMS delivering the "simple short message" as a SMS to the recipient's mobile phone. (only for simple short message media type)

        EBILL delivering it to the recipient's eBill (available for invoice document type with pdf format)

        EMAIL delivering it to the recipient who using email

        AUTO will try to find most suitable one from all available channel in order like this (DIGITAL, SMS, EBILL, PHYSICAL, EMAIL) then do the delivering
        Allowed values: DIGITAL, PHYSICAL, SMS, AUTO, EBILL, EMAIL
      • senderName string write-only example: Canton Bern
        This value will be shown to the recipient as the delivery sender name.
      • senderEndToEndId string write-only
        This id provided by the sender. It helps the sender to reference the document during the whole process.
      • senderCaseId string write-only
        This id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documents
      • documentReferenceDate string (date) format: date write-only example: 1990-01-02
        This date is relevant for a document from a business point of view, it differs from the date at which the document is entered in the "KLARA Documents" system.
        For eBill, The business case date can not be more than 90 days in the past and it can not be in the future.
      • documentTitle string example: nameOfTheFile
        This title will be shown to the recipient of the delivery on the application.
      • documentDescription string example: Your health check invitation with questionnaire.
        A short description of the document shown to the recipient as a preview text.
      • documentTypes array of string write-only
        This is the types of the document. In order to send a simple short message, leave this field empty.
        Accepted values: message, invoice, contract, hr.
        Allowed values: message, invoice, contract, hr
      • recipients array of Recipient required minItems: 1
        Recipients's informations include hashed and unhashed datas for identity matching process.
        show fields

        Array of Recipient.

        • senderUserId string
          This id is for the sender to recognize the recipient.
        • hashedPrimaryCredential object example: email
          Type of the primary credential which is hashed.
        • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
          Value of the primary credential.
        • derivedHashedCredentials array of string
          These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
          Allowed values: birthDate
        • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
          This hash value is derived from the other value "hashedPrimaryValue".
        • unhashedCredentials object
          Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
          show fields
          • universalName string example: KLARA Business AG / Peter Muster
            If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
          • firstName string example: Peter
            First name of a recipient.
          • lastName string example: Muster
            Last name of a recipient.
          • companyName string example: KLARA
            If the tenant entry is a business customer, i.e a Company, enter the company name here.
          • companyUid string example: CHE-123.456.789
            If the tenant entry is a business customer, i.e a Company, enter the company UID here.
            In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • street string example: Bahnhofstrasse 10a
            Street name in the address of a recipient.
            As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
          • streetNumber string example: 20
            Street number in the address of a recipient.
          • zipCode string example: 3000
            Zip code in the address of a recipient.
          • city string example: Bern
            City in the address of a recipient.
          • email string example: peter.muster@gmail.com
            Email of a recipient.
            In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • mobileNumber string example: +41909112233
            Mobile number of the recipient.
            Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
          • birthDate string (date) format: date example: 1990-01-02
            Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
          • participantId string
            This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
          • clientLegacyId string
            This id is optional and is used to support legacy systems.
          • minimumLevelOfTrust object
            The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
          • socialSecurityNumber string example: 756.1234.5678.97
            Social security number of a recipient and must be unique.
          • taxId string example: 263125
            Tax ID of a recipient and must be unique.
          • postOfficeBoxNumber string example: 12
            Post office box number
          • postOfficeBoxZip string example: 1212
            Post office box zipcode
          • postOfficeBoxTownName string example: Vervey 1
            Post office box town name
          • unstructuredAddressLine01 string example: Peter Muster
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine02 string example: Bahnhofsstr 20
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
            If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • billRecipientId string example: 41010560425610173
            Bill recipient Id from eBill. Using in eBill channel only.
            In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
      • allRecipientsRequired boolean
        True if all recipients are required to be valid in case Digital channel otherwise not send to anyone and mark as failed.
        If this flag true we just consider Digital delivery channel.
      • displayDeliveredDocument boolean
        When this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitle
      • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
        The message content of the simple short message
      • ebillAdditionalInfo EbillAdditionalInfo
        Group of the eBill delivery information.
        show fields
        • dueDate string (date) format: date write-only example: 2022-12-22
          Due date of business case
        • paymentAmount number write-only example: 20
          Amount to be paid for the invoice document
        • qrReference string write-only example: RF012345QF67T8910UI123
          Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
      • emailAdditionalInfo EmailAdditionalInfo
        Group of the email delivery information.
        show fields
        • emailText string write-only example: Hello world.
          Content of the email.
        • emailHtml string write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>
          Content of the email in html format.
        • emailSubject string write-only example: your invoice from KLARA
          Subject of the email.
        • sender object
          Contain email and its name
          show fields
          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • replyTo array of AdditionalEmailInfo write-only
          Reply to the given emails.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • cc array of AdditionalEmailInfo write-only
          Sending email as cc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • bcc array of AdditionalEmailInfo write-only
          Sending email as bcc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • inlineImages array of EmailInlineImage
          Inline images of the email
          show fields

          Array of EmailInlineImage.

          • filename string required pattern: \S example: picture1.png
            filename of the inline image
          • base64 string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQ
            file content of the inline image as base64.
      • digitalAdditionalInfo DigitalAdditionalInfo
        Group of the digital delivery information.
        show fields
        • digitalDeliveryVariant object example: STANDARD
          Specifies the tier for the delivery via channel DIGITAL. This selection determines the availability of digital receipts, tracking capabilities, and recipient identification requirements. If digitalDeliveryVariant is omitted, the system defaults to 'STANDARD'.

          STANDARD: Standard digital delivery with proof of dispatch. Includes a digital timestamp and signature upon acceptance by ePost. [ePost Standard]
          NO_CONFIRMATION: Basic digital delivery. Provides a digital delivery without additional digital receipts or tracking features. [ePost Light]
          TRACKED: Enhanced delivery with retrieval tracking. Includes all features of STANDARD, plus 'Retrieval' and 'Non-retrieval' receipts to track if and when the recipient opened the message. [ePost Plus]
          REGISTERED: Full legal-grade digital registered mail. Includes all TRACKED features, as well as recipient acceptance/rejection tracking and mandatory Person Identification. Important note: 'minimumLevelOfTrust' must be set to GOLD for the recipient, as verification of the recipient as a person by an online identification process is prerequisite for ePost Registered. [ePost Registered]
        • letterAnswer string
          Specifies an optional recipient response option for the delivery via channel DIGITAL. When set to a supported value, the recipient is offered a corresponding action on the delivered document in the digital letterbox. This field is only considered for the DIGITAL channel; it is ignored for all other channels. Supported values are provisioned per agreement with ePost. If omitted, empty, or set to an unrecognised value, no response option is offered and the delivery proceeds normally.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
        • documentInfoByLanguage object
          Optional localised overwrite of the top-level documentTitle and documentDescription, keyed by uppercase language code (DE, FR, IT, EN). A recipient whose letterbox language has an entry is shown that entry's title and description instead of the top-level values; a recipient whose language has no entry is shown the top-level documentTitle and documentDescription. Relevant only for the DIGITAL channel.
          show fields
          • DE LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • FR LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • IT LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • EN LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
      • forcedOnboarding object
        This object is optional. Defines whether all recipients of this document should be forced to register to ePost in order to receive this document. If the recipient is already registered to ePost, the normal delivery flow applies. If the recipient is not yet registered to ePost, we will send him an email asking him to register to ePost in order to receive the document. The document is stored for up to 60 days and will be delivered to the recipient as soon as he registers to ePost. After 60 days the delivery will expire.
        Reminder emails are sent to the recipient after 2, 25, 40 and 55 days.
        Forced onboarding is only available for the delivery channel DIGITAL. Additionally the unhashed credential EMAIL is required for forced onboarding (onboarding request email will be sent to this email address) and the minimum level of trust must be BRONZE.
        show fields
        • channel object example: EMAIL
          The channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.
        • language object example: EN
          Language of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.
        • emailToBeInformedWhenExpired string example: peter.muster@gmail.com
          This email address is used to inform the sender, in case the forced onboarding eLetter expires after 60 days (recipient didn't register) or should an error occur in the delivery of the forced onboarding eLetter.
      • physicalAdditionalInfo PhysicalAdditionalInfo
        Group of the physical delivery information.
        show fields
        • duplex boolean default: false example: False
          If this flag is true, the Printer will print the document as both sides, otherwise just 1 side.
        • shippingCountry string default: CH example: CH
          The country which the sender customer can send letters to
          All acceptable country codes for shipping country.
        • envelopeSize object example: C5
          Size of the envelope (values: C4, C5, BOX, AUTO)
        • postage object example: A_POST
          Type of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)
        • qrInvoicePageNumber integer (int32) format: int32 default: 0 example: 0
          The qr Invoice page number
        • windowLocation object example: LEFT
          The position of the letter(values: LEFT, RIGHT)
        • coverPrinterLogoId string default: example: BKW.tif
          Optional field. This field is used to print your logo on the envelope by our printer partner. If you wish to do so, please contact the KLARA administrator.
        • attachment string default: example: myAttachment01.pdf
          Optional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.
        • senderAddress object
          Address to be printed on the letter as sender address. Optional (if no sender address is provided, the company address of the sender tenant will be printed on the letter as sender address).
          show fields
          • name string example: ePost Service AG
            Sender name to be printed on the letter as part of the sender address.
          • street string example: Bahnhofstrasse
            Sender street to be printed on the letter as part of the sender address.
          • streetNumber string example: 20
            Sender street number to be printed on the letter as part of the sender address.
          • zipCode string example: 3000
            Sender zip code to be printed on the letter as part of the sender address.
          • city string example: Bern
            Sender city to be printed on the letter as part of the sender address.
Responses 6
201 Delivery preview created show body

application/json DeliveryResponseV2

  • id string
    The id of this delivery after created
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
415 Unsupported Media Type

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/preview/delivery-channels/{preview-id}/statuskey / tokenGet delivery channel preview status.
operationId

getDeliveryChannelPreviewStatus — the method name a generated client uses.

Parameters 1
NameDescription
preview-id required
path string
The id of the preview
example: 1
Responses 5
200 OK show body

application/json PreviewDeliveryChannelResponse

  • status object
    The status of preview delivery-channel.
  • previewChannels array of PreviewDeliveryChannel
    List response of delivery-channel preview.
    show fields

    Array of PreviewDeliveryChannel.

    • participantId string
      The participant id of the user that was delivered. Available for DIGITAL channel only.
    • billRecipientId string
      The bill recipient id of the user that was delivered. Available for EBILL channel only.
    • senderUserId string
      User id was defined by sender for each recipient
    • senderEndToEndId string
      End to end id defined by sender for each document
    • fileName string
      Name of document file uploaded
    • documentTitle string
      Document title
    • availableChannels array of string
      List of available channels that can be delivered for this recipient
      Allowed values: DIGITAL, PHYSICAL, SMS, EBILL, EMAIL
    • errorCode string
      Error code of preview delivery channel
    • errorMessage string
      Error message of preview delivery channel
400 Preview id is invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/preview/delivery-priceskey / tokenCreates a preview of all the available delivery channels without delivering any document.

Delivery size limit: 2GB

Each document size (binary + metadata) limit: 200MB

operationId

createDeliveryPricePreview — the method name a generated client uses.

Parameters 1
NameDescription
preview-option
query object
Specify should include 1st or all channels in the result.
Acceptable values:
ALL_AVAILABLE_CHANNELS include all channels in result
FIRST_AVAILABLE_CHANNEL include only first channel in result


ALL_AVAILABLE_CHANNELS is chosen by default
Request body

multipart/form-data PreviewDeliveryRequestV2

  • files array of string (binary)
  • largeFile object format: binary
    A binary file, users can push the binary via API document for testing.
    PDF binaries have to be delivered in the format PDF/A.
  • metadata object
    Metadata of one delivery v2 contain list metadata of files for preview service.
    show fields
    • costCenter string
      In each delivery, you can input the specific department name sending the delivery. In order to see the cost generated by each business unit/department in the invoice. This is an optional field and maximum of 1 value per each delivery is accepted.
    • fileMetadata array of DocumentMetadataV2ForPreviewService
      List of file's metadata
      show fields

      Array of DocumentMetadataV2ForPreviewService.

      • allCredentialShouldMatch boolean
        Decides if this document should be delivered to ONLY the recipients that have their credentials all matched or not.
        If not specified, then default value of TRUE is used.
        This flag is only considered for the DIGITAL delivery in ePost.
      • fileName string required
        Name of document file.
      • mediaType string example: application/vnd.ch.klara.epost.v1+iletter
        Indicate the specific media type of the document. For sending a standard classic letter like a PDF leave this field empty.
        Acceptable values:
        "application/vnd.ch.klara.epost.v1+simple_short_message" for simple short message. To send simple short message, leave the document type empty.
        "application/vnd.ch.klara.epost.v1+incamail" Please use SecureSend instead of IncaMail.
        "application/vnd.ch.klara.epost.v1+securesend" for SecureSend.
        "application/vnd.ch.klara.epost.v1+iletter" for iLetter. An iLetter document carries no binary file; provide the reference in digitalAdditionalInfo.iLetter instead.
        null for Physical delivery.
      • deliveryChannelPreferences array of string required write-only
        This value defines your preference & priority among delivery channels. It defines that your letter/message/document should be delivered via which one of the available channels. You can input more than one delivery channel.


        The order of delivery channels defines the priority of each channel. Meaning, at first we try to deliver via the first mentioned delivery channel, if it's unsuccessful, we would try via the second channel mentioned, and so on.


        If delivery is not successful via any of the delivery methods, then an error response will be returned to the sender.


        DIGITAL delivering it to the recipient's ePost letterbox (available for all types of documents/letters/messages)

        PHYSICAL printing and sending the letter physically (only specific pdf formats are accepted)

        SMS delivering the "simple short message" as a SMS to the recipient's mobile phone. (only for simple short message media type)

        EBILL delivering it to the recipient's eBill (available for invoice document type with pdf format)

        EMAIL delivering it to the recipient who using email

        AUTO will try to find most suitable one from all available channel in order like this (DIGITAL, SMS, EBILL, PHYSICAL, EMAIL) then do the delivering
        Allowed values: DIGITAL, PHYSICAL, SMS, AUTO, EBILL, EMAIL
      • senderName string write-only example: Canton Bern
        This value will be shown to the recipient as the delivery sender name.
      • senderEndToEndId string write-only
        This id provided by the sender. It helps the sender to reference the document during the whole process.
      • senderCaseId string write-only
        This id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documents
      • documentReferenceDate string (date) format: date write-only example: 1990-01-02
        This date is relevant for a document from a business point of view, it differs from the date at which the document is entered in the "KLARA Documents" system.
        For eBill, The business case date can not be more than 90 days in the past and it can not be in the future.
      • documentTitle string example: nameOfTheFile
        This title will be shown to the recipient of the delivery on the application.
      • documentDescription string example: Your health check invitation with questionnaire.
        A short description of the document shown to the recipient as a preview text.
      • documentTypes array of string write-only
        This is the types of the document. In order to send a simple short message, leave this field empty.
        Accepted values: message, invoice, contract, hr.
        Allowed values: message, invoice, contract, hr
      • recipients array of Recipient required minItems: 1
        Recipients's informations include hashed and unhashed datas for identity matching process.
        show fields

        Array of Recipient.

        • senderUserId string
          This id is for the sender to recognize the recipient.
        • hashedPrimaryCredential object example: email
          Type of the primary credential which is hashed.
        • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
          Value of the primary credential.
        • derivedHashedCredentials array of string
          These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
          Allowed values: birthDate
        • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
          This hash value is derived from the other value "hashedPrimaryValue".
        • unhashedCredentials object
          Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
          show fields
          • universalName string example: KLARA Business AG / Peter Muster
            If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
          • firstName string example: Peter
            First name of a recipient.
          • lastName string example: Muster
            Last name of a recipient.
          • companyName string example: KLARA
            If the tenant entry is a business customer, i.e a Company, enter the company name here.
          • companyUid string example: CHE-123.456.789
            If the tenant entry is a business customer, i.e a Company, enter the company UID here.
            In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • street string example: Bahnhofstrasse 10a
            Street name in the address of a recipient.
            As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
          • streetNumber string example: 20
            Street number in the address of a recipient.
          • zipCode string example: 3000
            Zip code in the address of a recipient.
          • city string example: Bern
            City in the address of a recipient.
          • email string example: peter.muster@gmail.com
            Email of a recipient.
            In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
          • mobileNumber string example: +41909112233
            Mobile number of the recipient.
            Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
          • birthDate string (date) format: date example: 1990-01-02
            Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
          • participantId string
            This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
          • clientLegacyId string
            This id is optional and is used to support legacy systems.
          • minimumLevelOfTrust object
            The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
          • socialSecurityNumber string example: 756.1234.5678.97
            Social security number of a recipient and must be unique.
          • taxId string example: 263125
            Tax ID of a recipient and must be unique.
          • postOfficeBoxNumber string example: 12
            Post office box number
          • postOfficeBoxZip string example: 1212
            Post office box zipcode
          • postOfficeBoxTownName string example: Vervey 1
            Post office box town name
          • unstructuredAddressLine01 string example: Peter Muster
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine02 string example: Bahnhofsstr 20
            If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
            If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
          • billRecipientId string example: 41010560425610173
            Bill recipient Id from eBill. Using in eBill channel only.
            In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
      • allRecipientsRequired boolean
        True if all recipients are required to be valid in case Digital channel otherwise not send to anyone and mark as failed.
        If this flag true we just consider Digital delivery channel.
      • displayDeliveredDocument boolean
        When this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitle
      • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
        The message content of the simple short message
      • ebillAdditionalInfo EbillAdditionalInfo
        Group of the eBill delivery information.
        show fields
        • dueDate string (date) format: date write-only example: 2022-12-22
          Due date of business case
        • paymentAmount number write-only example: 20
          Amount to be paid for the invoice document
        • qrReference string write-only example: RF012345QF67T8910UI123
          Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
      • emailAdditionalInfo EmailAdditionalInfo
        Group of the email delivery information.
        show fields
        • emailText string write-only example: Hello world.
          Content of the email.
        • emailHtml string write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>
          Content of the email in html format.
        • emailSubject string write-only example: your invoice from KLARA
          Subject of the email.
        • sender object
          Contain email and its name
          show fields
          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • replyTo array of AdditionalEmailInfo write-only
          Reply to the given emails.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • cc array of AdditionalEmailInfo write-only
          Sending email as cc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • bcc array of AdditionalEmailInfo write-only
          Sending email as bcc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • inlineImages array of EmailInlineImage
          Inline images of the email
          show fields

          Array of EmailInlineImage.

          • filename string required pattern: \S example: picture1.png
            filename of the inline image
          • base64 string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQ
            file content of the inline image as base64.
      • digitalAdditionalInfo DigitalAdditionalInfo
        Group of the digital delivery information.
        show fields
        • digitalDeliveryVariant object example: STANDARD
          Specifies the tier for the delivery via channel DIGITAL. This selection determines the availability of digital receipts, tracking capabilities, and recipient identification requirements. If digitalDeliveryVariant is omitted, the system defaults to 'STANDARD'.

          STANDARD: Standard digital delivery with proof of dispatch. Includes a digital timestamp and signature upon acceptance by ePost. [ePost Standard]
          NO_CONFIRMATION: Basic digital delivery. Provides a digital delivery without additional digital receipts or tracking features. [ePost Light]
          TRACKED: Enhanced delivery with retrieval tracking. Includes all features of STANDARD, plus 'Retrieval' and 'Non-retrieval' receipts to track if and when the recipient opened the message. [ePost Plus]
          REGISTERED: Full legal-grade digital registered mail. Includes all TRACKED features, as well as recipient acceptance/rejection tracking and mandatory Person Identification. Important note: 'minimumLevelOfTrust' must be set to GOLD for the recipient, as verification of the recipient as a person by an online identification process is prerequisite for ePost Registered. [ePost Registered]
        • letterAnswer string
          Specifies an optional recipient response option for the delivery via channel DIGITAL. When set to a supported value, the recipient is offered a corresponding action on the delivered document in the digital letterbox. This field is only considered for the DIGITAL channel; it is ignored for all other channels. Supported values are provisioned per agreement with ePost. If omitted, empty, or set to an unrecognised value, no response option is offered and the delivery proceeds normally.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
        • documentInfoByLanguage object
          Optional localised overwrite of the top-level documentTitle and documentDescription, keyed by uppercase language code (DE, FR, IT, EN). A recipient whose letterbox language has an entry is shown that entry's title and description instead of the top-level values; a recipient whose language has no entry is shown the top-level documentTitle and documentDescription. Relevant only for the DIGITAL channel.
          show fields
          • DE LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • FR LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • IT LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • EN LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
      • physicalAdditionalInfo object
        Additional info support for preview pricing service.
        show fields
        • duplex boolean default: false example: False
          If this flag is true, the Printer will print the document as both sides, otherwise just 1 side.
        • shippingCountry string default: CH example: CH
          The country which the sender customer can send letters to
          All acceptable country codes for shipping country.
        • envelopeSize object example: C5
          Size of the envelope (values: C4, C5, BOX, AUTO)
        • postage object example: A_POST
          Type of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)
        • qrInvoicePageNumber integer (int32) format: int32 default: 0 example: 0
          The qr Invoice page number
        • windowLocation object example: LEFT
          The position of the letter(values: LEFT, RIGHT)
        • coverPrinterLogoId string default: example: BKW.tif
          Optional field. This field is used to print your logo on the envelope by our printer partner. If you wish to do so, please contact the KLARA administrator.
        • attachment string default: example: myAttachment01.pdf
          Optional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.
        • senderAddress object
          Address to be printed on the letter as sender address. Optional (if no sender address is provided, the company address of the sender tenant will be printed on the letter as sender address).
          show fields
          • name string example: ePost Service AG
            Sender name to be printed on the letter as part of the sender address.
          • street string example: Bahnhofstrasse
            Sender street to be printed on the letter as part of the sender address.
          • streetNumber string example: 20
            Sender street number to be printed on the letter as part of the sender address.
          • zipCode string example: 3000
            Sender zip code to be printed on the letter as part of the sender address.
          • city string example: Bern
            Sender city to be printed on the letter as part of the sender address.
        • numberOfPage integer (int32) format: int32
          Number of document page should be provided if no file uploaded
      • forcedOnboarding object
        This object is optional. Defines whether all recipients of this document should be forced to register to ePost in order to receive this document. If the recipient is already registered to ePost, the normal delivery flow applies. If the recipient is not yet registered to ePost, we will send him an email asking him to register to ePost in order to receive the document. The document is stored for up to 60 days and will be delivered to the recipient as soon as he registers to ePost. After 60 days the delivery will expire.
        Reminder emails are sent to the recipient after 2, 25, 40 and 55 days.
        Forced onboarding is only available for the delivery channel DIGITAL. Additionally the unhashed credential EMAIL is required for forced onboarding (onboarding request email will be sent to this email address) and the minimum level of trust must be BRONZE.
        show fields
        • channel object example: EMAIL
          The channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.
        • language object example: EN
          Language of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.
        • emailToBeInformedWhenExpired string example: peter.muster@gmail.com
          This email address is used to inform the sender, in case the forced onboarding eLetter expires after 60 days (recipient didn't register) or should an error occur in the delivery of the forced onboarding eLetter.
Responses 6
201 Delivery pricing preview created show body

application/json DeliveryResponseV2

  • id string
    The id of this delivery after created
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
415 Unsupported Media Type

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/preview/delivery-prices/{preview-id}/statuskey / tokenGet delivery pricing preview status.
operationId

getDeliveryPricePreviewStatus — the method name a generated client uses.

Parameters 1
NameDescription
preview-id required
path string
The id of the preview
example: 1
Responses 6
200 OK show body

application/json PreviewDeliveryPricingResponse

  • status object
    The status of preview delivery pricing.
  • pricePreview array of PreviewPotentialPrice
    List price preview of single delivery.
    show fields

    Array of PreviewPotentialPrice.

    • participantId string
      The participant id of the user that was delivered. Available for DIGITAL channel only.
    • billRecipientId string
      The bill recipient id of the user that was delivered. Available for EBILL channel only.
    • senderUserId string
      User id was defined by sender for each recipient
    • senderEndToEndId string
      End to end id defined by sender for each document
    • fileName string
      Name of document file uploaded
    • documentTitle string
      Document title
    • potentialPrices array of PotentialPriceItem
      List of potential price for each single delivery
      show fields

      Array of PotentialPriceItem.

      • channel object
        Potential delivery channel
      • price number
        Total potential price for specific channel
      • errorCode string
        Error code
      • errorMessage string
        Reason can not preview price
    • errorCode string
      Error code of preview pricing service
    • errorMessage string
      Error message of preview pricing service
400 Preview id is invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Preview id is not found show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

ePost Communication Platform Monitoring1

GET/epost/deliveries/monitoringkey / tokenGet monitoring data for the deliveries.
operationId

listDeliveryMonitoringData — the method name a generated client uses.

Parameters 4
NameDescription
delivery-id
query integer (int64)
Filter recipient tracking base on the delivery id.
If this parameter is empty, the API will return the records for all deliveries.
format: int64
limit
query integer (int32)
Define the limit of the recipient tracking list that this API returns.
For example, if a sender have 10 recipient tracking in the database, and this limit parameter is 5, and the offset parameter is 0,
then this API will return the list containing the first 5 records
If not set, then default value of 48 is used
format: int32 default: 48
offset
query integer (int32)
Define which position to start getting recipient tracking list.
For example, if a user have 10 recipient tracking in the database, and this offset parameter is 5,
then this API will return recipient tracking list from the 5th record.
If not set, then default value of 0 is used
format: int32 default: 0
sort
query object
Sorting the list for getting newest (DESC) or oldest (ASC) results.
Responses 5
200 List of recipient tracking was returned show body

application/json array of RecipientTrackingDataResponse

Array of RecipientTrackingDataResponse.

  • id integer (int64) format: int64
  • deliveryId integer (int64) format: int64
  • deliveredTime string (date-time) format: date-time
  • createdTime string (date-time) format: date-time
  • costCenter string
  • documentTitle string
  • documentTypes array of string
    Allowed values: message, invoice, contract, hr
  • unhashedCredentials UnhashedCredential
    Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
    show fields
    • universalName string example: KLARA Business AG / Peter Muster
      If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
    • firstName string example: Peter
      First name of a recipient.
    • lastName string example: Muster
      Last name of a recipient.
    • companyName string example: KLARA
      If the tenant entry is a business customer, i.e a Company, enter the company name here.
    • companyUid string example: CHE-123.456.789
      If the tenant entry is a business customer, i.e a Company, enter the company UID here.
      In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
    • street string example: Bahnhofstrasse 10a
      Street name in the address of a recipient.
      As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
    • streetNumber string example: 20
      Street number in the address of a recipient.
    • zipCode string example: 3000
      Zip code in the address of a recipient.
    • city string example: Bern
      City in the address of a recipient.
    • email string example: peter.muster@gmail.com
      Email of a recipient.
      In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
    • mobileNumber string example: +41909112233
      Mobile number of the recipient.
      Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
    • birthDate string (date) format: date example: 1990-01-02
      Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
    • participantId string
      This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
    • clientLegacyId string
      This id is optional and is used to support legacy systems.
    • minimumLevelOfTrust object
      The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
    • socialSecurityNumber string example: 756.1234.5678.97
      Social security number of a recipient and must be unique.
    • taxId string example: 263125
      Tax ID of a recipient and must be unique.
    • postOfficeBoxNumber string example: 12
      Post office box number
    • postOfficeBoxZip string example: 1212
      Post office box zipcode
    • postOfficeBoxTownName string example: Vervey 1
      Post office box town name
    • unstructuredAddressLine01 string example: Peter Muster
      If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
    • unstructuredAddressLine02 string example: Bahnhofsstr 20
      If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
    • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
      If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
    • billRecipientId string example: 41010560425610173
      Bill recipient Id from eBill. Using in eBill channel only.
      In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
  • senderUserId string
  • cost number
  • channel string
  • status string
  • thirdPartyStatus string
  • thirdPartyErrorMessage string
  • errorCode string
  • deliveryChannelPreferences array of string
    Allowed values: DIGITAL, PHYSICAL, SMS, AUTO, EBILL, EMAIL
  • detail DetailInfo
    show fields
    • documentMetadata DocumentMetadataWithoutRecipients
      show fields
      • allCredentialShouldMatch boolean
      • fileName string
      • mediaType string
      • senderName string
      • senderEndToEndId string
      • senderCaseId string
      • documentReferenceDate string (date) format: date
      • documentTitle string
      • documentTypes array of string
      • allRecipientsRequired boolean
      • origin string
      • documentMessage string
      • ebillAdditionalInfo EbillAdditionalInfo
        Group of the eBill delivery information.
        show fields
        • dueDate string (date) format: date write-only example: 2022-12-22
          Due date of business case
        • paymentAmount number write-only example: 20
          Amount to be paid for the invoice document
        • qrReference string write-only example: RF012345QF67T8910UI123
          Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
      • emailAdditionalInfo EmailAdditionalInfo
        Group of the email delivery information.
        show fields
        • emailText string write-only example: Hello world.
          Content of the email.
        • emailHtml string write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>
          Content of the email in html format.
        • emailSubject string write-only example: your invoice from KLARA
          Subject of the email.
        • sender object
          Contain email and its name
          show fields
          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • replyTo array of AdditionalEmailInfo write-only
          Reply to the given emails.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • cc array of AdditionalEmailInfo write-only
          Sending email as cc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • bcc array of AdditionalEmailInfo write-only
          Sending email as bcc list.
          show fields

          Array of AdditionalEmailInfo.

          • email string write-only example: abc@klara.ch
            Email address
          • name string write-only example: ABC
            Name of email
        • inlineImages array of EmailInlineImage
          Inline images of the email
          show fields

          Array of EmailInlineImage.

          • filename string required pattern: \S example: picture1.png
            filename of the inline image
          • base64 string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQ
            file content of the inline image as base64.
      • physicalAdditionalInfo PhysicalAdditionalInfo1
        show fields
        • postage string
          Allowed values: A_POST, B_POST, B_POST_LARGEVOLUME, A_PLUS, REGISTERED
        • envelopeSize string
          Allowed values: C4, C5, BOX, AUTO
        • duplex boolean
        • windowLocation string
          Allowed values: LEFT, RIGHT
        • qrInvoicePageNumber integer (int32) format: int32
        • shippingCountry string
      • digitalAdditionalInfo DigitalAdditionalInfo
        Group of the digital delivery information.
        show fields
        • digitalDeliveryVariant object example: STANDARD
          Specifies the tier for the delivery via channel DIGITAL. This selection determines the availability of digital receipts, tracking capabilities, and recipient identification requirements. If digitalDeliveryVariant is omitted, the system defaults to 'STANDARD'.

          STANDARD: Standard digital delivery with proof of dispatch. Includes a digital timestamp and signature upon acceptance by ePost. [ePost Standard]
          NO_CONFIRMATION: Basic digital delivery. Provides a digital delivery without additional digital receipts or tracking features. [ePost Light]
          TRACKED: Enhanced delivery with retrieval tracking. Includes all features of STANDARD, plus 'Retrieval' and 'Non-retrieval' receipts to track if and when the recipient opened the message. [ePost Plus]
          REGISTERED: Full legal-grade digital registered mail. Includes all TRACKED features, as well as recipient acceptance/rejection tracking and mandatory Person Identification. Important note: 'minimumLevelOfTrust' must be set to GOLD for the recipient, as verification of the recipient as a person by an online identification process is prerequisite for ePost Registered. [ePost Registered]
        • letterAnswer string
          Specifies an optional recipient response option for the delivery via channel DIGITAL. When set to a supported value, the recipient is offered a corresponding action on the delivered document in the digital letterbox. This field is only considered for the DIGITAL channel; it is ignored for all other channels. Supported values are provisioned per agreement with ePost. If omitted, empty, or set to an unrecognised value, no response option is offered and the delivery proceeds normally.
        • iLetter object
          iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
          show fields
          • templateId string required maxLength: 128
            Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
          • batchId string maxLength: 128
            Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
          • confidentialResponses boolean
            Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
          • responseDeadline string
            Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
          • parameters array of ILetterParameter maxItems: 20
            Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
            show fields

            Array of ILetterParameter.

            • key string required maxLength: 64 pattern: \S
              Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
            • value string maxLength: 128
              The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
          • placeholders array of ILetterPlaceholder maxItems: 100
            Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
            show fields

            Array of ILetterPlaceholder.

            • key string required maxLength: 64 pattern: \S
              Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
            • value string maxLength: 2000
              Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
        • documentInfoByLanguage object
          Optional localised overwrite of the top-level documentTitle and documentDescription, keyed by uppercase language code (DE, FR, IT, EN). A recipient whose letterbox language has an entry is shown that entry's title and description instead of the top-level values; a recipient whose language has no entry is shown the top-level documentTitle and documentDescription. Relevant only for the DIGITAL channel.
          show fields
          • DE LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • FR LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • IT LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
          • EN LocalizedDocumentInfo
            show fields
            • title string example: Ihr Schadenfall
              Title shown to a recipient whose letterbox language matches this entry's key.
            • description string
              Description shown to a recipient whose letterbox language matches this entry's key.
    • matchedParticipantId string
    • deliveryStatus string
    • documentStatus string
    • documentErrorCode string
    • recipientStatus string
    • recipientErrorCode string
    • pricingList array of DetailPricing
      show fields

      Array of DetailPricing.

      • productCode string
      • productName string
      • price number
  • pricePlan string
  • businessStatusHistory array of BusinessStatusHistory
    The history of business status changes for this delivery, ordered from the oldest to the most recent status change.
    show fields

    Array of BusinessStatusHistory.

    • businessStatus object example: DELIVERED
      The business status of the delivery at this point in history.
    • changedAt string (date-time) format: date-time example: 2023-11-14T22:13:20Z
      The UTC timestamp when the business status changed.
    • triggeredByUserFirstName string example: John
      The first name of the user who triggered the status change.
    • triggeredByUserLastName string example: Doe
      The last name of the user who triggered the status change.
  • effectiveILetterParameters array of EffectiveILetterParameter
    The iLetter parameter key-value pairs actually used for this recipient: the recipient's own override where the sender supplied one, the document's value otherwise. Absent when the delivery carried no iLetter parameters.
    show fields

    Array of EffectiveILetterParameter.

    • key string example: claimId
      The parameter key.
    • value string example: CLM-2026-0042
      The value used for this key for this recipient.
  • effectiveILetterPlaceholders array of EffectiveILetterPlaceholder
    The iLetter placeholder key-value pairs supplied for this recipient: the recipient's own value where the sender supplied one, the document's value otherwise. Absent when the delivery carried no iLetter placeholders.
    show fields

    Array of EffectiveILetterPlaceholder.

    • key string example: claimNumber
      The placeholder key.
    • value string example: CLM-2026-000471
      The value supplied for this placeholder for this recipient.
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

Identity matching

Standard ePost Digital Letterbox Identity Matching4

POST/epost/v2/standard-matching-runskey / tokenStandard identity matching process.
Send metadata of your customers for matching them with ePost users. There is the possibility to hash the metadata before sending it. It isn't mandatory to send all data for identity matching, but the sent data has to be unique in it's combination.
operationId

createStandardMatchingRun — the method name a generated client uses.

Request body required
recipient's info

application/json RecipientInfo

  • recipients array of IdentityMatchingRecipient required minItems: 1 maxItems: 50000
    show fields

    Array of IdentityMatchingRecipient.

    • senderUserId string
      This id is for the sender to recognize the recipient.
    • hashedPrimaryCredential object example: email
      Type of the primary credential which is hashed.
    • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
      Value of the primary credential.
    • derivedHashedCredentials array of string
      These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
      Allowed values: birthDate
    • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
      This hash value is derived from the other value "hashedPrimaryValue".
    • unhashedCredentials object
      Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
      show fields
      • universalName string example: KLARA Business AG / Peter Muster
        If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
      • firstName string example: Peter
        First name of a recipient.
      • lastName string example: Muster
        Last name of a recipient.
      • companyName string example: KLARA
        If the tenant entry is a business customer, i.e a Company, enter the company name here.
      • companyUid string example: CHE-123.456.789
        If the tenant entry is a business customer, i.e a Company, enter the company UID here.
        In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • street string example: Bahnhofstrasse 10a
        Street name in the address of a recipient.
        As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
      • streetNumber string example: 20
        Street number in the address of a recipient.
      • zipCode string example: 3000
        Zip code in the address of a recipient.
      • city string example: Bern
        City in the address of a recipient.
      • email string example: peter.muster@gmail.com
        Email of a recipient.
        In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • mobileNumber string example: +41909112233
        Mobile number of the recipient.
        Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
      • birthDate string (date) format: date example: 1990-01-02
        Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • clientLegacyId string
        This id is optional and is used to support legacy systems.
      • minimumLevelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • socialSecurityNumber string example: 756.1234.5678.97
        Social security number of a recipient and must be unique.
      • taxId string example: 263125
        Tax ID of a recipient and must be unique.
      • postOfficeBoxNumber string example: 12
        Post office box number
      • postOfficeBoxZip string example: 1212
        Post office box zipcode
      • postOfficeBoxTownName string example: Vervey 1
        Post office box town name
      • unstructuredAddressLine01 string example: Peter Muster
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine02 string example: Bahnhofsstr 20
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
        If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • billRecipientId string example: 41010560425610173
        Bill recipient Id from eBill. Using in eBill channel only.
        In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
    • iLetter object
      iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
      show fields
      • templateId string required maxLength: 128
        Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
      • batchId string maxLength: 128
        Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
      • confidentialResponses boolean
        Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
      • responseDeadline string
        Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
      • parameters array of ILetterParameter maxItems: 20
        Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
        show fields

        Array of ILetterParameter.

        • key string required maxLength: 64 pattern: \S
          Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
        • value string maxLength: 128
          The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
      • placeholders array of ILetterPlaceholder maxItems: 100
        Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
        show fields

        Array of ILetterPlaceholder.

        • key string required maxLength: 64 pattern: \S
          Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
        • value string maxLength: 2000
          Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
    • allCredentialShouldMatch boolean
      Decides if the recipient should be strictly processed with all credentials matched or not.
      If not specified, then default value of TRUE will be used.
Responses 4
202 Request accepted no response body
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/standard-matching-runs/processing/{matching-run-id}key / tokenChecking matching process.
operationId

getStandardMatchingRunProgress — the method name a generated client uses.

Parameters 1
NameDescription
matching-run-id required
path string
Responses 5
200 Matching process is processing. show body

application/json StandardMatchingRunProcessResponse

  • status string
    Allowed values: PROCESSING, FINISHED
  • matchingResult StandardMatchingResponse
    show fields
    • matchedRecipients array of StandardRecipientResponse
      This list contain the recipient basic info which matched with given information.
      show fields

      Array of StandardRecipientResponse.

      • senderUserId string
        This id is for the sender to recognize the recipient.
      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • communityId string
        The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
    • nonMatchedSenderUserIds array of string
      This list contain the non-matched recipient.
303 Finished matching process. Then auto redirect to get matching result api /matching-runs/{matching-run-id} and return matching result. no response body
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/standard-matching-runs/{matching-run-id}key / tokenGet all of matching results from matching run id.
operationId

getStandardMatchingRunResult — the method name a generated client uses.

Parameters 1
NameDescription
matching-run-id required
path string
Responses 4
200 Retrieve successfully. The matching status could be processing or finished. show body

application/json StandardMatchingRunProcessResponse

  • status string
    Allowed values: PROCESSING, FINISHED
  • matchingResult StandardMatchingResponse
    show fields
    • matchedRecipients array of StandardRecipientResponse
      This list contain the recipient basic info which matched with given information.
      show fields

      Array of StandardRecipientResponse.

      • senderUserId string
        This id is for the sender to recognize the recipient.
      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • communityId string
        The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
    • nonMatchedSenderUserIds array of string
      This list contain the non-matched recipient.
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/standard-matchingskey / tokenIdentity matching process. Standard version just return the user's basic information.
Send metadata of your customers for matching them with ePost users. The limit size of the metadata is 5 There is the possibility to hash the metadata before sending it. It isn't mandatory to send all data for identity matching, but the sent data has to be unique in it's combination.
operationId

matchStandardRecipients — the method name a generated client uses.

Request body

application/json RecipientInfo

  • recipients array of IdentityMatchingRecipient required minItems: 1 maxItems: 50000
    show fields

    Array of IdentityMatchingRecipient.

    • senderUserId string
      This id is for the sender to recognize the recipient.
    • hashedPrimaryCredential object example: email
      Type of the primary credential which is hashed.
    • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
      Value of the primary credential.
    • derivedHashedCredentials array of string
      These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
      Allowed values: birthDate
    • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
      This hash value is derived from the other value "hashedPrimaryValue".
    • unhashedCredentials object
      Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
      show fields
      • universalName string example: KLARA Business AG / Peter Muster
        If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
      • firstName string example: Peter
        First name of a recipient.
      • lastName string example: Muster
        Last name of a recipient.
      • companyName string example: KLARA
        If the tenant entry is a business customer, i.e a Company, enter the company name here.
      • companyUid string example: CHE-123.456.789
        If the tenant entry is a business customer, i.e a Company, enter the company UID here.
        In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • street string example: Bahnhofstrasse 10a
        Street name in the address of a recipient.
        As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
      • streetNumber string example: 20
        Street number in the address of a recipient.
      • zipCode string example: 3000
        Zip code in the address of a recipient.
      • city string example: Bern
        City in the address of a recipient.
      • email string example: peter.muster@gmail.com
        Email of a recipient.
        In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • mobileNumber string example: +41909112233
        Mobile number of the recipient.
        Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
      • birthDate string (date) format: date example: 1990-01-02
        Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • clientLegacyId string
        This id is optional and is used to support legacy systems.
      • minimumLevelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • socialSecurityNumber string example: 756.1234.5678.97
        Social security number of a recipient and must be unique.
      • taxId string example: 263125
        Tax ID of a recipient and must be unique.
      • postOfficeBoxNumber string example: 12
        Post office box number
      • postOfficeBoxZip string example: 1212
        Post office box zipcode
      • postOfficeBoxTownName string example: Vervey 1
        Post office box town name
      • unstructuredAddressLine01 string example: Peter Muster
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine02 string example: Bahnhofsstr 20
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
        If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • billRecipientId string example: 41010560425610173
        Bill recipient Id from eBill. Using in eBill channel only.
        In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
    • iLetter object
      iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
      show fields
      • templateId string required maxLength: 128
        Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
      • batchId string maxLength: 128
        Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
      • confidentialResponses boolean
        Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
      • responseDeadline string
        Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
      • parameters array of ILetterParameter maxItems: 20
        Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
        show fields

        Array of ILetterParameter.

        • key string required maxLength: 64 pattern: \S
          Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
        • value string maxLength: 128
          The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
      • placeholders array of ILetterPlaceholder maxItems: 100
        Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
        show fields

        Array of ILetterPlaceholder.

        • key string required maxLength: 64 pattern: \S
          Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
        • value string maxLength: 2000
          Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
    • allCredentialShouldMatch boolean
      Decides if the recipient should be strictly processed with all credentials matched or not.
      If not specified, then default value of TRUE will be used.
Responses 4
200 Get matched users show body

application/json array of StandardMatchingResponse

Array of StandardMatchingResponse.

  • matchedRecipients array of StandardRecipientResponse
    This list contain the recipient basic info which matched with given information.
    show fields

    Array of StandardRecipientResponse.

    • senderUserId string
      This id is for the sender to recognize the recipient.
    • participantId string
      This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
    • communityId string
      The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
  • nonMatchedSenderUserIds array of string
    This list contain the non-matched recipient.
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

ePost Digital LetterBox Identity Matching with detailed recipient feedback5

POST/epost/v2/matching-runskey / tokenIdentity matching process.
Send metadata of your customers for matching them with ePost users. There is the possibility to hash the metadata before sending it. It isn't mandatory to send all data for identity matching, but the sent data has to be unique in it's combination.

The access to this API request is restricted, because it returns detailed information about whether a credential has been matched or not. Against a fee you are able to use this detailed identity matching API. Please get in touch with an administrator to get more information.
operationId

createMatchingRun — the method name a generated client uses.

Request body required
recipient's info

application/json RecipientInfo

  • recipients array of IdentityMatchingRecipient required minItems: 1 maxItems: 50000
    show fields

    Array of IdentityMatchingRecipient.

    • senderUserId string
      This id is for the sender to recognize the recipient.
    • hashedPrimaryCredential object example: email
      Type of the primary credential which is hashed.
    • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
      Value of the primary credential.
    • derivedHashedCredentials array of string
      These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
      Allowed values: birthDate
    • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
      This hash value is derived from the other value "hashedPrimaryValue".
    • unhashedCredentials object
      Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
      show fields
      • universalName string example: KLARA Business AG / Peter Muster
        If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
      • firstName string example: Peter
        First name of a recipient.
      • lastName string example: Muster
        Last name of a recipient.
      • companyName string example: KLARA
        If the tenant entry is a business customer, i.e a Company, enter the company name here.
      • companyUid string example: CHE-123.456.789
        If the tenant entry is a business customer, i.e a Company, enter the company UID here.
        In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • street string example: Bahnhofstrasse 10a
        Street name in the address of a recipient.
        As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
      • streetNumber string example: 20
        Street number in the address of a recipient.
      • zipCode string example: 3000
        Zip code in the address of a recipient.
      • city string example: Bern
        City in the address of a recipient.
      • email string example: peter.muster@gmail.com
        Email of a recipient.
        In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • mobileNumber string example: +41909112233
        Mobile number of the recipient.
        Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
      • birthDate string (date) format: date example: 1990-01-02
        Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • clientLegacyId string
        This id is optional and is used to support legacy systems.
      • minimumLevelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • socialSecurityNumber string example: 756.1234.5678.97
        Social security number of a recipient and must be unique.
      • taxId string example: 263125
        Tax ID of a recipient and must be unique.
      • postOfficeBoxNumber string example: 12
        Post office box number
      • postOfficeBoxZip string example: 1212
        Post office box zipcode
      • postOfficeBoxTownName string example: Vervey 1
        Post office box town name
      • unstructuredAddressLine01 string example: Peter Muster
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine02 string example: Bahnhofsstr 20
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
        If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • billRecipientId string example: 41010560425610173
        Bill recipient Id from eBill. Using in eBill channel only.
        In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
    • iLetter object
      iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
      show fields
      • templateId string required maxLength: 128
        Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
      • batchId string maxLength: 128
        Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
      • confidentialResponses boolean
        Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
      • responseDeadline string
        Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
      • parameters array of ILetterParameter maxItems: 20
        Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
        show fields

        Array of ILetterParameter.

        • key string required maxLength: 64 pattern: \S
          Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
        • value string maxLength: 128
          The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
      • placeholders array of ILetterPlaceholder maxItems: 100
        Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
        show fields

        Array of ILetterPlaceholder.

        • key string required maxLength: 64 pattern: \S
          Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
        • value string maxLength: 2000
          Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
    • allCredentialShouldMatch boolean
      Decides if the recipient should be strictly processed with all credentials matched or not.
      If not specified, then default value of TRUE will be used.
Responses 4
202 Request accepted show body

application/json MatchingRunResultLocation

  • matchingRunResultLocation string
    Contains the URL location to get the matching run result
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/matching-runs/processing/{matching-run-id}key / tokenChecking matching process.
operationId

getMatchingRunProgress — the method name a generated client uses.

Parameters 1
NameDescription
matching-run-id required
path string
Responses 5
200 Matching process is processing. show body

application/json MatchingRunProcessResponse

  • status string
    Allowed values: PROCESSING, FINISHED
  • matchingResult MatchingResponse
    show fields
    • matchedRecipients array of MatchedRecipient
      This list contain the recipient info which matched with given information.
      show fields

      Array of MatchedRecipient.

      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • senderUserId string
        This id is for the sender to recognize the recipient.
      • levelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • notMatchCredentials array of string example: [EMAIl, MOBILE_NUMBER]
        The list credentials not matched.
      • errorMessage string
        The error message of matching services (if any)
      • communityId string
        The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
    • nonMatchedRecipients array of MatchedRecipient
      This list contain the non-matched recipient with the error message corresponding.
      show fields

      Array of MatchedRecipient.

      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • senderUserId string
        This id is for the sender to recognize the recipient.
      • levelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • notMatchCredentials array of string example: [EMAIl, MOBILE_NUMBER]
        The list credentials not matched.
      • errorMessage string
        The error message of matching services (if any)
      • communityId string
        The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
303 Finished matching process. Then auto redirect to get matching result api /matching-runs/{matching-run-id} and return matching result. no response body
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/matching-runs/{matching-run-id}key / tokenGet all of matching results from matching run id.
operationId

getMatchingRunResult — the method name a generated client uses.

Parameters 1
NameDescription
matching-run-id required
path string
Responses 4
200 Retrieve successfully. The matching status could be processing or finished. show body

application/json MatchingRunProcessResponse

  • status string
    Allowed values: PROCESSING, FINISHED
  • matchingResult MatchingResponse
    show fields
    • matchedRecipients array of MatchedRecipient
      This list contain the recipient info which matched with given information.
      show fields

      Array of MatchedRecipient.

      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • senderUserId string
        This id is for the sender to recognize the recipient.
      • levelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • notMatchCredentials array of string example: [EMAIl, MOBILE_NUMBER]
        The list credentials not matched.
      • errorMessage string
        The error message of matching services (if any)
      • communityId string
        The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
    • nonMatchedRecipients array of MatchedRecipient
      This list contain the non-matched recipient with the error message corresponding.
      show fields

      Array of MatchedRecipient.

      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • senderUserId string
        This id is for the sender to recognize the recipient.
      • levelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • notMatchCredentials array of string example: [EMAIl, MOBILE_NUMBER]
        The list credentials not matched.
      • errorMessage string
        The error message of matching services (if any)
      • communityId string
        The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/matchingskey / tokenIdentity matching process.
Send metadata of your customers for matching them with ePost users. The limit size of the metadata is 5 There is the possibility to hash the metadata before sending it. It isn't mandatory to send all data for identity matching, but the sent data has to be unique in it's combination.

The access to this API request is restricted, because it returns detailed information about whether a credential has been matched or not. Against a fee you are able to use this detailed identity matching API. Please get in touch with an administrator to get more information.
operationId

matchRecipients — the method name a generated client uses.

Request body

application/json RecipientInfo

  • recipients array of IdentityMatchingRecipient required minItems: 1 maxItems: 50000
    show fields

    Array of IdentityMatchingRecipient.

    • senderUserId string
      This id is for the sender to recognize the recipient.
    • hashedPrimaryCredential object example: email
      Type of the primary credential which is hashed.
    • hashedPrimaryValue string example: adu7adsfnn3489asdfn334jk
      Value of the primary credential.
    • derivedHashedCredentials array of string
      These are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.
      Allowed values: birthDate
    • derivedHashedValue string example: adu7adsfnn3489asdfn334jk
      This hash value is derived from the other value "hashedPrimaryValue".
    • unhashedCredentials object
      Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
      show fields
      • universalName string example: KLARA Business AG / Peter Muster
        If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
      • firstName string example: Peter
        First name of a recipient.
      • lastName string example: Muster
        Last name of a recipient.
      • companyName string example: KLARA
        If the tenant entry is a business customer, i.e a Company, enter the company name here.
      • companyUid string example: CHE-123.456.789
        If the tenant entry is a business customer, i.e a Company, enter the company UID here.
        In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • street string example: Bahnhofstrasse 10a
        Street name in the address of a recipient.
        As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
      • streetNumber string example: 20
        Street number in the address of a recipient.
      • zipCode string example: 3000
        Zip code in the address of a recipient.
      • city string example: Bern
        City in the address of a recipient.
      • email string example: peter.muster@gmail.com
        Email of a recipient.
        In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
      • mobileNumber string example: +41909112233
        Mobile number of the recipient.
        Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
      • birthDate string (date) format: date example: 1990-01-02
        Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
      • participantId string
        This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
      • clientLegacyId string
        This id is optional and is used to support legacy systems.
      • minimumLevelOfTrust object
        The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
      • socialSecurityNumber string example: 756.1234.5678.97
        Social security number of a recipient and must be unique.
      • taxId string example: 263125
        Tax ID of a recipient and must be unique.
      • postOfficeBoxNumber string example: 12
        Post office box number
      • postOfficeBoxZip string example: 1212
        Post office box zipcode
      • postOfficeBoxTownName string example: Vervey 1
        Post office box town name
      • unstructuredAddressLine01 string example: Peter Muster
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine02 string example: Bahnhofsstr 20
        If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
        If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
      • billRecipientId string example: 41010560425610173
        Bill recipient Id from eBill. Using in eBill channel only.
        In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
    • iLetter object
      iLetter reference parameters supplied per file under digitalAdditionalInfo when the file is an iLetter document. Set mediaType to "application/vnd.ch.klara.epost.v1+iletter" and provide templateId to send an interactive iLetter created from that Template; such a document carries no file binary. On a document with any other mediaType this object has no effect: no iLetter is created or touched and the delivery is neither rejected nor altered.
      show fields
      • templateId string required maxLength: 128
        Id of the iLetter Template used to create the iLetter to send. Required for every iLetter document sent through this API. Applies only to iLetter documents; ignored on other document types.
      • batchId string maxLength: 128
        Optional iLetter batch id. Deliveries with the same batchId share one iLetter record: sending the same batchId again appends the new recipients to the existing iLetter instead of creating a new one. If omitted, this delivery always creates its own new iLetter, and a resend of a failed delivery updates that same iLetter rather than creating a second one.
      • confidentialResponses boolean
        Whether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.
      • responseDeadline string
        Date and time by which recipients are asked to answer, as an ISO-8601 instant with UTC offset, for example 2026-10-31T21:59:59Z. Passed on exactly as supplied. Absent means no deadline.
      • parameters array of ILetterParameter maxItems: 20
        Default values for this document's iLetter URL parameters, appended to the letter's data-source calls; one entry per key, at most 20 entries. A recipient may override individual keys under recipients[].iLetter.parameters; per key the recipient's value applies when supplied, otherwise this document-level value. A recipient left without a value for a required key fails with ILETTER_PARAMETER_REQUIRED_VALUE_MISSING naming the key; a key the Template does not declare fails with ILETTER_PARAMETER_KEY_UNKNOWN.
        show fields

        Array of ILetterParameter.

        • key string required maxLength: 64 pattern: \S
          Must match a SENDER_PARAMETER key declared on the iLetter's data sources. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens.
        • value string maxLength: 128
          The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
      • placeholders array of ILetterPlaceholder maxItems: 100
        Values for the letter's text placeholders, substituted into the letter text; one entry per key, applied to every recipient of this document. A recipient may override individual keys under recipients[].iLetter.placeholders; per key the recipient's value applies when supplied, otherwise this value. At most 100 entries per level, values of at most 2000 characters; a document over these limits is rejected with ILETTER_PLACEHOLDER_LIMIT_EXCEEDED. A value for a key the letter does not define is ignored. Unlike a missing URL parameter, a recipient left without a value for a required placeholder does not reject the request: that recipient ends in a failed status with ILETTER_PLACEHOLDER_REQUIRED_VALUE_MISSING naming the key, and the other recipients are delivered.
        show fields

        Array of ILetterPlaceholder.

        • key string required maxLength: 64 pattern: \S
          Key of a placeholder defined on the letter. At most 64 characters; starts with a letter or underscore, followed by letters, digits, underscores or hyphens. A key the letter does not define is ignored.
        • value string maxLength: 2000
          Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
    • allCredentialShouldMatch boolean
      Decides if the recipient should be strictly processed with all credentials matched or not.
      If not specified, then default value of TRUE will be used.
Responses 4
200 Get matched users show body

application/json array of MatchingResponse

Array of MatchingResponse.

  • matchedRecipients array of MatchedRecipient
    This list contain the recipient info which matched with given information.
    show fields

    Array of MatchedRecipient.

    • participantId string
      This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
    • senderUserId string
      This id is for the sender to recognize the recipient.
    • levelOfTrust object
      The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
    • notMatchCredentials array of string example: [EMAIl, MOBILE_NUMBER]
      The list credentials not matched.
    • errorMessage string
      The error message of matching services (if any)
    • communityId string
      The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
  • nonMatchedRecipients array of MatchedRecipient
    This list contain the non-matched recipient with the error message corresponding.
    show fields

    Array of MatchedRecipient.

    • participantId string
      This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
    • senderUserId string
      This id is for the sender to recognize the recipient.
    • levelOfTrust object
      The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
    • notMatchCredentials array of string example: [EMAIl, MOBILE_NUMBER]
      The list credentials not matched.
    • errorMessage string
      The error message of matching services (if any)
    • communityId string
      The recipient's community ID (Matrix ID) for individual tenants active in the ePost community. Omitted when the recipient is not an individual or has no community account.
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/recipientskey / tokenGet hashed metadata from ePost users for matching lookup.
operationId

listMatchingLookupRecipients — the method name a generated client uses.

Parameters 5
NameDescription
minimum-level-of-trust required
query object
The minimum LOT that sender want to filter the result. Ex: SILVER
primary-credential required
query object
The primary value that sender want to get a hashed value. Possible values: email|mobilenumber|postaladdress
limit
query integer (int32)
format: int32 max: 1000 default: 100
min-timestamp
query string
The minimum timestamp that sender want to filter the result. Ex: 2021-04-14T01:27:05.382Z
default: 2021-04-14T01:27:05.382Z
offset
query integer (int32)
format: int32 default: 0
Responses 1
200 Retrieve successfully. show body

application/json MatchingLookup

  • recipients array of MatchingLookupRecipient
    show fields

    Array of MatchingLookupRecipient.

    • hashedPrimaryValue string
    • levelOfTrust string
  • _links MatchingLookupLink
    The link use for matching look up.
    show fields
    • self Link
      Link metadata
      show fields
      • href string
    • next Link
      Link metadata
      show fields
      • href string

Digital letterbox

ePost Digital Letterbox13

GET/epost/v2/letterskey / tokenGet letters of current user.
operationId

listLetters — the method name a generated client uses.

Parameters 13
NameDescription
letter-types required
query array of string
Filter letters with this media type
Acceptable values:
CLASSIC_LETTER for classic letters
SMART_LETTER for smart letters
SMART_LETTER_ANSWER for smart letter answers
SIMPLE_SHORT_MESSAGE for simple short message
INCAMAIL for IncaMail
SECURESEND for SecureSend

CLASSIC_LETTER is chosen by default
Allowed values: CLASSIC_LETTER, SMART_LETTER, SMART_LETTER_ANSWER, SIMPLE_SHORT_MESSAGE, INCAMAIL, SECURESEND
default: CLASSIC_LETTER
from-date
query string
Filter letters with the send date (yyyy-MM-dd). Letters were sent since 'from-date' value will be return.
Both from-date and to-date need to be specified to filter letters within a time period.
Example: 2021-10-01
is-business-tenant
query boolean
letter-folder
query object
Filter letters in specific folder
Acceptable values:
INBOX_FOLDER for inbox letters
SENT_FOLDER for outbox letters


INBOX_FOLDER is chosen by default
limit
query integer (int32)
Define the limit of the letter list that this API returns.
For example, if a user have 20 letters in their inbox, and this limit parameter is 5, and the offset parameter is 0,
then this API will return letter list containing the first 5 letters
If not set, then default value of 48 is used
format: int32 min: 1 max: 1000 default: 48
offset
query integer (int32)
Define which position to start getting letter list.
For example, if a user have 20 letters in their inbox, and this offset parameter is 5,
then this API will return letter list from the 5th letter.
If not set, then default value of 0 is used
format: int32 min: 0 default: 0
read-status
query object
Filter letters with read status
Acceptable values:
READ for read letters
UNREAD for unread letters
ALL for all letters
ALL is chosen by default
senderCaseId
query string
Filter letters with sender case id
senderEndToEndId
query string
Filter letters with sender end to end id
senderParticipantId
query string
Filter letters with sender participant id
senderUserId
query string
Filter letters with sender user id
to-date
query string
Filter letters with the send date (yyyy-MM-dd). Letters were sent before 'to-date' value will be return
Both from-date and to-date need to be specified to filter letters within a time period.
Example: 2021-10-01
with-reminder
query boolean
Responses 6
200 Retrieve letters successfully. show body

application/json array of Letter

Array of Letter.

  • id string read-only example: 1
    Id of the letter.
  • letterTitle string example: eVoting questionnaire
    This is the letter title.
  • fileName string example: invoice.pdf
    This is the name of the reference file of the letter.
  • senderParticipantId string example: b0f742a3-0a54-401d-bf41-38a3a9628953
    The participant id of the sender.
  • senderUserId string example: 84332810
    The sender user id of the letter.
  • senderCaseId string example: 8wq2d8ca
    The sender case id of the letter.
  • senderEndToEndId string example: 4ffdec250928157ec24ef24716468b0f25f074e6
    The sender end to end id of the letter.
  • documentTypes array of string
    Types of the letter's document.
  • letterContentReference string example: https://api.klara.ch/epost/v2/letters/1/content
    This is the reference link that user can use to get to content of the letter.
  • letterType object example: CLASSIC_LETTER
    The letter type.
  • receivedDateTime string example: 2021-09-29T04:21:10.163Z
    The date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.
  • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
    The message content of the simple short message
  • description string example: Monthly invoice file
    Free-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.
  • readStatus object example: READ
    The read status of the document.
  • remainingDayToDelete integer (int64) format: int64 example: 30
    The remaining days before permanently delete
  • registeredStatus string example: PENDING | ACCEPTED | LEGALLY_ACCEPTED
    The current registration status
  • eLetterRegistered boolean example: true/false
    Letter is registered or not
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/letters/deletedkey / tokenGet deleted letters and its remaining days to be permanently deleted.
operationId

listDeletedLetters — the method name a generated client uses.

Parameters 3
NameDescription
limit
query integer (int32)
Define the limit of the letter list that this API returns.
For example, if a user have 20 letters in their inbox, and this limit parameter is 5, and the offset parameter is 0,
then this API will return letter list containing the first 5 letters
If not set, then default value of 48 is used
format: int32 min: 1 max: 1000 default: 48
offset
query integer (int32)
Define which position to start getting letter list.
For example, if a user have 20 letters in their inbox, and this offset parameter is 5,
then this API will return letter list from the 5th letter.
If not set, then default value of 0 is used
format: int32 min: 0 default: 0
sender-participant-id
query string
Filter count letters from a specific sender by their participant id. Example: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
Responses 6
200 Retrieve deleted letters successfully. show body

application/json array of Letter

Array of Letter.

  • id string read-only example: 1
    Id of the letter.
  • letterTitle string example: eVoting questionnaire
    This is the letter title.
  • fileName string example: invoice.pdf
    This is the name of the reference file of the letter.
  • senderParticipantId string example: b0f742a3-0a54-401d-bf41-38a3a9628953
    The participant id of the sender.
  • senderUserId string example: 84332810
    The sender user id of the letter.
  • senderCaseId string example: 8wq2d8ca
    The sender case id of the letter.
  • senderEndToEndId string example: 4ffdec250928157ec24ef24716468b0f25f074e6
    The sender end to end id of the letter.
  • documentTypes array of string
    Types of the letter's document.
  • letterContentReference string example: https://api.klara.ch/epost/v2/letters/1/content
    This is the reference link that user can use to get to content of the letter.
  • letterType object example: CLASSIC_LETTER
    The letter type.
  • receivedDateTime string example: 2021-09-29T04:21:10.163Z
    The date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.
  • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
    The message content of the simple short message
  • description string example: Monthly invoice file
    Free-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.
  • readStatus object example: READ
    The read status of the document.
  • remainingDayToDelete integer (int64) format: int64 example: 30
    The remaining days before permanently delete
  • registeredStatus string example: PENDING | ACCEPTED | LEGALLY_ACCEPTED
    The current registration status
  • eLetterRegistered boolean example: true/false
    Letter is registered or not
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/letters/inbox/countkey / tokenGet the inbox unread letters count of the current user.
operationId

getInboxUnreadCount — the method name a generated client uses.

Parameters 1
NameDescription
sender-participant-id
query string
Filter count letters from a specific sender by their participant id. Example: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
Responses 6
200 Retrieve letters count successfully. show body

application/json integer (int32)

401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/letters/readkey / tokenUpdate the READ/UNREAD status for selected letters. The default status is READ.
operationId

updateLettersReadStatus — the method name a generated client uses.

Request body required
Letters marked as READ/UNREAD

application/json ReadLetters

  • readStatus object required example: READ
    Marked the given letters as READ/UNREAD status. Default is READ
  • letterIds array of string required
    Letter ids
Responses 7
200 Successful operation show body

application/json object

  • processed_count integer (int32) format: int32
  • skipped_count integer (int32) format: int32
  • failed_count integer (int32) format: int32
  • results array of LetterReadUnreadResult
    show fields

    Array of LetterReadUnreadResult.

    • letter_id string
    • status string
    • reason string
207 Partial success show body

application/json object

  • processed_count integer (int32) format: int32
  • skipped_count integer (int32) format: int32
  • failed_count integer (int32) format: int32
  • results array of LetterReadUnreadResult
    show fields

    Array of LetterReadUnreadResult.

    • letter_id string
    • status string
    • reason string
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
DELETE/epost/v2/letters/{letter-id}key / tokenDelete letter
Delete letter by letter id
operationId

deleteLetter — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
Id of the letter needed to be deleted
example: 1
Responses 5
204 Successful operation no response body
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/letters/{letter-id}key / tokenGet a letter of current user with given id.
operationId

getLetter — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
The id of the letter
example: 1
Responses 6
200 Retrieve letter successfully. show body

application/json Letter

  • id string read-only example: 1
    Id of the letter.
  • letterTitle string example: eVoting questionnaire
    This is the letter title.
  • fileName string example: invoice.pdf
    This is the name of the reference file of the letter.
  • senderParticipantId string example: b0f742a3-0a54-401d-bf41-38a3a9628953
    The participant id of the sender.
  • senderUserId string example: 84332810
    The sender user id of the letter.
  • senderCaseId string example: 8wq2d8ca
    The sender case id of the letter.
  • senderEndToEndId string example: 4ffdec250928157ec24ef24716468b0f25f074e6
    The sender end to end id of the letter.
  • documentTypes array of string
    Types of the letter's document.
  • letterContentReference string example: https://api.klara.ch/epost/v2/letters/1/content
    This is the reference link that user can use to get to content of the letter.
  • letterType object example: CLASSIC_LETTER
    The letter type.
  • receivedDateTime string example: 2021-09-29T04:21:10.163Z
    The date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.
  • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
    The message content of the simple short message
  • description string example: Monthly invoice file
    Free-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.
  • readStatus object example: READ
    The read status of the document.
  • remainingDayToDelete integer (int64) format: int64 example: 30
    The remaining days before permanently delete
  • registeredStatus string example: PENDING | ACCEPTED | LEGALLY_ACCEPTED
    The current registration status
  • eLetterRegistered boolean example: true/false
    Letter is registered or not
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/letters/{letter-id}/acceptkey / tokenAccept a letter by id.
operationId

acceptLetter — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
Id of the letter to accept
example: 656d961f852ea03ec718ab5d
Responses 4
204 Successful operation no response body
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
PATCH/epost/v2/letters/{letter-id}/archivekey / tokenArchive a letter from Letterbox to the root or to a specific folder in Storage.
If the letter is already archived and in the Storage, the exception will be thrown.
operationId

archiveLetter — the method name a generated client uses.

Parameters 2
NameDescription
letter-id required
path string
The ID of the letter to archive
example: 6461ba8d85f2cb38c91b82d4
destination-directory-id
query string
Destination folder id. If empty, the letter will be stored in the root storage.
example: 637b04533b81694d793c2159
Responses 4
204 Store letter successfully. no response body
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/letters/{letter-id}/contentkey / tokenGet the content of a letter with given id.
operationId

getLetterContent — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
The id of the letter
example: 1
Responses 6
200 OK show body

application/octet-stream, application/json object

401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/letters/{letter-id}/rejectkey / tokenReject a letter by id.
operationId

rejectLetter — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
Id of the letter to reject
example: 656d961f852ea03ec718ab5d
Responses 4
204 Successful operation no response body
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/letters/{letter-id}/restorekey / tokenRestore a letter being deleted from inbox by letter id.
Recover letter by letter id
operationId

restoreLetter — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
Id of the letter needed to be restored
example: 656d961f852ea03ec718ab5d
Responses 5
204 Successful operation no response body
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/letters/{letter-id}/thumbnailkey / tokenGet thumbnail of a letter with given id.
Thumbnail is returned as an stream of bytes with JPEG image format. Default image size is 90x128 pixels.
operationId

getLetterThumbnail — the method name a generated client uses.

Parameters 1
NameDescription
letter-id required
path string
Id of the letter to get the thumbnail for.
example: 65e7e536aae6544ca8dce48f
Responses 6
200 Retrieve the letter thumbnail successfully. show body

application/octet-stream object

401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

ePost Digital Letterbox Onboarding and Profile Management1

POST/epost/onboardingkey / tokenImproves users's onboarding experience and add credentials
Generate a link or QR code on which interacted/scanned, the actions defined in the request body will be executed.
The response output is decided by the Accept header of the request
If a value of "text/html" is entered in the Accept header, a response with "text/html" media type is returned containing the URL.
If a value of "image/png" is entered in the Accept header, a response with "image/png" media type is returned containing the QR code.
Verification score of the credentials Accept value 0 or 50.
Only one credential has verification score in the request body.
operationId

createOnboardingQrCode — the method name a generated client uses.

Parameters 1
NameDescription
encrypt-token
query boolean
Indicate that if the encryption is required for the token part of the response URL.
Should be true when the token payload contains recipient's credentials.
default: False
Request body required

application/json Onboarding

  • pinBrandedFolder boolean
  • addingCredential object
    After user scan the qr code, these address and credentials data will be added to user account in mobile app.
    show fields
    • othercredentials array of QrCodeCredential
      List of credentials to be add to user account, who scan the qr code.
      show fields

      Array of QrCodeCredential.

      • name object required example: EMAIL
        Name of an qr code credential. Valid values: MOBILE, TAX_ID, EMAIL
      • value string required example: peter.muster@gmail.com
        Value of an qr code credential.
      • verificationScore integer (int32) format: int32 example: 0
        Verification score
    • address object
      After user scan the qr code, this address data will be added to user account in mobile app.
      show fields
      • type object required example: POSTAL
        Type of an qr code address. Valid values: PO_BOX, POSTAL
      • firstName string required example: Peter
        First name of an address.
      • lastName string required example: Muster
        Last name of an address.
      • street string example: Bahnhofstrasse
        Street name of an address.
      • streetNumber string example: 20
        Street number of an address.
      • zipCode string example: 3000
        Zip code of an address.
      • city string example: Bern
        City code of an address.
      • additionalAddressLine string example: additional address info
        Additional to an address.
      • postOfficeBoxNumber string example: 12
        Post office box number
      • postOfficeBoxZip string example: 1212
        Post office box zipcode
      • postOfficeBoxTownName string example: Vervey 1
        Post office box town name
      • verificationScore integer (int32) format: int32 example: 50
        Verification score
      • gender string example: male
        Gender of address's owner. Allow values: "male", "female"
Responses 6
201 QR code or Link generated successfully. show body

image/png, application/json any

text/html;charset=UTF-8, application/json any

401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

Archive

ePost eArchive3

GET/epost/v2/archives/directorieskey / tokenGet all folders (branded folders, unbranded folders and subfolders) in the Storage
operationId

listArchiveFolders — the method name a generated client uses.

Responses 4
200 Retrieve folders successfully. show body

application/json array of Directory

Array of Directory.

  • directoryId string read-only example: 6406a0a6f000d7555cfffb92
    Id of the directory. Empty for branded directory.
  • directoryName string example: Working
    Name of the directory
  • numberOfDocuments integer (int32) format: int32 example: 10
    Number of documents in the directory
  • parentDirectoryIds array of string
    The parent folder's IDs of the folder. Empty if the folder is in the root storage.
  • hasSubDirectories boolean example: True
    Flag indicating whether the folder has subdirectories.
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/v2/archives/letterskey / tokenGet letters in root storage or in a specific folder.
operationId

listArchiveLetters — the method name a generated client uses.

Parameters 3
NameDescription
directory-id
query string
The ID of the folder to get for letters. If empty, it will get letters in the root storage.
example: 637b04533b81694d793c2159
limit
query integer (int32)
Define the limit of the letter list that this API returns.
For example, if a user have 20 letters in their inbox, and this limit parameter is 5, and the offset parameter is 0,
then this API will return letter list containing the first 5 letters
If not set, then default value of 48 is used
format: int32 min: 1 max: 1000 default: 48
offset
query integer (int32)
Define which position to start getting letter list.
For example, if a user have 20 letters in their inbox, and this offset parameter is 5,
then this API will return letter list from the 5th letter.
If not set, then default value of 0 is used
format: int32 min: 0 default: 0
Responses 4
200 Retrieve letters successfully. show body

application/json array of Letter

Array of Letter.

  • id string read-only example: 1
    Id of the letter.
  • letterTitle string example: eVoting questionnaire
    This is the letter title.
  • fileName string example: invoice.pdf
    This is the name of the reference file of the letter.
  • senderParticipantId string example: b0f742a3-0a54-401d-bf41-38a3a9628953
    The participant id of the sender.
  • senderUserId string example: 84332810
    The sender user id of the letter.
  • senderCaseId string example: 8wq2d8ca
    The sender case id of the letter.
  • senderEndToEndId string example: 4ffdec250928157ec24ef24716468b0f25f074e6
    The sender end to end id of the letter.
  • documentTypes array of string
    Types of the letter's document.
  • letterContentReference string example: https://api.klara.ch/epost/v2/letters/1/content
    This is the reference link that user can use to get to content of the letter.
  • letterType object example: CLASSIC_LETTER
    The letter type.
  • receivedDateTime string example: 2021-09-29T04:21:10.163Z
    The date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.
  • documentMessage string example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new one
    The message content of the simple short message
  • description string example: Monthly invoice file
    Free-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.
  • readStatus object example: READ
    The read status of the document.
  • remainingDayToDelete integer (int64) format: int64 example: 30
    The remaining days before permanently delete
  • registeredStatus string example: PENDING | ACCEPTED | LEGALLY_ACCEPTED
    The current registration status
  • eLetterRegistered boolean example: true/false
    Letter is registered or not
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/v2/archives/uploadkey / tokenUploads a document to the ePost archive of the authenticated tenant together with its metadata.

Uploads a document to the ePost archive of the authenticated tenant together with its metadata.

The request contains the binary file and document metadata. After a successful upload, the document is stored in the tenant's ePost archive and can be accessed through the archive.

operationId

uploadArchiveDocument — the method name a generated client uses.

Request body required

multipart/form-data ArchiveUploadRequest

  • file object format: binary
    A binary file, users can push the binary via API document for testing.
    PDF binaries have to be delivered in the format PDF/A.
  • metadata object
    metadata
    show fields
    • fileName string required pattern: \S example: sample.xlsx
      Original file name (with extension).
    • documentTitle string required pattern: \S example: sample
      Display title shown in eArchive.
    • documentReferenceDate string required pattern: \S example: 2026-05-06
      Reference date of the document in ISO local-date format (yyyy-MM-dd).
    • documentTypes array of string
      Document types (free-form tags such as invoice, receipt, contract, HR). Defaults to an empty list when omitted.
    • senderName string example: ABC AG
      Display name of the sender.
    • description string example: Invoice file
      Display description shown in eArchive.
  • directoryIds array of string
    The IDs of the archive directories in which the uploaded document should be stored.
    All provided directory IDs must belong to the authenticated tenant. If no directory ID is provided, the document is stored without a directory assignment.
Responses 9
201 Document uploaded successfully. show body

application/json ArchiveUploadResponse

  • documentId string example: 6a028c8e3a805659063bde2f
    Identifier of the newly archived document.
  • fileName string example: Invoice_2026_05_08.pdf
    File name of the stored document (post sanitization).
  • documentTitle string example: Invoice 2026-05-08
    Display title of the archived document.
  • documentReferenceDate string example: 2026-05-08
    Reference date of the document (yyyy-MM-dd).
  • description string example: Monthly partner export for invoicing reconciliation
    Display description of the archived document.

    Sourced from the BFF response field documentDescription and renamed here to description so the public API uses one consistent term across request and response.
  • directoryIds array of string
    Directory ids the document is stored in, as resolved by the eArchive backend (after permission checks and root-directory normalization). Omitted when the document is stored at the root.

    Sourced from the BFF response field folderIds and renamed here to directoryIds so the public API uses one consistent term across request and response.
  • createdBy string example: kiendong2411@axongroupio.ch
    User identifier (typically email) that created the document.
  • createdDate string example: 2026-05-12T02:12:30.691Z
    Creation timestamp in ISO-8601 format (UTC).
  • updatedBy string example: kiendong2411@axongroupio.ch
    User identifier (typically email) of the last update. Equal to createdBy on initial upload.
  • updatedDate string example: 2026-05-12T02:12:30.691Z
    Last update timestamp in ISO-8601 format (UTC). Equal to createdDate on initial upload.
  • link object
    Resource link references for the archived document.
    show fields
    • self string example: 064f1c76-ed3e-4d3d-800b-9195e13edcbe/documents/6a028c8e3a805659063bde2f
      Self link to the archived document, relative to the eArchive backend ({tenantId}/documents/{documentId}).
  • versionNumber integer (int32) format: int32 example: 1
    Monotonically increasing version number of the document. Starts at 1 on initial upload.
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 The current user is not allowed to access this company data

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
411 Length required — the request did not advertise a numeric, non-negative Content-Length. Chunked transfer encoding is not supported on this endpoint.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
413 Request entity too large — payload exceeds the 1GB ceiling.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
415 Unsupported Media Type

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

Signing

ePost Sign10

GET/epost/signing/billing-allowlistkey / tokenList the calling company's billing allowlist.
Returns the individual ePost users the calling company has authorised to charge a signing request to it. Only reachable for a COMPANY tenant managing its own allowlist; an entry existing here IS the authorization — there is no separate company role to hold.
operationId

listBillingAllowlist — the method name a generated client uses.

Responses 5
200 The company's current allowlist entries (possibly empty). show body

application/json array of BillingAllowlistEntry

Array of BillingAllowlistEntry.

  • id string (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
    Server-assigned unique identifier of this allowlist entry. Pass this value as entry-id on DELETE /signing/billing-allowlist/{entry-id} to remove it.
  • userEmail string example: jane.doe@example.com
    Email of the individual ePost user authorised to bill signing requests to this company.
  • userParticipantId string nullable example: c56a24e3-55af-4d96-8cf3-8c127116efc5
    ePost participantId resolved for userEmail at the time this entry was added.
  • createdAt string (date-time) format: date-time example: 2026-10-01T10:03:34Z
    Creation timestamp (ISO 8601).
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed, or the calling tenant is not a COMPANY tenant.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/signing/billing-allowlistkey / tokenAuthorise an individual ePost user to bill signing requests to the calling company.
Adds email to the calling company's billing allowlist. The email must resolve to exactly one existing ePost user holding an INDIVIDUAL account. Idempotent: re-adding an email already on the allowlist is a no-op and returns the existing entry. Only reachable for a COMPANY tenant managing its own allowlist.
operationId

addBillingAllowlistEntry — the method name a generated client uses.

Request body required
The individual ePost user's email to authorise.

application/json BillingAllowlistAddRequest

  • email string required pattern: \S example: jane.doe@example.com
    Email of the individual ePost user to authorise. Must resolve to exactly one existing ePost user holding an INDIVIDUAL account.
Responses 8
201 Entry authorised. show body

application/json BillingAllowlistEntry

  • id string (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
    Server-assigned unique identifier of this allowlist entry. Pass this value as entry-id on DELETE /signing/billing-allowlist/{entry-id} to remove it.
  • userEmail string example: jane.doe@example.com
    Email of the individual ePost user authorised to bill signing requests to this company.
  • userParticipantId string nullable example: c56a24e3-55af-4d96-8cf3-8c127116efc5
    ePost participantId resolved for userEmail at the time this entry was added.
  • createdAt string (date-time) format: date-time example: 2026-10-01T10:03:34Z
    Creation timestamp (ISO 8601).
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed, or the calling tenant is not a COMPANY tenant.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 No ePost user exists with the given email.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
422 The email matches more than one ePost account (ambiguous), or the request body failed validation.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
DELETE/epost/signing/billing-allowlist/{entry-id}key / tokenRemove an entry from the calling company's billing allowlist.
Revokes the authorization: the referenced individual ePost user may no longer charge a signing request to the calling company. Does not affect already-submitted signing processes — billToCompanyTenantId is fixed on the process at creation and never re-checked. Only reachable for a COMPANY tenant managing its own allowlist.
operationId

removeBillingAllowlistEntry — the method name a generated client uses.

Parameters 1
NameDescription
entry-id required
path string (uuid)
Server-assigned unique identifier of the allowlist entry to remove, as returned by GET /signing/billing-allowlist or POST /signing/billing-allowlist.
format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
Responses 6
204 Entry removed. no response body
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed, or the calling tenant is not a COMPANY tenant.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 No such entry exists for the calling company.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/signing/billing-companieskey / tokenList companies the authenticated user may bill a signing to.
Returns the companies the authenticated user is allowed to charge a signing request to — i.e. where the user holds the DOCUMENT_SIGN_BILLING company role in the KLARA web client role system. Used by the UI to render the selection. A user can hold the role in several companies. The returned companyTenantId values are valid inputs for billToCompanyTenantId on POST /signing/processes. luz-documentSign only checks the role and holds no own mapping; revoking the role later does not affect already-submitted processes.
operationId

listSigningBillingCompanies — the method name a generated client uses.

Responses 5
200 Companies the user may bill to. show body

application/json array of BillingCompany

Array of BillingCompany.

  • companyTenantId string example: c60d31fa-f335-4957-872a-90b035632081
    Tenant id of the company. Pass this value as billToCompanyTenantId on submission.
  • name string example: Muster AG
    Company name — display value only.
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/signing/processeskey / tokenList signing processes of the calling tenant.
Returns a lightweight page of signing processes belonging to the calling tenant: creator, title, optional description, status, deadline and creation timestamp. Use GET /signing/processes/{processId} for the full view. Access requires the ePost Sign widget subscription.
operationId

listSigningProcesses — the method name a generated client uses.

Parameters 3
NameDescription
limit
query integer
Maximum number of items per page. Defaults to 25, capped at 200.
max: 200 default: 25 example: 25
offset
query integer
Number of items to skip from the start of the result set. Defaults to 0. Page (zero-based) n is offset = n * limit; the total item count is returned as total in the response.
min: 0 default: 0 example: 0
status
query string
Optional filter on lifecycle status. Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED. If omitted, all processes are returned.
Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED
example: IN_PROGRESS
Responses 5
200 A page of signing processes. show body

application/json SigningProcessListResponse

  • items array of object
    Page of signing processes belonging to the calling tenant.
    show fields

    Array of object.

    • processId string (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
      Unique identifier of the signing process.
    • submittedBy object
      Who the signing request came from (creator).
      show fields
      • pid string nullable example: c60d31fa-f335-4957-872a-90b035632081
        Internal ePost id of the resolved tenant. null while the tenant cannot yet be resolved (e.g. forced onboarding pending).
      • name string nullable example: Anna Muster
        Name as used within the signing process / signature itself (verified name applied at signing). null while unresolved.
    • title string example: Rental contract Bahnhofstrasse 12
      Title of the signing request.
    • description string nullable example: Please sign by the end of the month.
      Optional description.
    • status object example: IN_PROGRESS
      Current lifecycle status.
      Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED
    • deadline string (date) format: date example: 2026-12-31
      Signing deadline (ISO 8601).
    • createdAt string (date-time) format: date-time example: 2026-08-13T09:15:30Z
      Creation timestamp (ISO 8601).
  • total integer (int64) format: int64 example: 137
    Total number of signing processes matching the filter, across all pages.
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/epost/signing/processeskey / tokenSubmit a document for signing and create a signing process.
Submits exactly ONE document to be signed and creates a signing process. Uses multipart/form-data analogous to POST /epost/v2/deliveries: a file part (the PDF) and a metadata JSON part (SigningProcessCreateRequest). The document is stored, a slot per participant is created, and the signature document is made available to each participant in the signing room. Participants without an ePost account receive a forced-onboarding email when forceOnboarding = true AND the credential is an email address (onboarded users can complete only SES). Returns the created process id and its initial status; full details via GET /signing/processes/{processId}. Access requires the ePost Sign widget subscription. Billing a signing to a company requires the DOCUMENT_SIGN_BILLING company role in the KLARA web client role system on the paying company.
operationId

createSigningProcess — the method name a generated client uses.

Parameters 1
NameDescription
Idempotency-Key
header string
Client-generated key that prevents duplicate process creation on retries. Optional: if omitted, retries may create a duplicate process. Same key + same payload returns the original result; same key + different payload → HTTP 409.
example: d3f4c2b1-9a8b-4c8b-8a5f-7c8b9a1e2d34
Request body required
Multipart body with exactly two parts:
  • file — the PDF to be signed (application/pdf). Exactly ONE file per process. Size limit: 200 MB per document. Requests advertising a larger Content-Length are rejected with HTTP 413 (SIGNING_UPLOAD_TOO_LARGE) before the body is buffered; missing / malformed Content-Length is rejected with HTTP 411 (SIGNING_CONTENT_LENGTH_REQUIRED).
  • metadata — application/json body of type SigningProcessCreateRequest.

How to fill metadata:
  • title (required, ≤ 255) — shown in the list and the signing room.
  • description (optional, ≤ 2000).
  • signatureType (required) — one of SES, AES, QES. Locked after creation.
  • participants (required, ≥ 1) — must contain at least one ADMIN, at least one SIGNER, AND at least one RECEIVER (the signed document is delivered strictly to RECEIVER participants; a request without one is rejected with HTTP 422). See ParticipantInput.
  • mode (optional, default PARALLEL) — locked after creation.
  • deadline (required, ISO date).
  • documentHandling (optional) — allowPrint / allowSave both default to false.
  • forceOnboarding (required) — only effective when the participant credential is an email address.
  • billToCompanyTenantId (optional) — retrieve eligible values via GET /signing/billing-companies. Requires the DOCUMENT_SIGN_BILLING company role on the referenced company.

multipart/form-data SigningProcessMultipartForm

  • file object format: binary
    A binary file, users can push the binary via API document for testing.
    PDF binaries have to be delivered in the format PDF/A.
  • metadata object
    The SigningProcessCreateRequest metadata JSON — see the field-by-field guide in the operation description.
    show fields
    • title string required maxLength: 255 pattern: \S example: Rental contract Bahnhofstrasse 12
      Title of the signing request. Shown to participants in the signing room and in the process list.
    • description string maxLength: 2000 example: Please sign by the end of the month.
      Optional free-form description shown next to the title.
    • signatureType object required example: SES
      SwissSign signature type. Locked once the process is created.
      Allowed values: SES, AES, QES
    • participants array of object required minItems: 1
      Participants of the process. Must contain at least one ADMIN (the creator) and at least one SIGNER.
      show fields

      Array of object.

      • roles array of string required minItems: 1
        One or more roles the participant holds in this process. Must contain at least one role. Every process must contain at least one ADMIN and at least one SIGNER.
        Allowed values: ADMIN, SIGNER, RECEIVER
      • senderUserId string example: user-42
        Optional sender-user reference forwarded to the signing room and to the audit log.
      • hashedPrimaryCredential string example: email
        Which credential is hashed as the primary key (e.g. email, mobileNumber).
      • hashedPrimaryValue string example: 5f4dcc3b5aa765d61d8327deb882cf99
        Hash of the primary credential value. Used for privacy-preserving matching.
      • derivedHashedCredentials array of string
        Names of the additional credentials mixed into the derived hash (e.g. ["birthDate"]).
      • derivedHashedValue string example: b4a9b3f1c8d0e2a5f6b7c8d9e0a1b2c3
        Hash of the derived credential combination.
      • unhashedCredentials object
        Full participant credentials — submission only. Never returned by GET endpoints. Reuses the shared UnhashedCredential DTO used elsewhere in the public API (e.g. ePost deliveries).
        show fields
        • universalName string example: KLARA Business AG / Peter Muster
          If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
        • firstName string example: Peter
          First name of a recipient.
        • lastName string example: Muster
          Last name of a recipient.
        • companyName string example: KLARA
          If the tenant entry is a business customer, i.e a Company, enter the company name here.
        • companyUid string example: CHE-123.456.789
          If the tenant entry is a business customer, i.e a Company, enter the company UID here.
          In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
        • street string example: Bahnhofstrasse 10a
          Street name in the address of a recipient.
          As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
        • streetNumber string example: 20
          Street number in the address of a recipient.
        • zipCode string example: 3000
          Zip code in the address of a recipient.
        • city string example: Bern
          City in the address of a recipient.
        • email string example: peter.muster@gmail.com
          Email of a recipient.
          In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
        • mobileNumber string example: +41909112233
          Mobile number of the recipient.
          Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
        • birthDate string (date) format: date example: 1990-01-02
          Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
        • participantId string
          This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
        • clientLegacyId string
          This id is optional and is used to support legacy systems.
        • minimumLevelOfTrust object
          The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
        • socialSecurityNumber string example: 756.1234.5678.97
          Social security number of a recipient and must be unique.
        • taxId string example: 263125
          Tax ID of a recipient and must be unique.
        • postOfficeBoxNumber string example: 12
          Post office box number
        • postOfficeBoxZip string example: 1212
          Post office box zipcode
        • postOfficeBoxTownName string example: Vervey 1
          Post office box town name
        • unstructuredAddressLine01 string example: Peter Muster
          If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
        • unstructuredAddressLine02 string example: Bahnhofsstr 20
          If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
        • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
          If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
        • billRecipientId string example: 41010560425610173
          Bill recipient Id from eBill. Using in eBill channel only.
          In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
      • allCredentialShouldMatch boolean default: false example: False
        If true, every supplied credential MUST match to resolve the participant. If false, any one matching credential is sufficient. Defaults to false.
      • sequenceIndex integer (int32) format: int32 min: 1 example: 1
        1-based order of this participant when the process runs in SEQUENTIAL mode. Ignored in PARALLEL mode.
      • signatureFields array of SignatureField
        Optional signature field positions for this participant. Empty = SwissSign default placement.
        show fields

        Array of SignatureField.

        • fieldName string example: SignatureField_1
          Logical name of the signature field on the PDF form (matches the AcroForm field name when present).
        • pageIndex integer (int32) format: int32 min: 0 example: 0
          Zero-based index of the PDF page the field is placed on.
        • x number (double) format: double example: 72
          X coordinate of the field's lower-left corner (PDF points).
        • y number (double) format: double example: 144
          Y coordinate of the field's lower-left corner (PDF points).
        • width number (double) format: double example: 180
          Width of the field (PDF points).
        • height number (double) format: double example: 48
          Height of the field (PDF points).
    • mode object default: PARALLEL example: PARALLEL
      Signing order strategy. Defaults to PARALLEL. Locked once the process is created.
      Allowed values: PARALLEL, SEQUENTIAL
    • deadline string (date) required format: date pattern: \S example: 2026-12-31
      Absolute date by which every required signature must have been collected (ISO 8601).
    • documentHandling object
      Restrictions applied to the document while the process is running.
      show fields
      • allowPrint boolean default: false example: False
        Whether participants may print the document from the signing room. Defaults to false.
      • allowSave boolean default: false example: False
        Whether participants may download / save the document from the signing room. Defaults to false.
    • forceOnboarding boolean required example: True
      Whether to trigger a forced-onboarding email for participants that do not yet exist on ePost. Required. Only effective when the participant credential is an email address; ignored otherwise. Onboarded users can complete only SES.
    • billToCompanyTenantId string example: c60d31fa-f335-4957-872a-90b035632081
      Optional company tenant id to bill this signing to ("send for a company"). The acting user must hold the DOCUMENT_SIGN_BILLING company role in the KLARA web client role system on the referenced company; otherwise the request is rejected with 403. Retrieve eligible companies via GET /signing/billing-companies. The acting user/tenant remains the sender; the company only takes over billing.
Responses 9
202 Signing process accepted and created. show body

application/json SigningProcessCreated

  • processId string (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
    Server-assigned unique identifier of the signing process.
  • status object example: CREATED
    Initial lifecycle status of the process.
    Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED
400 Data invalid

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed, or caller lacks the DOCUMENT_SIGN_BILLING role on the requested billing company.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
411 Content-Length header missing, blank, malformed or negative (chunked transfer encoding is not supported on this endpoint).

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
413 Request body exceeds the 200 MB upload ceiling.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
422 Validation failed on the metadata part.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/signing/processes/{processId}key / tokenGet a signing process — submitted data plus current signing status.
Returns the data submitted on POST plus the signing status: who has already signed and who has not. The name shown is the one used within the signing process / signature itself — per CISO, no additional profile data is resolved from ePost. Deliberately NOT returned: the full unhashedCredentials (personal-data protection) and the document payload (use GET /signing/processes/{processId}/document).
operationId

getSigningProcess — the method name a generated client uses.

Parameters 1
NameDescription
processId required
path string (uuid)
Server-assigned unique identifier of the signing process.
format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
Responses 6
200 Current state of the signing process. show body

application/json SigningProcess

  • processId string (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
    Unique identifier of the signing process.
  • title string example: Rental contract Bahnhofstrasse 12
    Title of the signing request.
  • description string nullable example: Please sign by the end of the month.
    Optional description.
  • submittedBy object
    Who the signing request came from.
    show fields
    • pid string nullable example: c60d31fa-f335-4957-872a-90b035632081
      Internal ePost id of the resolved tenant. null while the tenant cannot yet be resolved (e.g. forced onboarding pending).
    • name string nullable example: Anna Muster
      Name as used within the signing process / signature itself (verified name applied at signing). null while unresolved.
  • signatureType object example: SES
    Chosen signature type. Locked at creation.
    Allowed values: SES, AES, QES
  • mode object example: PARALLEL
    Signing order strategy. Locked at creation.
    Allowed values: PARALLEL, SEQUENTIAL
  • deadline string (date) format: date example: 2026-12-31
    Signing deadline (ISO 8601).
  • documentHandling object
    Restrictions applied to the document during the process.
    show fields
    • allowPrint boolean default: false example: False
      Whether participants may print the document from the signing room. Defaults to false.
    • allowSave boolean default: false example: False
      Whether participants may download / save the document from the signing room. Defaults to false.
  • forceOnboarding boolean example: True
    Whether forced onboarding was requested for unresolved email participants.
  • status object example: IN_PROGRESS
    Current lifecycle status.
    Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED
  • deliveryState object example: PARTIAL
    Delivery/orchestration state of the process side effects (independent of status).
    Allowed values: PENDING, IN_PROGRESS, PARTIAL, COMPLETE, FAILED
  • signedCount integer (int32) format: int32 example: 1
    Number of participants that have already signed.
  • pendingCount integer (int32) format: int32 example: 2
    Number of participants still outstanding (PENDING / FORCED_ONBOARDING).
  • participants array of object
    Participants with their current signing status.
    show fields

    Array of object.

    • internalTrackingId string (uuid) format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2
      Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant on PATCH.
    • participantId string nullable example: c60d31fa-f335-4957-872a-90b035632081
      Internal ePost id of the resolved tenant. null while the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).
    • name string nullable example: Anna Muster
      Name as used within the signing process / signature itself. null while unresolved. Per CISO, no additional profile data from ePost is exposed here.
    • roles array of string
      Role(s) held by this participant within the process.
      Allowed values: ADMIN, SIGNER, RECEIVER
    • status object example: PENDING
      Current signing status of this participant.
      Allowed values: PENDING, FORCED_ONBOARDING, SIGNED, REJECTED, EXPIRED, REMOVED, NOT_REQUIRED, FULFILLED_BY_OTHER
    • deliveryStatus object nullable example: DELIVERED
      Delivery progress of the initial document to this participant, independent of the signing status above.
      Allowed values: PENDING, DELIVERED, ONBOARDING_SENT, NOT_DELIVERED, FAILED
    • recipientDeliveryStatus object nullable example: DELIVERED
      Delivery progress of the final signed document to this participant once the process completes, independent of deliveryStatus above (which only covers the initial document).
      Allowed values: PENDING, DELIVERED, ONBOARDING_SENT, SUBMITTER_FALLBACK, SKIPPED_NO_RECIPIENT, FAILED
    • hashedPrimaryValue string nullable example: 5f4dcc3b5aa765d61d8327deb882cf99
      Correlates the returned participant with the hash the caller submitted.
    • signedByUserEmail string nullable example: anna.muster@example.ch
      Email of the ePost account in whose name the signature was made (account owner). null before signing.
    • effectiveSignerUserEmail string nullable example: delegate@example.ch
      Email of the user who actually signed (e.g. a shared-account user). null before signing.
    • sequenceIndex integer (int32) format: int32 nullable example: 1
      1-based order (SEQUENTIAL mode). null in PARALLEL mode.
    • rejectedReason string nullable example: Wrong recipient
      Reason provided when the participant refused to sign. null otherwise.
    • signedAt string (date-time) format: date-time nullable example: 2026-09-01T14:22:07Z
      Timestamp at which the participant signed (ISO 8601). null before signing.
    • occupied boolean example: False
      Whether the signing room is currently held (locked) by this participant.
  • document object
    Metadata of the submitted document (never the payload).
    show fields
    • fileName string example: rental-contract.pdf
      Original file name of the uploaded document.
    • contentType string example: application/pdf
      MIME type of the document.
    • sizeBytes integer (int64) format: int64 example: 154382
      Size of the document in bytes.
    • currentVersion integer (int32) format: int32 example: 2
      Current document version. Increments with each collected signature.
  • createdAt string (date-time) format: date-time example: 2026-08-13T09:15:30Z
    Creation timestamp (ISO 8601).
  • completedAt string (date-time) format: date-time nullable example: 2026-09-05T11:03:19Z
    Timestamp at which every required signature was collected. null while incomplete.
  • deleteAt string (date-time) format: date-time nullable example: 2026-12-04T09:15:30Z
    When the process/document will be finally deleted. Retention per CISO: open + signed documents 90 days; cancelled/deactivated processes 30 days; audit/process metadata 12 months.
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
PATCH/epost/signing/processes/{processId}key / tokenUpdate a running signing process (ADMIN-only).
ADMIN-only update of a running signing process. Callable by the process creator or by any active participant that holds the ADMIN role. All fields on the body are optional; only the fields the caller wishes to change need to be sent. Fields set to null are treated as "no change".

Editable fields: title, description, deadline (must be strictly in the future), documentHandling.allowPrint / documentHandling.allowSave. Field-level diffing is applied and an audit trail entry (PROCESS_UPDATED) is written only when at least one value actually changed.

Locked at creation (never patchable through this endpoint): signatureType, mode, participants (participants have their own PATCH endpoint), forceOnboarding, billToCompanyTenantId.

Lifecycle: only status = CANCELLED is accepted — deactivates the process (SwissSign signaturesCancelProcessing), records a PROCESS_CANCELLED audit trail entry, schedules the process for deletion, delivers the partially-signed document to RECEIVER participants and notifies SIGNER / ADMIN participants. Any other status value is rejected with HTTP 400. Updates against a process in COMPLETED, CANCELLED or EXPIRED are rejected with HTTP 409. Callers that are not an ADMIN participant of this process receive HTTP 404 (the existence of the process is not disclosed). Access requires the ePost Sign widget subscription.
operationId

updateSigningProcess — the method name a generated client uses.

Parameters 1
NameDescription
processId required
path string (uuid)
Server-assigned unique identifier of the signing process.
format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
Request body required
Partial update. Send only the fields to change. Field-level diffing is applied downstream.

application/json SigningProcessUpdate

  • title string maxLength: 255 example: Rental contract Bahnhofstrasse 12 (v2)
    New title shown to participants in the signing room and in the process list. Omit to keep the current title.
  • description string maxLength: 2000 example: Please sign by the end of next week.
    New free-form description. Omit to keep the current description; send an empty string to clear it.
  • deadline string (date) format: date example: 2027-01-31
    New absolute deadline (ISO 8601). Must be strictly in the future. Omit to keep the current deadline.
  • documentHandling object
    New document-handling restrictions. Omit to keep the current values; when supplied, replaces the current values as a whole.
    show fields
    • allowPrint boolean default: false example: False
      Whether participants may print the document from the signing room. Defaults to false.
    • allowSave boolean default: false example: False
      Whether participants may download / save the document from the signing room. Defaults to false.
  • status object example: CANCELLED
    Only CANCELLED is accepted — deactivates the process (SwissSign signaturesCancelProcessing). Any other value results in HTTP 400.
    Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED
Responses 9
200 Updated signing process. show body

application/json SigningProcess

  • processId string (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
    Unique identifier of the signing process.
  • title string example: Rental contract Bahnhofstrasse 12
    Title of the signing request.
  • description string nullable example: Please sign by the end of the month.
    Optional description.
  • submittedBy object
    Who the signing request came from.
    show fields
    • pid string nullable example: c60d31fa-f335-4957-872a-90b035632081
      Internal ePost id of the resolved tenant. null while the tenant cannot yet be resolved (e.g. forced onboarding pending).
    • name string nullable example: Anna Muster
      Name as used within the signing process / signature itself (verified name applied at signing). null while unresolved.
  • signatureType object example: SES
    Chosen signature type. Locked at creation.
    Allowed values: SES, AES, QES
  • mode object example: PARALLEL
    Signing order strategy. Locked at creation.
    Allowed values: PARALLEL, SEQUENTIAL
  • deadline string (date) format: date example: 2026-12-31
    Signing deadline (ISO 8601).
  • documentHandling object
    Restrictions applied to the document during the process.
    show fields
    • allowPrint boolean default: false example: False
      Whether participants may print the document from the signing room. Defaults to false.
    • allowSave boolean default: false example: False
      Whether participants may download / save the document from the signing room. Defaults to false.
  • forceOnboarding boolean example: True
    Whether forced onboarding was requested for unresolved email participants.
  • status object example: IN_PROGRESS
    Current lifecycle status.
    Allowed values: CREATED, IN_PROGRESS, COMPLETED, EXPIRED, CANCELLED
  • deliveryState object example: PARTIAL
    Delivery/orchestration state of the process side effects (independent of status).
    Allowed values: PENDING, IN_PROGRESS, PARTIAL, COMPLETE, FAILED
  • signedCount integer (int32) format: int32 example: 1
    Number of participants that have already signed.
  • pendingCount integer (int32) format: int32 example: 2
    Number of participants still outstanding (PENDING / FORCED_ONBOARDING).
  • participants array of object
    Participants with their current signing status.
    show fields

    Array of object.

    • internalTrackingId string (uuid) format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2
      Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant on PATCH.
    • participantId string nullable example: c60d31fa-f335-4957-872a-90b035632081
      Internal ePost id of the resolved tenant. null while the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).
    • name string nullable example: Anna Muster
      Name as used within the signing process / signature itself. null while unresolved. Per CISO, no additional profile data from ePost is exposed here.
    • roles array of string
      Role(s) held by this participant within the process.
      Allowed values: ADMIN, SIGNER, RECEIVER
    • status object example: PENDING
      Current signing status of this participant.
      Allowed values: PENDING, FORCED_ONBOARDING, SIGNED, REJECTED, EXPIRED, REMOVED, NOT_REQUIRED, FULFILLED_BY_OTHER
    • deliveryStatus object nullable example: DELIVERED
      Delivery progress of the initial document to this participant, independent of the signing status above.
      Allowed values: PENDING, DELIVERED, ONBOARDING_SENT, NOT_DELIVERED, FAILED
    • recipientDeliveryStatus object nullable example: DELIVERED
      Delivery progress of the final signed document to this participant once the process completes, independent of deliveryStatus above (which only covers the initial document).
      Allowed values: PENDING, DELIVERED, ONBOARDING_SENT, SUBMITTER_FALLBACK, SKIPPED_NO_RECIPIENT, FAILED
    • hashedPrimaryValue string nullable example: 5f4dcc3b5aa765d61d8327deb882cf99
      Correlates the returned participant with the hash the caller submitted.
    • signedByUserEmail string nullable example: anna.muster@example.ch
      Email of the ePost account in whose name the signature was made (account owner). null before signing.
    • effectiveSignerUserEmail string nullable example: delegate@example.ch
      Email of the user who actually signed (e.g. a shared-account user). null before signing.
    • sequenceIndex integer (int32) format: int32 nullable example: 1
      1-based order (SEQUENTIAL mode). null in PARALLEL mode.
    • rejectedReason string nullable example: Wrong recipient
      Reason provided when the participant refused to sign. null otherwise.
    • signedAt string (date-time) format: date-time nullable example: 2026-09-01T14:22:07Z
      Timestamp at which the participant signed (ISO 8601). null before signing.
    • occupied boolean example: False
      Whether the signing room is currently held (locked) by this participant.
  • document object
    Metadata of the submitted document (never the payload).
    show fields
    • fileName string example: rental-contract.pdf
      Original file name of the uploaded document.
    • contentType string example: application/pdf
      MIME type of the document.
    • sizeBytes integer (int64) format: int64 example: 154382
      Size of the document in bytes.
    • currentVersion integer (int32) format: int32 example: 2
      Current document version. Increments with each collected signature.
  • createdAt string (date-time) format: date-time example: 2026-08-13T09:15:30Z
    Creation timestamp (ISO 8601).
  • completedAt string (date-time) format: date-time nullable example: 2026-09-05T11:03:19Z
    Timestamp at which every required signature was collected. null while incomplete.
  • deleteAt string (date-time) format: date-time nullable example: 2026-12-04T09:15:30Z
    When the process/document will be finally deleted. Retention per CISO: open + signed documents 90 days; cancelled/deactivated processes 30 days; audit/process metadata 12 months.
400 Body invalid, or status supplied but not equal to CANCELLED.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed, or caller is not an ADMIN of this process.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
409 Process is in a terminal status (COMPLETED, CANCELLED or EXPIRED) and cannot be updated.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
422 Validation failed on the request body (e.g. deadline not strictly in the future).

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
GET/epost/signing/processes/{processId}/documentkey / tokenDownload the final signed document.
Returns the FINAL signed PDF once the process is COMPLETED. While signing is ongoing the document is only viewable within the signing room and is NOT exposed here. Access is controlled per tenant.
operationId

getSignedDocument — the method name a generated client uses.

Parameters 1
NameDescription
processId required
path string (uuid)
Server-assigned unique identifier of the signing process.
format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
Responses 7
200 The final signed PDF document. show body

application/pdf string (binary)

401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
409 Process not yet COMPLETED — the signed document is not available.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
PATCH/epost/signing/processes/{processId}/participants/{participantId}key / tokenUpdate a participant of a running signing process (ADMIN-only).
ADMIN-only update of a single participant. Callable by the process creator or by any active participant that holds the ADMIN role. Only reachable while the participant is PENDING or FORCED_ONBOARDING — once the participant has SIGNED, REJECTED, EXPIRED or has already been REMOVED, the request is rejected with HTTP 409. All fields on the body are optional; field-level diffing is applied and an audit trail entry (PARTICIPANT_UPDATED) is written only when at least one value actually changed.

Removal: send status = REMOVED to remove the participant from the process. Records a PARTICIPANT_REMOVED audit trail entry. Any other status value is rejected with HTTP 400.

Credential-change re-matching: changing any credential field — hashedPrimaryCredential, hashedPrimaryValue, derivedHashedCredentials, derivedHashedValue, unhashedCredentials, or allCredentialShouldMatch — re-runs tenant-directory matching for this participant slot. If the resolved recipient changes, the previously-resolved tenant is remembered (so their subsequent sign attempts are rejected with REMOVED_BY_SENDER) and the initial signing notification is re-delivered to the newly resolved recipient. The previous recipient's letterbox entry is intentionally NOT withdrawn. If the new credential matches multiple accounts the request is rejected with HTTP 422.

Last-ADMIN protection: removing the last ADMIN — or stripping the ADMIN role from the last ADMIN by supplying a roles list that does not contain ADMIN — is rejected with HTTP 409; the participant is left unchanged. Callers that are not an ADMIN participant of this process receive HTTP 404 (the existence of the process is not disclosed). Access requires the ePost Sign widget subscription.
operationId

updateSigningParticipant — the method name a generated client uses.

Parameters 2
NameDescription
participantId required
path string (uuid)
Process-local participant id (stable, also while the participant is unresolved). Matches ParticipantStatus.internalTrackingId from the GET view.
format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2
processId required
path string (uuid)
Server-assigned unique identifier of the signing process.
format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51
Request body required
Partial update. Send only the fields to change. Field-level diffing is applied downstream.

application/json ParticipantUpdate

  • roles array of string
    New role set. Must be non-empty when supplied. The process must retain at least one ADMIN and at least one SIGNER; removing the last ADMIN results in HTTP 409.
    Allowed values: ADMIN, SIGNER, RECEIVER
  • hashedPrimaryCredential string example: email
    Which credential is hashed as the primary key (e.g. email, mobileNumber). Omit to keep the current value.
  • hashedPrimaryValue string example: 5f4dcc3b5aa765d61d8327deb882cf99
    Hash of the primary credential value. Omit to keep the current value.
  • derivedHashedCredentials array of string
    Names of the additional credentials mixed into the derived hash. Omit to keep the current value.
  • derivedHashedValue string example: b4a9b3f1c8d0e2a5f6b7c8d9e0a1b2c3
    Hash of the derived credential combination. Omit to keep the current value.
  • unhashedCredentials object
    Full participant credentials — submission only. Never returned by GET endpoints. Omit to keep the current value.
    show fields
    • universalName string example: KLARA Business AG / Peter Muster
      If you are not sure whether the recipient is a company or a person, then this field can be used to put the name of the recipient
    • firstName string example: Peter
      First name of a recipient.
    • lastName string example: Muster
      Last name of a recipient.
    • companyName string example: KLARA
      If the tenant entry is a business customer, i.e a Company, enter the company name here.
    • companyUid string example: CHE-123.456.789
      If the tenant entry is a business customer, i.e a Company, enter the company UID here.
      In case you are inputting the company UID for delivery via eBill channel to a company recipient, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
    • street string example: Bahnhofstrasse 10a
      Street name in the address of a recipient.
      As an option, street name and street number can be added here together in this field. In that case, leave the "streetNumber" field empty.
    • streetNumber string example: 20
      Street number in the address of a recipient.
    • zipCode string example: 3000
      Zip code in the address of a recipient.
    • city string example: Bern
      City in the address of a recipient.
    • email string example: peter.muster@gmail.com
      Email of a recipient.
      In case you are inputting the email of the recipient for delivery via eBill channel, pay attention to not input any value for the billRecipientId. Otherwise, delivery is only possible if both values are correct for the recipient of eBill.
    • mobileNumber string example: +41909112233
      Mobile number of the recipient.
      Must be a valid international phone number: Beginning with a '+' sign followed by a 1-3 digit country code and the domestic phone number.
    • birthDate string (date) format: date example: 1990-01-02
      Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)
    • participantId string
      This field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.
    • clientLegacyId string
      This id is optional and is used to support legacy systems.
    • minimumLevelOfTrust object
      The Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.
    • socialSecurityNumber string example: 756.1234.5678.97
      Social security number of a recipient and must be unique.
    • taxId string example: 263125
      Tax ID of a recipient and must be unique.
    • postOfficeBoxNumber string example: 12
      Post office box number
    • postOfficeBoxZip string example: 1212
      Post office box zipcode
    • postOfficeBoxTownName string example: Vervey 1
      Post office box town name
    • unstructuredAddressLine01 string example: Peter Muster
      If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
    • unstructuredAddressLine02 string example: Bahnhofsstr 20
      If you are not sure which part of the address is name, street, house number, city or postcode, then you can input your address in the unstructured line 1 to 3. Keep in mind that sending unstructured addresses will result to a lower matching rate
    • unstructuredAddressLine03 string example: 8004 Zurich Switzerland
      If your unstructured address has more than 3 lines, input all the remaining in this line. Keep in mind that sending unstructured addresses will result to a lower matching rate
    • billRecipientId string example: 41010560425610173
      Bill recipient Id from eBill. Using in eBill channel only.
      In order to deliver via eBill channel, you can input this credential. If you input more than 1 credential for eBill, delivery can happen only if all of these credentials are found in the recipient of eBill by SIX.
  • allCredentialShouldMatch boolean example: False
    If true, every supplied credential MUST match to resolve the participant. Omit to keep the current value.
  • sequenceIndex integer (int32) format: int32 min: 1 example: 1
    1-based order of this participant when the process runs in SEQUENTIAL mode. Ignored in PARALLEL mode. Omit to keep the current value.
  • signatureFields array of SignatureField
    Signature field positions for this participant. When supplied, replaces the current fields as a whole; empty list = SwissSign default placement. Omit to keep the current value.
    show fields

    Array of SignatureField.

    • fieldName string example: SignatureField_1
      Logical name of the signature field on the PDF form (matches the AcroForm field name when present).
    • pageIndex integer (int32) format: int32 min: 0 example: 0
      Zero-based index of the PDF page the field is placed on.
    • x number (double) format: double example: 72
      X coordinate of the field's lower-left corner (PDF points).
    • y number (double) format: double example: 144
      Y coordinate of the field's lower-left corner (PDF points).
    • width number (double) format: double example: 180
      Width of the field (PDF points).
    • height number (double) format: double example: 48
      Height of the field (PDF points).
  • status object example: REMOVED
    Only REMOVED is accepted — removes the participant from the process. Any other value results in HTTP 400. Only reachable while the participant is PENDING or FORCED_ONBOARDING.
    Allowed values: PENDING, FORCED_ONBOARDING, SIGNED, REJECTED, EXPIRED, REMOVED, NOT_REQUIRED, FULFILLED_BY_OTHER
Responses 9
200 Updated participant. show body

application/json ParticipantStatus

  • internalTrackingId string (uuid) format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2
    Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant on PATCH.
  • participantId string nullable example: c60d31fa-f335-4957-872a-90b035632081
    Internal ePost id of the resolved tenant. null while the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).
  • name string nullable example: Anna Muster
    Name as used within the signing process / signature itself. null while unresolved. Per CISO, no additional profile data from ePost is exposed here.
  • roles array of string
    Role(s) held by this participant within the process.
    Allowed values: ADMIN, SIGNER, RECEIVER
  • status object example: PENDING
    Current signing status of this participant.
    Allowed values: PENDING, FORCED_ONBOARDING, SIGNED, REJECTED, EXPIRED, REMOVED, NOT_REQUIRED, FULFILLED_BY_OTHER
  • deliveryStatus object nullable example: DELIVERED
    Delivery progress of the initial document to this participant, independent of the signing status above.
    Allowed values: PENDING, DELIVERED, ONBOARDING_SENT, NOT_DELIVERED, FAILED
  • recipientDeliveryStatus object nullable example: DELIVERED
    Delivery progress of the final signed document to this participant once the process completes, independent of deliveryStatus above (which only covers the initial document).
    Allowed values: PENDING, DELIVERED, ONBOARDING_SENT, SUBMITTER_FALLBACK, SKIPPED_NO_RECIPIENT, FAILED
  • hashedPrimaryValue string nullable example: 5f4dcc3b5aa765d61d8327deb882cf99
    Correlates the returned participant with the hash the caller submitted.
  • signedByUserEmail string nullable example: anna.muster@example.ch
    Email of the ePost account in whose name the signature was made (account owner). null before signing.
  • effectiveSignerUserEmail string nullable example: delegate@example.ch
    Email of the user who actually signed (e.g. a shared-account user). null before signing.
  • sequenceIndex integer (int32) format: int32 nullable example: 1
    1-based order (SEQUENTIAL mode). null in PARALLEL mode.
  • rejectedReason string nullable example: Wrong recipient
    Reason provided when the participant refused to sign. null otherwise.
  • signedAt string (date-time) format: date-time nullable example: 2026-09-01T14:22:07Z
    Timestamp at which the participant signed (ISO 8601). null before signing.
  • occupied boolean example: False
    Whether the signing room is currently held (locked) by this participant.
400 Body invalid, or status supplied but not equal to REMOVED.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 No Authorization header found or invalid token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
403 ePost Sign widget not subscribed, or caller is not an ADMIN of this process.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
404 Resource not found

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
409 Participant is no longer in an editable state (not PENDING / FORCED_ONBOARDING), or the change would leave the process without any ADMIN.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
422 Validation failed on the request body, or a credential change re-matches to multiple accounts.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

Authentication

Authentication3

POST/core/latest/tenantspublicReturns all tenants of a user
A KLARA user might have multiple tenants. Use this endpoint to get the list of tenants containing tenant id, company id.
The tenant and company id returned by this endpoint can be used to generate tokens to access other endpoints. Use your KLARA username and password OR access-token to get the list of tenants.
operationId

listTenants — the method name a generated client uses.

Request body

application/x-www-form-urlencoded object

  • username string
  • password string
  • access_token string
Responses 6
200 Found tenants show body

application/json array of Tenant

Array of Tenant.

  • tenant_id string example: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
  • company_id integer (int64) format: int64 example: 1
  • company_name string example: ABC Company
400 Missing parameters

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorResponse

  • error string
    Summary of the error response
  • error_description string
    Description of the error response
401 Invalid credentials

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorResponse

  • error string
    Summary of the error response
  • error_description string
    Description of the error response
403 The user has been disabled

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorResponse

  • error string
    Summary of the error response
  • error_description string
    Description of the error response
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Something went wrong when getting list of tenants

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorResponse

  • error string
    Summary of the error response
  • error_description string
    Description of the error response
POST/core/latest/tokenpublicGenerate tokens to access other KLARA core endpoints
After obtaining tenant id and company id for the desired tenant, use this endpoint to get the access token for a specific tenant, and refresh token.
A grant_type of password is used for a Password grant, which requires username, password, tenant and company id to produce access token, refresh token from scratch.
A grant_type of refresh_token is used for a Refresh token grant, which is used for acquiring the access token using refresh token.
A grant_type of token_exchange performs an OAuth 2.0 Token Exchange (RFC 8693). Provide subject_token (the raw upstream Bearer token, without the 'Bearer ' prefix) and audience to identify the target token type.
Supported audience values:
  • cossa — exchanges a COSSA bearer token for a ePost access token.
Note: subject_token must be the raw token value without the 'Bearer ' prefix.
operationId

createPublicApiToken — the method name a generated client uses.

Request body

application/x-www-form-urlencoded object

  • username string default:
  • password string default:
  • grant_type string default:
  • tenant_id string default:
  • company_id string default:
  • refresh_token string default:
  • subject_token string default:
  • audience string default:
Responses 5
200 Token created show body

application/json PublicAPIToken

  • access_token string
    Token used to access KLARA Public API endpoints, should be place at Authorization header of request. Access token is valid only for one company tenant
  • expires_in integer (int64) format: int64
    Amount of time in seconds left that the access token is valid for
  • refresh_expires_in integer (int64) format: int64
    Amount of time in seconds left that the refresh token is valid for
  • refreshToken string
    Token used to renew the access token
  • token_type string
    Type of access token that should be included in the Authorziation header of each request
400 Could not get token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 Invalid credentials

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Internal server error

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
POST/core/latest/token/by-microsoftpublicExchange Microsoft access token for system token
Provide a Microsoft access token and tenant id to exchange for a system token.
operationId

createPublicApiTokenByMicrosoft — the method name a generated client uses.

Request body

application/x-www-form-urlencoded object

  • microsoft_access_token string
  • tenant_id string
Responses 5
200 Token created show body

application/json AccessTokenResponse

  • access_token string
  • expires_in integer (int64) format: int64
  • refresh_expires_in integer (int64) format: int64
  • refresh_token string
  • token_type string
  • id_token string
  • not-before-policy integer (int32) format: int32
  • session_state string
  • otherClaims object
    show fields

    Open map with values of type object.

400 Could not get token

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
401 Invalid credentials

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
429 API rate limit exceeded

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated
500 Internal server error

Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
show body

application/json ErrorMessage

  • uuid string
  • createdTime string
  • code string
  • message string
  • detail string deprecated

Changelog

What changed and when. Changes that can break an existing integration are marked as such.

API changes

20 October 20266 new · 1 removed · breaking
Breaking changes Existing integrations may be affected. This concerns POST /epost/signing/processes/{processId}/retry-delivery.

New

  • GET /epost/signing/billing-allowlist — List the calling company's billing allowlist.
  • POST /epost/signing/billing-allowlist — Authorise an individual ePost user to bill signing requests to the calling company.
  • DELETE /epost/signing/billing-allowlist/{entry-id} — Remove an entry from the calling company's billing allowlist.
  • GET /epost/v2/archives/directories — documentation correction: this endpoint is not new in the API. It has been in the specification since at least 18 September 2026 and is published in this documentation for the first time. Existing integrations are not affected
  • GET /epost/v2/archives/letters — documentation correction: this endpoint is not new in the API. It has been in the specification since at least 18 September 2026 and is published in this documentation for the first time. Existing integrations are not affected
  • POST /epost/v2/archives/upload — documentation correction: this endpoint is not new in the API. It has been in the specification since at least 18 September 2026 and is published in this documentation for the first time. Existing integrations are not affected

Removed

  • POST /epost/signing/processes/{processId}/retry-delivery — Retry delivery of a signing process.
15 October 20269 new · 31 changed

New

  • GET /epost/signing/billing-companies — List companies the authenticated user may bill a signing to.
  • GET /epost/signing/processes — List signing processes of the calling tenant.
  • POST /epost/signing/processes — Submit a document for signing and create a signing process.
  • GET /epost/signing/processes/{processId} — Get a signing process — submitted data plus current signing status.
  • PATCH /epost/signing/processes/{processId} — Update a running signing process (ADMIN-only).
  • GET /epost/signing/processes/{processId}/document — Download the final signed document.
  • PATCH /epost/signing/processes/{processId}/participants/{participantId} — Update a participant of a running signing process (ADMIN-only).
  • POST /epost/signing/processes/{processId}/retry-delivery — Retry delivery of a signing process.
  • GET /epost/v2/iletters/{iletter-id}/response-files/{response-file-id}/content — Download a file a recipient uploaded as an answer to an iLetter.

Changed

  • 27 endpoints — operationId added, `…`. A generated client used to invent a method name from the path and will now use this id
    Show the endpoints
    • DELETE /epost/v2/letters/{letter-id}
    • GET /epost/deliveries/monitoring
    • GET /epost/preview/delivery-channels/{preview-id}/status
    • GET /epost/preview/delivery-prices/{preview-id}/status
    • GET /epost/v2/deliveries/{delivery-id}/status
    • GET /epost/v2/letters
    • GET /epost/v2/letters/deleted
    • GET /epost/v2/letters/inbox/count
    • GET /epost/v2/letters/search
    • GET /epost/v2/letters/{letter-id}
    • GET /epost/v2/letters/{letter-id}/content
    • GET /epost/v2/letters/{letter-id}/thumbnail
    • GET /epost/v2/matching-runs/processing/{matching-run-id}
    • GET /epost/v2/matching-runs/{matching-run-id}
    • GET /epost/v2/recipients
    • GET /epost/v2/standard-matching-runs/processing/{matching-run-id}
    • GET /epost/v2/standard-matching-runs/{matching-run-id}
    • PATCH /epost/v2/letters/{letter-id}/archive
    • POST /epost/onboarding
    • POST /epost/preview/delivery-channels
    • POST /epost/preview/delivery-prices
    • POST /epost/v2/deliveries
    • POST /epost/v2/letters/read
    • POST /epost/v2/letters/{letter-id}/accept
    • POST /epost/v2/letters/{letter-id}/reject
    • POST /epost/v2/letters/{letter-id}/restore
    • POST /epost/v2/synchronous-deliveries
  • POST /epost/v2/matching-runs — request body changed; operationId added, `createMatchingRun`. A generated client used to invent a method name from the path and will now use this id
  • POST /epost/v2/matchings — request body changed; operationId added, `matchRecipients`. A generated client used to invent a method name from the path and will now use this id
  • POST /epost/v2/standard-matching-runs — request body changed; operationId added, `createStandardMatchingRun`. A generated client used to invent a method name from the path and will now use this id
  • POST /epost/v2/standard-matchings — request body changed; operationId added, `matchStandardRecipients`. A generated client used to invent a method name from the path and will now use this id
18 September 202633 changed

Changed

  • POST /core/latest/tenants — response body now documented for 429 (ErrorMessage)
  • POST /core/latest/token — response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage)
  • POST /core/latest/token/by-microsoft — response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage)
  • 6 endpoints — response body now documented for 401 (ErrorMessage)
    Show the endpoints
    • DELETE /epost/v2/letters/{letter-id}
    • GET /epost/deliveries/monitoring
    • PATCH /epost/v2/letters/{letter-id}/archive
    • POST /epost/v2/letters/{letter-id}/accept
    • POST /epost/v2/letters/{letter-id}/reject
    • POST /epost/v2/letters/{letter-id}/restore
  • 12 endpoints — response body now documented for 401 (ErrorMessage), 429 (ErrorMessage)
    Show the endpoints
    • GET /epost/preview/delivery-channels/{preview-id}/status
    • GET /epost/preview/delivery-prices/{preview-id}/status
    • GET /epost/v2/deliveries/{delivery-id}/status
    • GET /epost/v2/letters
    • GET /epost/v2/letters/deleted
    • GET /epost/v2/letters/inbox/count
    • GET /epost/v2/letters/search
    • GET /epost/v2/letters/{letter-id}
    • GET /epost/v2/letters/{letter-id}/content
    • GET /epost/v2/letters/{letter-id}/thumbnail
    • POST /epost/onboarding
    • POST /epost/v2/letters/read
  • POST /epost/preview/delivery-channels — response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/preview/delivery-prices — response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/v2/deliveries — response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/v2/synchronous-deliveries — response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/v2/matching-runs — response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/v2/matchings — response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/v2/standard-matching-runs — response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage)
  • POST /epost/v2/standard-matchings — response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage)
  • GET /epost/v2/matching-runs/{matching-run-id} — response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage)
  • GET /epost/v2/matching-runs/processing/{matching-run-id} — response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage)
  • GET /epost/v2/standard-matching-runs/{matching-run-id} — response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage)
  • GET /epost/v2/standard-matching-runs/processing/{matching-run-id} — response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage)
31 August 20263 changed

Changed

  • POST /core/latest/tenants — operationId added, `listTenants`. A generated client used to invent a method name from the path and will now use this id
  • POST /core/latest/token — operationId added, `createPublicApiToken`. A generated client used to invent a method name from the path and will now use this id
  • POST /core/latest/token/by-microsoft — operationId added, `createPublicApiTokenByMicrosoft`. A generated client used to invent a method name from the path and will now use this id
12 August 20261 changed · 1 removed · breaking
Breaking changes Existing integrations may be affected.

Changed

  • GET /epost/preview/delivery-prices/{preview-id}/status — neue Statuscodes: 404; Statuscodes entfallen: Resource not found

Removed

  • POST /epost/v2/single-file-deliveries — [FOR TRYING OUT IN STOPLIGHT] Creates a single document delivery.

Preview builds

Preview, eighth buildDelivery response and status corrected, async limits

Corrections from a large production run against this API:

  • Correction: the delivery id comes back as id. Getting started showed deliveryId. The status response uses deliveryId for the same value.
  • Correction: the status example now shows the real structure, with delivered and failed documents and a detail list per recipient.
  • Correction: the asynchronous endpoint has limits. At most 2,000 documents and 2,000 recipients per delivery. This page said it had none.
  • Set displayDeliveredDocument to see who received what. Without it the status response does not list recipients.
  • Smaller changes: how to check a delivery after a timeout, what the identity matching limit is not, and two new entries under Known limitations.
Preview, seventh buildeArchive, c/o addresses, iLetter callbacks corrected

Additions and corrections from a comparison with the ePost developer portal, plus eArchive:

  • eArchive is now part of this documentation. List the folders of your storage, list the letters in a folder, and upload a document with its metadata into your archive. The endpoints are not new in the API; they were missing from this documentation.
  • Correction: the output call of an iLetter retries for 48 hours. This page said at most three attempts. Three quick attempts are followed by a widening schedule up to 48 hours after the first one. Keep your de-duplication on Idempotency-Key wide enough to cover that.
  • Correction: your data-source endpoint is called more often than once per recipient. Also on every change to an input a parameter is bound to, and in sequence for chained data sources. The limits of the call are now documented, as is what the recipient sees while a call fails.
  • New: c/o addresses. Supported in the physical channel only. Leaving the c/o line out of the metadata can deliver the document digitally to the wrong person.
  • The physical channel has fields you can set. Envelope window, service level, envelope size, duplex, destination country and the QR invoice page. The envelope window you lay your template out for is declared on the delivery.
  • How to send a short message. Media type and documentMessage, which the SMS section did not state.
  • Smaller additions: the answer format of a custom webhook, the title of an iLetter record, fallback text for optional placeholders, the length limit of batchId, two cases in which a UID cannot match, and where to find the Postman collection.
Preview, sixth buildiLetter, ePost Sign, localised document titles

New products and fields from the API release of 15 October 2026:

  • New chapter: iLetter. How to send an interactive letter from a Template, supply URL parameters and placeholders per document and per recipient, and what the two calls look like that the platform makes to your endpoints.
  • ePost Sign is now part of this documentation. Submit a document for electronic signing and follow the signing process. See Signing in the reference.
  • Download what a recipient sends back. When a recipient answers an iLetter with a file, you can now fetch it.
  • Document title and description per language. Recipients see the title and description in their letterbox language when you provide one.
  • Smart Letter is no longer listed as a media type. Use iLetter instead.
Preview, fifth buildDocumented error bodies, server descriptions

The endpoint set is unchanged, 34 operations. One change to the contract, from the KLARA release of 18 September that the ePost endpoints share:

  • Every error response now carries a documented body. All 33 operations that had undocumented error statuses now declare ErrorMessage for them, with uuid, createdTime, code and message. Nothing changes on the wire; your client can now generate a type for it.
  • The two servers carry a description in the contract: the test environment states that nothing is charged and nothing is physically posted, production states that deliveries are chargeable.
Preview, fourth buildoperationId for three shared endpoints

The endpoint set is unchanged. One change to the contract:

  • Three endpoints now carry an operationId: POST /core/latest/token as createPublicApiToken, POST /core/latest/token/by-microsoft as createPublicApiTokenByMicrosoft and POST /core/latest/tenants as listTenants. These three are shared with KLARA business software, which is where the ids come from. If you generate a client, its method names for these three change once.
  • The 31 ePost endpoints still have none. Generated clients keep inventing their method names from the path for those, and those names change whenever a path changes. See Known limitations.
Preview, third buildMachine-readable formats, three corrections

No change to the endpoint set. This build adds machine-readable versions of the documentation and corrects three statements in the text.

  • Machine-readable formats. llms.txt indexes every chapter as a Markdown file and every area of the reference as a Markdown file with parameters and request and response bodies. Built in the same run as this page, from the same source. The specification itself is unchanged and remains the contract.
  • The specification is now linked at the top of this page, not only inside its own chapter.
  • This preview is no longer excluded from search engines. It stays marked as a preview. Later correction: this entry named developer.epost.ch as the documentation in force. Since 21 September 2026 this page states instead that it is the most current description of the API and not yet the official developer portal.
  • Free-text search and filtering by field are described separately. Free-text search exists on one endpoint, GET /epost/v2/letters/search. Nine endpoints filter by field, with 22 parameters in total, and there you have to know the value you are filtering on. One endpoint accepts a sort order; everywhere else the order is not guaranteed.
  • The page said three authentication endpoints. This contract publishes POST /core/latest/token, POST /core/latest/token/by-microsoft and POST /core/latest/tenants, so two of them are token endpoints.
  • A tag description in the specification referred to operations that the file does not contain. Corrected, so the specification now describes only what it carries.
Preview, second buildOne endpoint removed, one response corrected

Two changes to the published contract, both from an external review:

  • POST /epost/v2/single-file-deliveries removed. Its own description says it exists only for trying the API out in Stoplight, so it does not belong in a customer contract. Ask enterprise support if you were using it.
  • GET /epost/preview/delivery-prices/{preview-id}/status: the response previously keyed as free text is now keyed 404. The API behaviour is unchanged, only the specification was invalid before.
  • The test server is now part of the specification, so generated clients and imported collections can select it directly.
Preview, first buildFirst build from the published specification

First build of this documentation from the published specification, across sending, identity matching, the digital letterbox and authentication.

Known limitations

Gaps we know about, listed here so you find out before you build rather than halfway through.

FAQ

Straight answers, including where the API cannot help you yet.

Which authentication method should I use?

An API key for server-to-server integrations, generated in the ePost interface. The token flow when you act for a signed-in user. Every endpoint that requires authentication accepts either. SwissID is not supported for the API.

How do I find out what a delivery costs before sending it?

POST /epost/preview/delivery-prices, then poll the status endpoint. Nothing is delivered and nothing is charged. See Channels and prices.

What is the difference between the two identity matching tiers?

The standard endpoints return basic information and are included. The detailed endpoints return whether a specific credential matched, and the specification states that access is restricted and available against a fee. See Identity matching.

Do I have to send personal data unhashed for matching?

No. The specification states that the metadata may be hashed before sending, and GET /epost/v2/recipients returns hashed metadata for lookup.

My delivery was accepted but nothing arrived. What now?

GET /epost/v2/deliveries/{delivery-id}/status with the id you received on creation. Keep that id: it is the only way back to a delivery.

Why do the authentication endpoints sit under /core/latest?

ePost and KLARA business software run on the same platform and share the authentication layer. Therefore the two token endpoints are the same for both. Everything else in this documentation is ePost only.

Is an OpenAPI specification available?

Yes. Download it here. It contains exactly the endpoints documented on this page, no more and no less.

Support

Found something wrong or missing on this page? Write to support.enterprise@epostservice.ch. When reporting an error, include the request you sent and the status code you got back, but never your API key.

This page is a draft It documents the productive ePost API and is the most current description of it, but it is not the official developer portal yet. Cite it as a preview. Onboarding, test access and anything that needs a human go through support.enterprise@epostservice.ch.