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.
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
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:
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.
- Open
test.klara-epost.techin 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. - Register as a business tenant, accept the terms and enter your company details.
- Open the widgets and activate eLetter: Versand, free of charge.
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
| Channel | On the test environment |
|---|---|
| ePost digital letterbox | Self-service. Works as soon as you are onboarded |
| eBill | Possible, but not self-service. Ask enterprise support |
| SMS | Possible, but not self-service. Ask enterprise support |
| Possible, but only with a special test domain. Ask enterprise support | |
| Physical letter | Possible, 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:
- Sign in at
app.epost.chwith SwissID. - In the same browser, open the account page at
login.epost.ch, go to authentication and set a password. - 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:
| Environment | Host | What it does |
|---|---|---|
| Test | https://api-test.klara-epost.tech |
Self-service, free, nothing is physically posted |
| Production | https://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
| Verb | Used for | Endpoints |
|---|---|---|
| GET | Retrieving resources | 24 |
| POST | Creating resources, and some actions such as /send | 19 |
| DELETE | Removing a resource | 2 |
| PATCH | Partial updates | 3 |
48 endpoints in total, which is the same number as in the reference below and in the downloadable specification.
Headers
| Header | Value | When |
|---|---|---|
X-API-KEY | your API key | API key authentication |
Authorization | Bearer <JWT> |
Token authentication |
Accept | depends on the endpoint | Mostly application/json. The onboarding endpoint returns
text/html or image/png depending on what you ask for |
Content-Type | depends 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 type | Endpoints | Which ones |
|---|---|---|
application/json | 9 | PATCH /epost/signing/processes/{processId}PATCH /epost/signing/processes/{processId}/participants/{participantId}POST /epost/onboardingPOST /epost/signing/billing-allowlistPOST /epost/v2/letters/readPOST /epost/v2/matching-runsPOST /epost/v2/matchingsPOST /epost/v2/standard-matching-runsPOST /epost/v2/standard-matchings |
multipart/form-data | 6 | POST /epost/preview/delivery-channelsPOST /epost/preview/delivery-pricesPOST /epost/signing/processesPOST /epost/v2/archives/uploadPOST /epost/v2/deliveriesPOST /epost/v2/synchronous-deliveries |
application/x-www-form-urlencoded | 3 | POST /core/latest/tenantsPOST /core/latest/tokenPOST /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 type | Endpoints | Which ones |
|---|---|---|
application/json | 48 | every endpoint that has one |
application/octet-stream | 2 | GET /epost/v2/iletters/{iletter-id}/response-files/{response-file-id}/contentGET /epost/v2/letters/{letter-id}/thumbnail |
application/octet-stream, application/json | 1 | GET /epost/v2/letters/{letter-id}/content |
application/pdf | 1 | GET /epost/signing/processes/{processId}/document |
image/png, application/json | 1 | POST /epost/onboarding |
text/html;charset=UTF-8, application/json | 1 | POST /epost/onboarding |
Authentication
The API accepts two mechanisms, and every endpoint that requires authentication accepts either.
| Mechanism | How | Best for |
|---|---|---|
apiKeyAuth | Header X-API-KEY |
Server-to-server integrations. Generate the key in the ePost interface |
bearerAuth | Header 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.
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.
- POST
/core/latest/tenants: Returns all tenants of a user - POST
/core/latest/token: Generate tokens to access other KLARA core endpoints - POST
/core/latest/token/by-microsoft: Exchange Microsoft access token for system token
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
| Endpoint | Returns | Use it when |
|---|---|---|
POST /epost/v2/deliveries | 201 and a delivery id |
Normal case. Accepts the delivery and processes it in the background. Poll the status endpoint afterwards |
POST /epost/v2/synchronous-deliveries | 200 with the
result |
You need the outcome in the same request. Limited in volume, see below |
Limits that the specification states
- 2 GB per delivery.
- 200 MB per document, counting the binary and its metadata together.
- The asynchronous endpoint takes at most 2,000 documents and 2,000 recipients in one delivery. Split larger runs into several deliveries.
- The synchronous endpoint takes at most 1500 documents in one delivery when each document goes to one recipient, or one document to 1500 recipients.
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 supply | What happens |
|---|---|
| Postal address | Delivered 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 message | Push notification and message in ePost if the recipient is there, otherwise an ordinary SMS |
| Several recipients at once | Each 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
costCentershows up in monitoring. Fill it, or you will not be able to attribute cost later.documentTypessteers the routing.invoiceis what makes eBill possible at all.fileNamemust match the uploaded file exactly.allRecipientsRequireddecides whether the whole delivery fails if one recipient cannot be reached.senderUserIdis your own reference for the recipient. Use it to map the result back to your records.displayDeliveredDocumentshows more about the delivered document, among itsenderEndToEndId,senderUserIdanddocumentTitle. Set it whenever you need to know who received what. Without it the status response leaves the per-recipientdetaillist of delivered documents empty, andsenderUserIdcannot map the result back to your records.
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.
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.
| Field | Required | Note |
|---|---|---|
email or companyUid or billRecipientId |
one of them | email for consumers, companyUid for businesses,
billRecipientId for either |
firstName and lastName, or companyName,
or universalName | one of them | |
ebillAdditionalInfo.paymentAmount | yes | |
ebillAdditionalInfo.qrReference | yes | |
ebillAdditionalInfo.dueDate | no | Left out, ePost sets 30 days |
documentTypes | yes | 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.
| Length | Parts |
|---|---|
| 160 characters | 1 |
| 161 characters | 2 |
| 320 characters | 3 |
Parts are billed individually, so a message of 161 characters costs twice a message of 160.
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.
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.
| Field | Values | What it does |
|---|---|---|
windowLocation | LEFT, RIGHT |
Which envelope window your template is laid out for. See the two address positions below |
postage | A_POST, B_POST,
B_POST_LARGEVOLUME, A_PLUS, REGISTERED |
Service level. Decides speed and price |
envelopeSize | C4, C5, BOX,
AUTO | AUTO leaves the choice to the print partner |
duplex | boolean, default false |
Print on both sides |
shippingCountry | ISO country code, default CH |
Destination country |
qrInvoicePageNumber | integer | 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
Envelope with the window on the right
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.
| Field | Required | Note |
|---|---|---|
firstName and lastName, or companyName,
or universalName | one of them | |
postOfficeBoxNumber | yes | If you do not know the number, put the words for «PO box» in the local language |
postOfficeBoxZip | yes | |
postOfficeBoxTownName | yes | Including the delivery office number where there is one, for example
Vevey 1 |
street, streetNumber, city | no | The domicile address, when you know it as well |
Three worked examples
| Address | Fields |
|---|---|
| Peter Muster P.O. Box 123 6340 Baar |
firstName: PeterlastName: MusterpostOfficeBoxNumber: P.O. Box 123postOfficeBoxZip: 6340postOfficeBoxTownName: Baar |
| Peter Muster Neuhofstrasse 3a P.O. Box 6340 Baar |
universalName: Peter MusterpostOfficeBoxNumber: P.O. BoxpostOfficeBoxZip: 6340postOfficeBoxTownName: Baarstreet: NeuhofstrassestreetNumber: 3 a |
| Peter Muster Muehlegasse 15, Bolligen P.O. Box 3000 Berne 8 |
firstName: PeterlastName: MusterpostOfficeBoxNumber: P.O. BoxpostOfficeBoxZip: 3000postOfficeBoxTownName: Berne 8street: MuehlegassestreetNumber: 15city: 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.
Put the complete recipient name in universalName. Only where that is technically
impossible, append the c/o information to lastName.
| Address in the PDF | Preferred | Alternative |
|---|---|---|
| Anna Beispiel c/o Max Muster Musterstrasse 8 9999 Beispielstadt |
universalName: Anna Beispiel, c/o Max Musterstreet: MusterstrassestreetNumber: 8zipCode: 9999city: Beispielstadt |
firstName: AnnalastName: Beispiel, c/o Max Musterstreet: MusterstrassestreetNumber: 8zipCode: 9999city: 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.
Sending an iLetter
- Copy the Template ID in Studio. Supply it on the document as
digitalAdditionalInfo.iLetter.templateId. Every iLetter document needs one. - Mark the document as an iLetter. Set
mediaTypetoapplication/vnd.ch.klara.epost.v1+iletter. Such a document carries no file binary, the content comes from the Template. TheiLetterobject 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. - Group deliveries if you want to. Deliveries with the same
iLetter.batchIdadd their recipients to one iLetter record in Studio. Without it, every delivery creates its own record. AbatchIdis at most 128 characters. - Supply the values the Template needs, see below.
- Send with
POST /epost/v2/deliveriesorPOST /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.
| Kind | Field | What it does |
|---|---|---|
| URL parameters | iLetter.parameters |
Appended to the calls the letter makes to your data source, so your endpoint returns only the data for that recipient's case |
| Placeholders | iLetter.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 parameters | Placeholders | |
|---|---|---|
| Entries per level | at most 20 entries | at most 100 entries |
| Key length | at most 64 characters | at most 64 characters |
| Value length | at most 128 characters | at 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
| Situation | Outcome |
|---|---|
| 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
GET /epost/v2/deliveries/{delivery-id}/statusreports the delivery status.GET /epost/deliveries/monitoringreturns, per recipient, the iLetter values as you sent them and, ineffectiveILetterParametersandeffectiveILetterPlaceholders, the values actually used for that recipient.- Files a recipient uploads as an answer are fetched with
GET /epost/v2/iletters/{iletter-id}/response-files/{response-file-id}/content.
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.
| Call | Method | When |
|---|---|---|
| Data source | GET to your data-source URL |
When a recipient opens the letter and it needs your data |
| Output | POST to your output URL |
When a recipient submits an answer |
Headers on both calls
| Header | Value |
|---|---|
X-iLetter-Sender-Case-Id | senderCaseId from the document |
X-iLetter-Sender-End-To-End-Id | senderEndToEndId from the document |
X-iLetter-Sender-User-Id | senderUserId from the recipient |
X-iLetter-Participant-Id | Identifies 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.
Limits of the call:
- Your response must arrive within 5 seconds.
- At most 5 redirects are followed. The credential is sent on the first request only, never on a redirect.
- A response body over 1 MiB fails the call.
- One retry, after a pause of 250 to 750 ms, and only after a timeout, a network error, a 5xx, a
408, an unresolvable host or a 429 with a
Retry-Afterof at most 1 second, and only if both attempts fit within 7 seconds. Any other answer is final. - A response that is not JSON is an error. A
200with an empty result is a normal, empty state, not an error.
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.
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:
recipient: the header return-data fields you marked in the composer, under the names you gave them. A letter that defines none sendsrecipientas an empty object{}, on every attempt.answers: one entry per answered field, under the wrapper key configured on the endpoint (defaultanswers). With no wrapper key set, the entries sit flat at top level instead.meta:letterId,letterName,webhookCallId,submittedAtand the four context values.webhookCallIdidentifies the submission and is the same for every endpoint the letter posts to. It is not theIdempotency-Key.questions: the question text per answered field, if enabled on the endpoint.
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.
| Question | Post to | Then 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.
Identity matching
Identity matching answers whether a recipient of yours exists in ePost, so you know before sending whether a digital channel is available.
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
| Tier | Endpoints | Returns | Access |
|---|---|---|---|
| Standard | POST /epost/v2/standard-matchingsPOST /epost/v2/standard-matching-runs |
The user's basic information | Included |
| Detailed | POST /epost/v2/matchingsPOST /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
recipientsis the only required field.- You may hash the metadata before sending it. The specification states this explicitly,
and
GET /epost/v2/recipientsreturns hashed metadata from ePost users for exactly this purpose. - You do not have to send everything, but the combination you send has to be unique. Sending only a common surname will not identify anyone.
Before delivery or on delivery
There are two ways to combine matching with sending, and the choice matters at volume.
| Matching before delivery | Matching on delivery | |
|---|---|---|
| How | You 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 for | High volume. Explicitly recommended | Small numbers, and when you want the fallback to happen automatically |
| You get back | Participant ids you can store | A delivery result |
Matching before delivery
Matching on delivery
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
| Credential | Primary | How it gets verified |
|---|---|---|
| Postal address | yes | Code by physical letter |
| Email address | yes | Code by email |
| Mobile phone number | yes | Code by SMS |
| PO box | yes | Code by physical letter |
| Participant ID | yes | The unique id of a letterbox. Can be used directly for delivery |
| Legacy ID | yes | Old key from E-Post Office |
| First name, last name, date of birth | no | Would need identity document verification, which is not available |
| Social security number | no |
Company recipients
| Credential | Primary | Note |
|---|---|---|
| Postal address | yes | Code by physical letter |
| PO box | yes | Code by physical letter |
| Participant ID | yes | Can be used directly for delivery |
| UID | no | Two 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 |
How to get the best match rate
- Send every primary credential you have and set
allCredentialShouldMatchtofalse. That is the single most effective setting. Withtrue, one wrong field kills the whole match. - Be specific about the recipient type. Fill
firstNameandlastNamefor a person,companyNamefor a company. UseuniversalNameonly when you genuinely do not know which it is. - Structure the address. Use
unstructuredAddressLineonly when you cannot split the parts. A structured address matches better. - The more precise the data, the higher the digital delivery rate. Matching quality and postage cost are the same lever.
Level of trust
Every recipient carries a level that says how well they are identified. You can require a
minimum through minimumLevelOfTrust.
| Level | Private recipients | Company recipients |
|---|---|---|
BRONZE | Email and mobile number verified. Every private recipient starts here | not applicable |
SILVER | Postal address verified by letter | Postal address verified by letter. Every company starts here |
GOLD | Not implemented. Identity document plus live photo. Ask enterprise support if you need it | |
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.
- Algorithm: SHA-256.
- Email:
local-part@domain, all lower case. - Mobile number: E.164, so country code with a leading
+, twelve characters in total. - Postal address: first name, last name, street, street number, postcode and city concatenated. Names normalised first: special characters removed, everything lower case. Additional address lines and further names are ignored.
- Derived credentials are hashed on top of a primary one: hash the derived value, append it to the primary hash, then hash the two together.
Two tenant types, and what they may do
ePost distinguishes private and company tenants. It affects what you can expect.
- Private recipients are onboarded through the mobile app and cannot send, except when replying to an iLetter.
- Company tenants use the web interface at
app.epost.chand can send anything. - One person can hold several tenants, and there is no limit. A single communication can therefore reach several letterboxes. Deliver to all active ones. ePost keeps only letterboxes that are actually used marked as active.
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.
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 has | What happens to your delivery |
|---|---|
| Deactivated the letterbox entirely | No digital delivery |
| Blocked you as a sender | No digital delivery from you, while other senders still get through |
| Opted out of a document type | No digital delivery for that type. The platform
reads the type from your documentTypes field |
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.
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
- Retry with exponential backoff on
429. Do not retry in a tight loop. - Use the preview services rather than sending and correcting. One preview call costs less than a delivery you did not want.
- Batch identity matching. The matching-run endpoints take a set and are designed for volume, unlike calling the single-shot endpoint per recipient.
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
| What | Limit | Applies to |
|---|---|---|
| Delivery | 2 GB | Deliveries and both preview services |
| Single document | 200 MB | Binary and metadata counted together |
| Asynchronous delivery | 2,000 documents, 2,000 recipients | Per call to POST /epost/v2/deliveries |
| Synchronous delivery | 1500 documents | One document per recipient, or one document to 1500 recipients |
| Identity matching metadata | 5 | Unit 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.
Pagination
7 endpoints accept pagination parameters:
| Endpoint | Parameters |
|---|---|
GET /epost/deliveries/monitoring | limit, offset |
GET /epost/signing/processes | limit, offset |
GET /epost/v2/archives/letters | limit, offset |
GET /epost/v2/letters | limit, offset |
GET /epost/v2/letters/deleted | limit, offset |
GET /epost/v2/letters/search | limit, offset |
GET /epost/v2/recipients | limit, 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.
| Endpoint | Parameter |
|---|---|
GET /epost/v2/letters/search | value |
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.
| Endpoint | Parameters |
|---|---|
GET /epost/deliveries/monitoring | delivery-id |
POST /epost/preview/delivery-channels | preview-option |
POST /epost/preview/delivery-prices | preview-option |
GET /epost/signing/processes | status |
GET /epost/v2/archives/letters | directory-id |
GET /epost/v2/letters | from-date, is-business-tenant, letter-folder, letter-types, read-status, senderCaseId, senderEndToEndId, senderParticipantId, senderUserId, to-date, with-reminder |
GET /epost/v2/letters/deleted | sender-participant-id |
GET /epost/v2/letters/inbox/count | sender-participant-id |
GET /epost/v2/letters/search | search-location, sender-participant-id |
PATCH /epost/v2/letters/{letter-id}/archive | destination-directory-id |
GET /epost/v2/recipients | min-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
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.| What | Where |
|---|---|
| Swagger, production | https://api.epost.ch/docs |
| Swagger, test | https://api-test.klara-epost.tech/docs |
| Postman collection | A 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.
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
filesarray of string (binary)largeFileobject format: binaryA binary file, users can push the binary via API document for testing.
PDF binaries have to be delivered in the format PDF/A.metadataobjectMetadata of one delivery v2 contain list metadata of files.show fields
costCenterstringIn 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.fileMetadataarray of DocumentMetadataV2List of file's metadatashow fields
Array of
DocumentMetadataV2.allCredentialShouldMatchbooleanDecides 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.fileNamestring requiredName of document file.mediaTypestring example: application/vnd.ch.klara.epost.v1+iletterIndicate 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.deliveryChannelPreferencesarray of string required write-onlyThis 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 deliveringAllowed values:DIGITAL,PHYSICAL,SMS,AUTO,EBILL,EMAILsenderNamestring write-only example: Canton BernThis value will be shown to the recipient as the delivery sender name.senderEndToEndIdstring write-onlyThis id provided by the sender. It helps the sender to reference the document during the whole process.senderCaseIdstring write-onlyThis id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documentsdocumentReferenceDatestring (date) format: date write-only example: 1990-01-02This 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.documentTitlestring example: nameOfTheFileThis title will be shown to the recipient of the delivery on the application.documentDescriptionstring example: Your health check invitation with questionnaire.A short description of the document shown to the recipient as a preview text.documentTypesarray of string write-onlyThis 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,hrrecipientsarray of Recipient required minItems: 1Recipients's informations include hashed and unhashed datas for identity matching process.show fields
Array of
Recipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allRecipientsRequiredbooleanTrue 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.displayDeliveredDocumentbooleanWhen this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitledocumentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messageebillAdditionalInfoEbillAdditionalInfoGroup of the eBill delivery information.show fields
dueDatestring (date) format: date write-only example: 2022-12-22Due date of business casepaymentAmountnumber write-only example: 20Amount to be paid for the invoice documentqrReferencestring write-only example: RF012345QF67T8910UI123Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
emailAdditionalInfoEmailAdditionalInfoGroup of the email delivery information.show fields
emailTextstring write-only example: Hello world.Content of the email.emailHtmlstring write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>Content of the email in html format.emailSubjectstring write-only example: your invoice from KLARASubject of the email.senderobjectContain email and its nameshow fields
emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
replyToarray of AdditionalEmailInfo write-onlyReply to the given emails.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
ccarray of AdditionalEmailInfo write-onlySending email as cc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
bccarray of AdditionalEmailInfo write-onlySending email as bcc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
inlineImagesarray of EmailInlineImageInline images of the emailshow fields
Array of
EmailInlineImage.filenamestring required pattern: \S example: picture1.pngfilename of the inline imagebase64string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQfile content of the inline image as base64.
digitalAdditionalInfoDigitalAdditionalInfoGroup of the digital delivery information.show fields
digitalDeliveryVariantobject example: STANDARDSpecifies 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]letterAnswerstringSpecifies 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.iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
documentInfoByLanguageobjectOptional 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
DELocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
FRLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ITLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ENLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
forcedOnboardingobjectThis 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
channelobject example: EMAILThe channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.languageobject example: ENLanguage of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.emailToBeInformedWhenExpiredstring example: peter.muster@gmail.comThis 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.
physicalAdditionalInfoPhysicalAdditionalInfoGroup of the physical delivery information.show fields
duplexboolean default: false example: FalseIf this flag is true, the Printer will print the document as both sides, otherwise just 1 side.shippingCountrystring default: CH example: CHThe country which the sender customer can send letters to
All acceptable country codes for shipping country.envelopeSizeobject example: C5Size of the envelope (values: C4, C5, BOX, AUTO)postageobject example: A_POSTType of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)qrInvoicePageNumberinteger (int32) format: int32 default: 0 example: 0The qr Invoice page numberwindowLocationobject example: LEFTThe position of the letter(values: LEFT, RIGHT)coverPrinterLogoIdstring default: example: BKW.tifOptional 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.attachmentstring default: example: myAttachment01.pdfOptional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.senderAddressobjectAddress 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
namestring example: ePost Service AGSender name to be printed on the letter as part of the sender address.streetstring example: BahnhofstrasseSender street to be printed on the letter as part of the sender address.streetNumberstring example: 20Sender street number to be printed on the letter as part of the sender address.zipCodestring example: 3000Sender zip code to be printed on the letter as part of the sender address.citystring example: BernSender city to be printed on the letter as part of the sender address.
featurePricePlanstringThis 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
idstringThe 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/v2/deliveries/{delivery-id}/statuskey / tokenGet Delivery status.
operationId
getDeliveryStatus — the method name a generated client uses.
Parameters 1
| Name | Description |
|---|---|
delivery-id required | The id of the delivery |
Responses 5
200 OK show body
application/json DeliveryStatusResponseV2
deliveryIdstringDelivery's idstatusobjectAll statuses which a delivery could havedocumentobjectDocument informationshow fields
failedDocumentarray of DeliveryStatusResponseV2.FailedDocumentFailed delivery documentsshow fields
Array of
DeliveryStatusResponseV2.FailedDocument.senderEndToEndIdstringEnd to end id defined by you for each document. It helps you keep track the documentdocumentTitlestringDocument titlestatusobjectStatus 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
errorCodestringError code:- FILE_CONTAINS_MALWARE: The file has viruses
- DOCUMENT_SIZE_EXCEEDED: Document size exceeded
- DOCUMENT_IMPORT_UNKNOWN_ERROR: Internal server error
errorMessagestringError messagedetailarray of DeliveryStatusResponseV2.FailedDetailA list of recipients we could not deliver toshow fields
Array of
DeliveryStatusResponseV2.FailedDetail.deliveryChannelobjectDelivery channelerrorCodestringError codeerrorMessagestringError messagesenderUserIdstringUser id was defined by you for each recipient
deliveredDocumentarray of DeliveryStatusResponseV2.DeliveredDocumentDelivered documentsshow fields
Array of
DeliveryStatusResponseV2.DeliveredDocument.senderEndToEndIdstringEnd to end id defined by sender for each documentdocumentTitlestringDocument titledetailarray of DeliveryStatusResponseV2.DeliveredDetailList 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.deliveryChannelobjectDelivery channelparticipantIdstringThe participant id of the user that was deliveredsenderUserIdstringUser id was defined by sender for each recipienttrackingNumberstringTracking number of the document that was delivered. It's only relevant for the postage REGISTERED and APLUS.
deliveredobjectThe number of recipients have been already delivered toshow fields
recipientsDeliveredDigitallyinteger (int32) format: int32Number of recipients that have been delivered digitally torecipientsDeliveredPhysicallyinteger (int32) format: int32Number of recipients that have been delivered physically torecipientsWithSmsDeliveredinteger (int32) format: int32Number of recipients that received SMSrecipientsDeliveredEbillinteger (int32) format: int32Number of recipients that have been delivered via eBillrecipientsDeliveredEmailinteger (int32) format: int32Number of recipients that have been delivered via email
pendingDocumentsinteger (int32) format: int32Number 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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.
operationId
getILetterResponseFileContent — the method name a generated client uses.
Parameters 2
| Name | Description |
|---|---|
iletter-id required | Id of the iLetter, as sent in the letterId field of the answer webhook. |
response-file-id required | Id of the response file, as sent in the files field of the answer webhook. |
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
fileNamestring example: id-card.pdfOriginal file namemimeTypestring example: application/pdfMIME type of the filesizeinteger (int64) format: int64 example: 2048Size of the file in bytesremovedAtstring example: 2026-12-12T08:00:00ZWhen 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
filesarray of string (binary)metadataobjectMetadata of one delivery v2 contain list metadata of files.show fields
costCenterstringIn 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.fileMetadataarray of DocumentMetadataV2List of file's metadatashow fields
Array of
DocumentMetadataV2.allCredentialShouldMatchbooleanDecides 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.fileNamestring requiredName of document file.mediaTypestring example: application/vnd.ch.klara.epost.v1+iletterIndicate 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.deliveryChannelPreferencesarray of string required write-onlyThis 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 deliveringAllowed values:DIGITAL,PHYSICAL,SMS,AUTO,EBILL,EMAILsenderNamestring write-only example: Canton BernThis value will be shown to the recipient as the delivery sender name.senderEndToEndIdstring write-onlyThis id provided by the sender. It helps the sender to reference the document during the whole process.senderCaseIdstring write-onlyThis id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documentsdocumentReferenceDatestring (date) format: date write-only example: 1990-01-02This 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.documentTitlestring example: nameOfTheFileThis title will be shown to the recipient of the delivery on the application.documentDescriptionstring example: Your health check invitation with questionnaire.A short description of the document shown to the recipient as a preview text.documentTypesarray of string write-onlyThis 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,hrrecipientsarray of Recipient required minItems: 1Recipients's informations include hashed and unhashed datas for identity matching process.show fields
Array of
Recipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allRecipientsRequiredbooleanTrue 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.displayDeliveredDocumentbooleanWhen this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitledocumentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messageebillAdditionalInfoEbillAdditionalInfoGroup of the eBill delivery information.show fields
dueDatestring (date) format: date write-only example: 2022-12-22Due date of business casepaymentAmountnumber write-only example: 20Amount to be paid for the invoice documentqrReferencestring write-only example: RF012345QF67T8910UI123Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
emailAdditionalInfoEmailAdditionalInfoGroup of the email delivery information.show fields
emailTextstring write-only example: Hello world.Content of the email.emailHtmlstring write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>Content of the email in html format.emailSubjectstring write-only example: your invoice from KLARASubject of the email.senderobjectContain email and its nameshow fields
emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
replyToarray of AdditionalEmailInfo write-onlyReply to the given emails.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
ccarray of AdditionalEmailInfo write-onlySending email as cc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
bccarray of AdditionalEmailInfo write-onlySending email as bcc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
inlineImagesarray of EmailInlineImageInline images of the emailshow fields
Array of
EmailInlineImage.filenamestring required pattern: \S example: picture1.pngfilename of the inline imagebase64string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQfile content of the inline image as base64.
digitalAdditionalInfoDigitalAdditionalInfoGroup of the digital delivery information.show fields
digitalDeliveryVariantobject example: STANDARDSpecifies 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]letterAnswerstringSpecifies 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.iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
documentInfoByLanguageobjectOptional 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
DELocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
FRLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ITLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ENLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
forcedOnboardingobjectThis 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
channelobject example: EMAILThe channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.languageobject example: ENLanguage of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.emailToBeInformedWhenExpiredstring example: peter.muster@gmail.comThis 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.
physicalAdditionalInfoPhysicalAdditionalInfoGroup of the physical delivery information.show fields
duplexboolean default: false example: FalseIf this flag is true, the Printer will print the document as both sides, otherwise just 1 side.shippingCountrystring default: CH example: CHThe country which the sender customer can send letters to
All acceptable country codes for shipping country.envelopeSizeobject example: C5Size of the envelope (values: C4, C5, BOX, AUTO)postageobject example: A_POSTType of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)qrInvoicePageNumberinteger (int32) format: int32 default: 0 example: 0The qr Invoice page numberwindowLocationobject example: LEFTThe position of the letter(values: LEFT, RIGHT)coverPrinterLogoIdstring default: example: BKW.tifOptional 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.attachmentstring default: example: myAttachment01.pdfOptional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.senderAddressobjectAddress 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
namestring example: ePost Service AGSender name to be printed on the letter as part of the sender address.streetstring example: BahnhofstrasseSender street to be printed on the letter as part of the sender address.streetNumberstring example: 20Sender street number to be printed on the letter as part of the sender address.zipCodestring example: 3000Sender zip code to be printed on the letter as part of the sender address.citystring example: BernSender city to be printed on the letter as part of the sender address.
featurePricePlanstringThis 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
deliveryIdstringDelivery's idstatusobjectAll statuses which a delivery could havedocumentobjectDocument informationshow fields
failedDocumentarray of DeliveryStatusResponseV2.FailedDocumentFailed delivery documentsshow fields
Array of
DeliveryStatusResponseV2.FailedDocument.senderEndToEndIdstringEnd to end id defined by you for each document. It helps you keep track the documentdocumentTitlestringDocument titlestatusobjectStatus 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
errorCodestringError code:- FILE_CONTAINS_MALWARE: The file has viruses
- DOCUMENT_SIZE_EXCEEDED: Document size exceeded
- DOCUMENT_IMPORT_UNKNOWN_ERROR: Internal server error
errorMessagestringError messagedetailarray of DeliveryStatusResponseV2.FailedDetailA list of recipients we could not deliver toshow fields
Array of
DeliveryStatusResponseV2.FailedDetail.deliveryChannelobjectDelivery channelerrorCodestringError codeerrorMessagestringError messagesenderUserIdstringUser id was defined by you for each recipient
deliveredDocumentarray of DeliveryStatusResponseV2.DeliveredDocumentDelivered documentsshow fields
Array of
DeliveryStatusResponseV2.DeliveredDocument.senderEndToEndIdstringEnd to end id defined by sender for each documentdocumentTitlestringDocument titledetailarray of DeliveryStatusResponseV2.DeliveredDetailList 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.deliveryChannelobjectDelivery channelparticipantIdstringThe participant id of the user that was deliveredsenderUserIdstringUser id was defined by sender for each recipienttrackingNumberstringTracking number of the document that was delivered. It's only relevant for the postage REGISTERED and APLUS.
deliveredobjectThe number of recipients have been already delivered toshow fields
recipientsDeliveredDigitallyinteger (int32) format: int32Number of recipients that have been delivered digitally torecipientsDeliveredPhysicallyinteger (int32) format: int32Number of recipients that have been delivered physically torecipientsWithSmsDeliveredinteger (int32) format: int32Number of recipients that received SMSrecipientsDeliveredEbillinteger (int32) format: int32Number of recipients that have been delivered via eBillrecipientsDeliveredEmailinteger (int32) format: int32Number of recipients that have been delivered via email
pendingDocumentsinteger (int32) format: int32Number 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
preview-option | 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
multipart/form-data OneApiPreviewRequest
filesarray of string (binary)largeFileobject format: binaryA binary file, users can push the binary via API document for testing.
PDF binaries have to be delivered in the format PDF/A.metadataobjectMetadata of one delivery v2 contain list metadata of files.show fields
costCenterstringIn 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.fileMetadataarray of DocumentMetadataV2List of file's metadatashow fields
Array of
DocumentMetadataV2.allCredentialShouldMatchbooleanDecides 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.fileNamestring requiredName of document file.mediaTypestring example: application/vnd.ch.klara.epost.v1+iletterIndicate 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.deliveryChannelPreferencesarray of string required write-onlyThis 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 deliveringAllowed values:DIGITAL,PHYSICAL,SMS,AUTO,EBILL,EMAILsenderNamestring write-only example: Canton BernThis value will be shown to the recipient as the delivery sender name.senderEndToEndIdstring write-onlyThis id provided by the sender. It helps the sender to reference the document during the whole process.senderCaseIdstring write-onlyThis id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documentsdocumentReferenceDatestring (date) format: date write-only example: 1990-01-02This 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.documentTitlestring example: nameOfTheFileThis title will be shown to the recipient of the delivery on the application.documentDescriptionstring example: Your health check invitation with questionnaire.A short description of the document shown to the recipient as a preview text.documentTypesarray of string write-onlyThis 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,hrrecipientsarray of Recipient required minItems: 1Recipients's informations include hashed and unhashed datas for identity matching process.show fields
Array of
Recipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allRecipientsRequiredbooleanTrue 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.displayDeliveredDocumentbooleanWhen this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitledocumentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messageebillAdditionalInfoEbillAdditionalInfoGroup of the eBill delivery information.show fields
dueDatestring (date) format: date write-only example: 2022-12-22Due date of business casepaymentAmountnumber write-only example: 20Amount to be paid for the invoice documentqrReferencestring write-only example: RF012345QF67T8910UI123Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
emailAdditionalInfoEmailAdditionalInfoGroup of the email delivery information.show fields
emailTextstring write-only example: Hello world.Content of the email.emailHtmlstring write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>Content of the email in html format.emailSubjectstring write-only example: your invoice from KLARASubject of the email.senderobjectContain email and its nameshow fields
emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
replyToarray of AdditionalEmailInfo write-onlyReply to the given emails.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
ccarray of AdditionalEmailInfo write-onlySending email as cc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
bccarray of AdditionalEmailInfo write-onlySending email as bcc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
inlineImagesarray of EmailInlineImageInline images of the emailshow fields
Array of
EmailInlineImage.filenamestring required pattern: \S example: picture1.pngfilename of the inline imagebase64string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQfile content of the inline image as base64.
digitalAdditionalInfoDigitalAdditionalInfoGroup of the digital delivery information.show fields
digitalDeliveryVariantobject example: STANDARDSpecifies 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]letterAnswerstringSpecifies 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.iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
documentInfoByLanguageobjectOptional 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
DELocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
FRLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ITLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ENLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
forcedOnboardingobjectThis 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
channelobject example: EMAILThe channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.languageobject example: ENLanguage of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.emailToBeInformedWhenExpiredstring example: peter.muster@gmail.comThis 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.
physicalAdditionalInfoPhysicalAdditionalInfoGroup of the physical delivery information.show fields
duplexboolean default: false example: FalseIf this flag is true, the Printer will print the document as both sides, otherwise just 1 side.shippingCountrystring default: CH example: CHThe country which the sender customer can send letters to
All acceptable country codes for shipping country.envelopeSizeobject example: C5Size of the envelope (values: C4, C5, BOX, AUTO)postageobject example: A_POSTType of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)qrInvoicePageNumberinteger (int32) format: int32 default: 0 example: 0The qr Invoice page numberwindowLocationobject example: LEFTThe position of the letter(values: LEFT, RIGHT)coverPrinterLogoIdstring default: example: BKW.tifOptional 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.attachmentstring default: example: myAttachment01.pdfOptional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.senderAddressobjectAddress 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
namestring example: ePost Service AGSender name to be printed on the letter as part of the sender address.streetstring example: BahnhofstrasseSender street to be printed on the letter as part of the sender address.streetNumberstring example: 20Sender street number to be printed on the letter as part of the sender address.zipCodestring example: 3000Sender zip code to be printed on the letter as part of the sender address.citystring example: BernSender city to be printed on the letter as part of the sender address.
Responses 6
201 Delivery preview created show body
application/json DeliveryResponseV2
idstringThe 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
preview-id required | The id of the preview |
Responses 5
200 OK show body
application/json PreviewDeliveryChannelResponse
statusobjectThe status of preview delivery-channel.previewChannelsarray of PreviewDeliveryChannelList response of delivery-channel preview.show fields
Array of
PreviewDeliveryChannel.participantIdstringThe participant id of the user that was delivered. Available for DIGITAL channel only.billRecipientIdstringThe bill recipient id of the user that was delivered. Available for EBILL channel only.senderUserIdstringUser id was defined by sender for each recipientsenderEndToEndIdstringEnd to end id defined by sender for each documentfileNamestringName of document file uploadeddocumentTitlestringDocument titleavailableChannelsarray of stringList of available channels that can be delivered for this recipientAllowed values:DIGITAL,PHYSICAL,SMS,EBILL,EMAILerrorCodestringError code of preview delivery channelerrorMessagestringError 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
preview-option | 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
filesarray of string (binary)largeFileobject format: binaryA binary file, users can push the binary via API document for testing.
PDF binaries have to be delivered in the format PDF/A.metadataobjectMetadata of one delivery v2 contain list metadata of files for preview service.show fields
costCenterstringIn 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.fileMetadataarray of DocumentMetadataV2ForPreviewServiceList of file's metadatashow fields
Array of
DocumentMetadataV2ForPreviewService.allCredentialShouldMatchbooleanDecides 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.fileNamestring requiredName of document file.mediaTypestring example: application/vnd.ch.klara.epost.v1+iletterIndicate 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.deliveryChannelPreferencesarray of string required write-onlyThis 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 deliveringAllowed values:DIGITAL,PHYSICAL,SMS,AUTO,EBILL,EMAILsenderNamestring write-only example: Canton BernThis value will be shown to the recipient as the delivery sender name.senderEndToEndIdstring write-onlyThis id provided by the sender. It helps the sender to reference the document during the whole process.senderCaseIdstring write-onlyThis id provided by the sender. If multiple Documents are related to one case (e.g. insurance) it helps the receiver to group received documentsdocumentReferenceDatestring (date) format: date write-only example: 1990-01-02This 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.documentTitlestring example: nameOfTheFileThis title will be shown to the recipient of the delivery on the application.documentDescriptionstring example: Your health check invitation with questionnaire.A short description of the document shown to the recipient as a preview text.documentTypesarray of string write-onlyThis 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,hrrecipientsarray of Recipient required minItems: 1Recipients's informations include hashed and unhashed datas for identity matching process.show fields
Array of
Recipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allRecipientsRequiredbooleanTrue 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.displayDeliveredDocumentbooleanWhen this flag true, the delivered document with show more information like senderEndToEndId, senderUserId and documentTitledocumentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messageebillAdditionalInfoEbillAdditionalInfoGroup of the eBill delivery information.show fields
dueDatestring (date) format: date write-only example: 2022-12-22Due date of business casepaymentAmountnumber write-only example: 20Amount to be paid for the invoice documentqrReferencestring write-only example: RF012345QF67T8910UI123Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
emailAdditionalInfoEmailAdditionalInfoGroup of the email delivery information.show fields
emailTextstring write-only example: Hello world.Content of the email.emailHtmlstring write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>Content of the email in html format.emailSubjectstring write-only example: your invoice from KLARASubject of the email.senderobjectContain email and its nameshow fields
emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
replyToarray of AdditionalEmailInfo write-onlyReply to the given emails.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
ccarray of AdditionalEmailInfo write-onlySending email as cc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
bccarray of AdditionalEmailInfo write-onlySending email as bcc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
inlineImagesarray of EmailInlineImageInline images of the emailshow fields
Array of
EmailInlineImage.filenamestring required pattern: \S example: picture1.pngfilename of the inline imagebase64string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQfile content of the inline image as base64.
digitalAdditionalInfoDigitalAdditionalInfoGroup of the digital delivery information.show fields
digitalDeliveryVariantobject example: STANDARDSpecifies 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]letterAnswerstringSpecifies 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.iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
documentInfoByLanguageobjectOptional 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
DELocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
FRLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ITLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ENLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
physicalAdditionalInfoobjectAdditional info support for preview pricing service.show fields
duplexboolean default: false example: FalseIf this flag is true, the Printer will print the document as both sides, otherwise just 1 side.shippingCountrystring default: CH example: CHThe country which the sender customer can send letters to
All acceptable country codes for shipping country.envelopeSizeobject example: C5Size of the envelope (values: C4, C5, BOX, AUTO)postageobject example: A_POSTType of physical delivery (values: A_POST, A_PLUS, B_POST, B_POST_LARGEVOLUME, REGISTERED)qrInvoicePageNumberinteger (int32) format: int32 default: 0 example: 0The qr Invoice page numberwindowLocationobject example: LEFTThe position of the letter(values: LEFT, RIGHT)coverPrinterLogoIdstring default: example: BKW.tifOptional 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.attachmentstring default: example: myAttachment01.pdfOptional field. This field is used to inform the print partner to add the attachment to the letter coming from oneAPI.senderAddressobjectAddress 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
namestring example: ePost Service AGSender name to be printed on the letter as part of the sender address.streetstring example: BahnhofstrasseSender street to be printed on the letter as part of the sender address.streetNumberstring example: 20Sender street number to be printed on the letter as part of the sender address.zipCodestring example: 3000Sender zip code to be printed on the letter as part of the sender address.citystring example: BernSender city to be printed on the letter as part of the sender address.
numberOfPageinteger (int32) format: int32Number of document page should be provided if no file uploaded
forcedOnboardingobjectThis 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
channelobject example: EMAILThe channel we will use to contact the recipient with the request to onboard to ePost. Currently, only EMAIL is supported.languageobject example: ENLanguage of the recipient. Defines the language we will use in the email we send to the recipient with the request to onboard to ePost.emailToBeInformedWhenExpiredstring example: peter.muster@gmail.comThis 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
idstringThe 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
preview-id required | The id of the preview |
Responses 6
200 OK show body
application/json PreviewDeliveryPricingResponse
statusobjectThe status of preview delivery pricing.pricePreviewarray of PreviewPotentialPriceList price preview of single delivery.show fields
Array of
PreviewPotentialPrice.participantIdstringThe participant id of the user that was delivered. Available for DIGITAL channel only.billRecipientIdstringThe bill recipient id of the user that was delivered. Available for EBILL channel only.senderUserIdstringUser id was defined by sender for each recipientsenderEndToEndIdstringEnd to end id defined by sender for each documentfileNamestringName of document file uploadeddocumentTitlestringDocument titlepotentialPricesarray of PotentialPriceItemList of potential price for each single deliveryshow fields
Array of
PotentialPriceItem.channelobjectPotential delivery channelpricenumberTotal potential price for specific channelerrorCodestringError codeerrorMessagestringReason can not preview price
errorCodestringError code of preview pricing serviceerrorMessagestringError 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Preview id is not found show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
delivery-id | Filter recipient tracking base on the delivery id. If this parameter is empty, the API will return the records for all deliveries. |
limit | 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 |
offset | 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 |
sort | 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.
idinteger (int64) format: int64deliveryIdinteger (int64) format: int64deliveredTimestring (date-time) format: date-timecreatedTimestring (date-time) format: date-timecostCenterstringdocumentTitlestringdocumentTypesarray of stringAllowed values:message,invoice,contract,hrunhashedCredentialsUnhashedCredentialFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
senderUserIdstringcostnumberchannelstringstatusstringthirdPartyStatusstringthirdPartyErrorMessagestringerrorCodestringdeliveryChannelPreferencesarray of stringAllowed values:DIGITAL,PHYSICAL,SMS,AUTO,EBILL,EMAILdetailDetailInfoshow fields
documentMetadataDocumentMetadataWithoutRecipientsshow fields
allCredentialShouldMatchbooleanfileNamestringmediaTypestringsenderNamestringsenderEndToEndIdstringsenderCaseIdstringdocumentReferenceDatestring (date) format: datedocumentTitlestringdocumentTypesarray of stringallRecipientsRequiredbooleanoriginstringdocumentMessagestringebillAdditionalInfoEbillAdditionalInfoGroup of the eBill delivery information.show fields
dueDatestring (date) format: date write-only example: 2022-12-22Due date of business casepaymentAmountnumber write-only example: 20Amount to be paid for the invoice documentqrReferencestring write-only example: RF012345QF67T8910UI123Reference number in the invoice document, this field is referring to the QR Reference, as the biller should have provided a QR-IBAN.
emailAdditionalInfoEmailAdditionalInfoGroup of the email delivery information.show fields
emailTextstring write-only example: Hello world.Content of the email.emailHtmlstring write-only example: <html><h1>Hallo world</h1><br><img src="cid:picture1.png"/></html>Content of the email in html format.emailSubjectstring write-only example: your invoice from KLARASubject of the email.senderobjectContain email and its nameshow fields
emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
replyToarray of AdditionalEmailInfo write-onlyReply to the given emails.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
ccarray of AdditionalEmailInfo write-onlySending email as cc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
bccarray of AdditionalEmailInfo write-onlySending email as bcc list.show fields
Array of
AdditionalEmailInfo.emailstring write-only example: abc@klara.chEmail addressnamestring write-only example: ABCName of email
inlineImagesarray of EmailInlineImageInline images of the emailshow fields
Array of
EmailInlineImage.filenamestring required pattern: \S example: picture1.pngfilename of the inline imagebase64string required pattern: \S example: iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQfile content of the inline image as base64.
physicalAdditionalInfoPhysicalAdditionalInfo1show fields
postagestringAllowed values:A_POST,B_POST,B_POST_LARGEVOLUME,A_PLUS,REGISTEREDenvelopeSizestringAllowed values:C4,C5,BOX,AUTOduplexbooleanwindowLocationstringAllowed values:LEFT,RIGHTqrInvoicePageNumberinteger (int32) format: int32shippingCountrystring
digitalAdditionalInfoDigitalAdditionalInfoGroup of the digital delivery information.show fields
digitalDeliveryVariantobject example: STANDARDSpecifies 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]letterAnswerstringSpecifies 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.iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
documentInfoByLanguageobjectOptional 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
DELocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
FRLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ITLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
ENLocalizedDocumentInfoshow fields
titlestring example: Ihr SchadenfallTitle shown to a recipient whose letterbox language matches this entry's key.descriptionstringDescription shown to a recipient whose letterbox language matches this entry's key.
matchedParticipantIdstringdeliveryStatusstringdocumentStatusstringdocumentErrorCodestringrecipientStatusstringrecipientErrorCodestringpricingListarray of DetailPricingshow fields
Array of
DetailPricing.productCodestringproductNamestringpricenumber
pricePlanstringbusinessStatusHistoryarray of BusinessStatusHistoryThe history of business status changes for this delivery, ordered from the oldest to the most recent status change.show fields
Array of
BusinessStatusHistory.businessStatusobject example: DELIVEREDThe business status of the delivery at this point in history.changedAtstring (date-time) format: date-time example: 2023-11-14T22:13:20ZThe UTC timestamp when the business status changed.triggeredByUserFirstNamestring example: JohnThe first name of the user who triggered the status change.triggeredByUserLastNamestring example: DoeThe last name of the user who triggered the status change.
effectiveILetterParametersarray of EffectiveILetterParameterThe 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.keystring example: claimIdThe parameter key.valuestring example: CLM-2026-0042The value used for this key for this recipient.
effectiveILetterPlaceholdersarray of EffectiveILetterPlaceholderThe 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.keystring example: claimNumberThe placeholder key.valuestring example: CLM-2026-000471The 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Identity matching
Standard ePost Digital Letterbox Identity Matching4
POST/epost/v2/standard-matching-runskey / tokenStandard identity matching process.
operationId
createStandardMatchingRun — the method name a generated client uses.
Request body required
application/json RecipientInfo
recipientsarray of IdentityMatchingRecipient required minItems: 1 maxItems: 50000show fields
Array of
IdentityMatchingRecipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allCredentialShouldMatchbooleanDecides 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
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
matching-run-id required |
Responses 5
200 Matching process is processing. show body
application/json StandardMatchingRunProcessResponse
statusstringAllowed values:PROCESSING,FINISHEDmatchingResultStandardMatchingResponseshow fields
matchedRecipientsarray of StandardRecipientResponseThis list contain the recipient basic info which matched with given information.show fields
Array of
StandardRecipientResponse.senderUserIdstringThis id is for the sender to recognize the recipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.communityIdstringThe 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.
nonMatchedSenderUserIdsarray of stringThis 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
matching-run-id required |
Responses 4
200 Retrieve successfully. The matching status could be processing or finished. show body
application/json StandardMatchingRunProcessResponse
statusstringAllowed values:PROCESSING,FINISHEDmatchingResultStandardMatchingResponseshow fields
matchedRecipientsarray of StandardRecipientResponseThis list contain the recipient basic info which matched with given information.show fields
Array of
StandardRecipientResponse.senderUserIdstringThis id is for the sender to recognize the recipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.communityIdstringThe 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.
nonMatchedSenderUserIdsarray of stringThis 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/v2/standard-matchingskey / tokenIdentity matching process. Standard version just return the user's basic information.
operationId
matchStandardRecipients — the method name a generated client uses.
Request body
application/json RecipientInfo
recipientsarray of IdentityMatchingRecipient required minItems: 1 maxItems: 50000show fields
Array of
IdentityMatchingRecipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allCredentialShouldMatchbooleanDecides 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.
matchedRecipientsarray of StandardRecipientResponseThis list contain the recipient basic info which matched with given information.show fields
Array of
StandardRecipientResponse.senderUserIdstringThis id is for the sender to recognize the recipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.communityIdstringThe 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.
nonMatchedSenderUserIdsarray of stringThis 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
ePost Digital LetterBox Identity Matching with detailed recipient feedback5
POST/epost/v2/matching-runskey / tokenIdentity matching process.
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
application/json RecipientInfo
recipientsarray of IdentityMatchingRecipient required minItems: 1 maxItems: 50000show fields
Array of
IdentityMatchingRecipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allCredentialShouldMatchbooleanDecides 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
matchingRunResultLocationstringContains 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
matching-run-id required |
Responses 5
200 Matching process is processing. show body
application/json MatchingRunProcessResponse
statusstringAllowed values:PROCESSING,FINISHEDmatchingResultMatchingResponseshow fields
matchedRecipientsarray of MatchedRecipientThis list contain the recipient info which matched with given information.show fields
Array of
MatchedRecipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.senderUserIdstringThis id is for the sender to recognize the recipient.levelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.notMatchCredentialsarray of string example: [EMAIl, MOBILE_NUMBER]The list credentials not matched.errorMessagestringThe error message of matching services (if any)communityIdstringThe 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.
nonMatchedRecipientsarray of MatchedRecipientThis list contain the non-matched recipient with the error message corresponding.show fields
Array of
MatchedRecipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.senderUserIdstringThis id is for the sender to recognize the recipient.levelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.notMatchCredentialsarray of string example: [EMAIl, MOBILE_NUMBER]The list credentials not matched.errorMessagestringThe error message of matching services (if any)communityIdstringThe 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
matching-run-id required |
Responses 4
200 Retrieve successfully. The matching status could be processing or finished. show body
application/json MatchingRunProcessResponse
statusstringAllowed values:PROCESSING,FINISHEDmatchingResultMatchingResponseshow fields
matchedRecipientsarray of MatchedRecipientThis list contain the recipient info which matched with given information.show fields
Array of
MatchedRecipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.senderUserIdstringThis id is for the sender to recognize the recipient.levelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.notMatchCredentialsarray of string example: [EMAIl, MOBILE_NUMBER]The list credentials not matched.errorMessagestringThe error message of matching services (if any)communityIdstringThe 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.
nonMatchedRecipientsarray of MatchedRecipientThis list contain the non-matched recipient with the error message corresponding.show fields
Array of
MatchedRecipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.senderUserIdstringThis id is for the sender to recognize the recipient.levelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.notMatchCredentialsarray of string example: [EMAIl, MOBILE_NUMBER]The list credentials not matched.errorMessagestringThe error message of matching services (if any)communityIdstringThe 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/v2/matchingskey / tokenIdentity matching process.
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
recipientsarray of IdentityMatchingRecipient required minItems: 1 maxItems: 50000show fields
Array of
IdentityMatchingRecipient.senderUserIdstringThis id is for the sender to recognize the recipient.hashedPrimaryCredentialobject example: emailType of the primary credential which is hashed.hashedPrimaryValuestring example: adu7adsfnn3489asdfn334jkValue of the primary credential.derivedHashedCredentialsarray of stringThese are credentials that are hashed but aren't "Primary Credentials". There could be more than one credential.Allowed values:birthDatederivedHashedValuestring example: adu7adsfnn3489asdfn334jkThis hash value is derived from the other value "hashedPrimaryValue".unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
iLetterobjectiLetter 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
templateIdstring required maxLength: 128Id 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.batchIdstring maxLength: 128Optional 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.confidentialResponsesbooleanWhether the iLetter collects confidential responses: answers are not shown to the sender together with who gave them. Defaults to not confidential when absent.responseDeadlinestringDate 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.parametersarray of ILetterParameter maxItems: 20Default 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.keystring required maxLength: 64 pattern: \SMust 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.valuestring maxLength: 128The value substituted for this key when the recipient's iLetter resolves the data source. At most 128 characters.
placeholdersarray of ILetterPlaceholder maxItems: 100Values 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.keystring required maxLength: 64 pattern: \SKey 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.valuestring maxLength: 2000Text shown to the recipient in place of the placeholder. Any characters, including line breaks; at most 2000 characters.
allCredentialShouldMatchbooleanDecides 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.
matchedRecipientsarray of MatchedRecipientThis list contain the recipient info which matched with given information.show fields
Array of
MatchedRecipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.senderUserIdstringThis id is for the sender to recognize the recipient.levelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.notMatchCredentialsarray of string example: [EMAIl, MOBILE_NUMBER]The list credentials not matched.errorMessagestringThe error message of matching services (if any)communityIdstringThe 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.
nonMatchedRecipientsarray of MatchedRecipientThis list contain the non-matched recipient with the error message corresponding.show fields
Array of
MatchedRecipient.participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.senderUserIdstringThis id is for the sender to recognize the recipient.levelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.notMatchCredentialsarray of string example: [EMAIl, MOBILE_NUMBER]The list credentials not matched.errorMessagestringThe error message of matching services (if any)communityIdstringThe 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
minimum-level-of-trust required | The minimum LOT that sender want to filter the result. Ex: SILVER |
primary-credential required | The primary value that sender want to get a hashed value. Possible values: email|mobilenumber|postaladdress |
limit | |
min-timestamp | The minimum timestamp that sender want to filter the result. Ex: 2021-04-14T01:27:05.382Z |
offset |
Responses 1
200 Retrieve successfully. show body
application/json MatchingLookup
recipientsarray of MatchingLookupRecipientshow fields
Array of
MatchingLookupRecipient.hashedPrimaryValuestringlevelOfTruststring
_linksMatchingLookupLinkThe link use for matching look up.show fields
selfLinkLink metadatashow fields
hrefstring
nextLinkLink metadatashow fields
hrefstring
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
| Name | Description |
|---|---|
letter-types required | 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 |
from-date | 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 | |
letter-folder | Filter letters in specific folder Acceptable values: INBOX_FOLDER for inbox letters SENT_FOLDER for outbox letters INBOX_FOLDER is chosen by default |
limit | 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 |
offset | 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 |
read-status | 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 | Filter letters with sender case id |
senderEndToEndId | Filter letters with sender end to end id |
senderParticipantId | Filter letters with sender participant id |
senderUserId | Filter letters with sender user id |
to-date | 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 |
Responses 6
200 Retrieve letters successfully. show body
application/json array of Letter
Array of Letter.
idstring read-only example: 1Id of the letter.letterTitlestring example: eVoting questionnaireThis is the letter title.fileNamestring example: invoice.pdfThis is the name of the reference file of the letter.senderParticipantIdstring example: b0f742a3-0a54-401d-bf41-38a3a9628953The participant id of the sender.senderUserIdstring example: 84332810The sender user id of the letter.senderCaseIdstring example: 8wq2d8caThe sender case id of the letter.senderEndToEndIdstring example: 4ffdec250928157ec24ef24716468b0f25f074e6The sender end to end id of the letter.documentTypesarray of stringTypes of the letter's document.letterContentReferencestring example: https://api.klara.ch/epost/v2/letters/1/contentThis is the reference link that user can use to get to content of the letter.letterTypeobject example: CLASSIC_LETTERThe letter type.receivedDateTimestring example: 2021-09-29T04:21:10.163ZThe date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.documentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messagedescriptionstring example: Monthly invoice fileFree-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.readStatusobject example: READThe read status of the document.remainingDayToDeleteinteger (int64) format: int64 example: 30The remaining days before permanently deleteregisteredStatusstring example: PENDING | ACCEPTED | LEGALLY_ACCEPTEDThe current registration statuseLetterRegisteredboolean example: true/falseLetter 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
limit | 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 |
offset | 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 |
sender-participant-id | 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.
idstring read-only example: 1Id of the letter.letterTitlestring example: eVoting questionnaireThis is the letter title.fileNamestring example: invoice.pdfThis is the name of the reference file of the letter.senderParticipantIdstring example: b0f742a3-0a54-401d-bf41-38a3a9628953The participant id of the sender.senderUserIdstring example: 84332810The sender user id of the letter.senderCaseIdstring example: 8wq2d8caThe sender case id of the letter.senderEndToEndIdstring example: 4ffdec250928157ec24ef24716468b0f25f074e6The sender end to end id of the letter.documentTypesarray of stringTypes of the letter's document.letterContentReferencestring example: https://api.klara.ch/epost/v2/letters/1/contentThis is the reference link that user can use to get to content of the letter.letterTypeobject example: CLASSIC_LETTERThe letter type.receivedDateTimestring example: 2021-09-29T04:21:10.163ZThe date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.documentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messagedescriptionstring example: Monthly invoice fileFree-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.readStatusobject example: READThe read status of the document.remainingDayToDeleteinteger (int64) format: int64 example: 30The remaining days before permanently deleteregisteredStatusstring example: PENDING | ACCEPTED | LEGALLY_ACCEPTEDThe current registration statuseLetterRegisteredboolean example: true/falseLetter 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
sender-participant-id | 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
application/json ReadLetters
readStatusobject required example: READMarked the given letters as READ/UNREAD status. Default is READletterIdsarray of string requiredLetter ids
Responses 7
200 Successful operation show body
application/json object
processed_countinteger (int32) format: int32skipped_countinteger (int32) format: int32failed_countinteger (int32) format: int32resultsarray of LetterReadUnreadResultshow fields
Array of
LetterReadUnreadResult.letter_idstringstatusstringreasonstring
207 Partial success show body
application/json object
processed_countinteger (int32) format: int32skipped_countinteger (int32) format: int32failed_countinteger (int32) format: int32resultsarray of LetterReadUnreadResultshow fields
Array of
LetterReadUnreadResult.letter_idstringstatusstringreasonstring
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/v2/letters/searchkey / tokenSearch for letters using keywords that can be found in the letter's title, sender's name, or content.
operationId
searchLetters — the method name a generated client uses.
Parameters 5
| Name | Description |
|---|---|
limit | 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 |
offset | 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 |
search-location | Search letters with location Acceptable values: ALL for all location, is chosen by default INBOX for inbox folder STORAGE for letters in storage TRASH for deleted letters in trash folder |
sender-participant-id | Sender participant id of letters (Optional), This unique ID can be used to reference the sender |
value | Key words to search letters, it can be sender name, letter title, text content, etc. |
Responses 6
200 Retrieve letters successfully. show body
application/json array of Letter
Array of Letter.
idstring read-only example: 1Id of the letter.letterTitlestring example: eVoting questionnaireThis is the letter title.fileNamestring example: invoice.pdfThis is the name of the reference file of the letter.senderParticipantIdstring example: b0f742a3-0a54-401d-bf41-38a3a9628953The participant id of the sender.senderUserIdstring example: 84332810The sender user id of the letter.senderCaseIdstring example: 8wq2d8caThe sender case id of the letter.senderEndToEndIdstring example: 4ffdec250928157ec24ef24716468b0f25f074e6The sender end to end id of the letter.documentTypesarray of stringTypes of the letter's document.letterContentReferencestring example: https://api.klara.ch/epost/v2/letters/1/contentThis is the reference link that user can use to get to content of the letter.letterTypeobject example: CLASSIC_LETTERThe letter type.receivedDateTimestring example: 2021-09-29T04:21:10.163ZThe date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.documentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messagedescriptionstring example: Monthly invoice fileFree-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.readStatusobject example: READThe read status of the document.remainingDayToDeleteinteger (int64) format: int64 example: 30The remaining days before permanently deleteregisteredStatusstring example: PENDING | ACCEPTED | LEGALLY_ACCEPTEDThe current registration statuseLetterRegisteredboolean example: true/falseLetter 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/epost/v2/letters/{letter-id}key / tokenDelete letter
operationId
deleteLetter — the method name a generated client uses.
Parameters 1
| Name | Description |
|---|---|
letter-id required | Id of the letter needed to be deleted |
Responses 5
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
letter-id required | The id of the letter |
Responses 6
200 Retrieve letter successfully. show body
application/json Letter
idstring read-only example: 1Id of the letter.letterTitlestring example: eVoting questionnaireThis is the letter title.fileNamestring example: invoice.pdfThis is the name of the reference file of the letter.senderParticipantIdstring example: b0f742a3-0a54-401d-bf41-38a3a9628953The participant id of the sender.senderUserIdstring example: 84332810The sender user id of the letter.senderCaseIdstring example: 8wq2d8caThe sender case id of the letter.senderEndToEndIdstring example: 4ffdec250928157ec24ef24716468b0f25f074e6The sender end to end id of the letter.documentTypesarray of stringTypes of the letter's document.letterContentReferencestring example: https://api.klara.ch/epost/v2/letters/1/contentThis is the reference link that user can use to get to content of the letter.letterTypeobject example: CLASSIC_LETTERThe letter type.receivedDateTimestring example: 2021-09-29T04:21:10.163ZThe date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.documentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messagedescriptionstring example: Monthly invoice fileFree-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.readStatusobject example: READThe read status of the document.remainingDayToDeleteinteger (int64) format: int64 example: 30The remaining days before permanently deleteregisteredStatusstring example: PENDING | ACCEPTED | LEGALLY_ACCEPTEDThe current registration statuseLetterRegisteredboolean example: true/falseLetter 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/v2/letters/{letter-id}/acceptkey / tokenAccept a letter by id.
operationId
acceptLetter — the method name a generated client uses.
Parameters 1
| Name | Description |
|---|---|
letter-id required | Id of the letter to accept |
Responses 4
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PATCH/epost/v2/letters/{letter-id}/archivekey / tokenArchive a letter from Letterbox to the root or to a specific folder in Storage.
operationId
archiveLetter — the method name a generated client uses.
Parameters 2
| Name | Description |
|---|---|
letter-id required | The ID of the letter to archive |
destination-directory-id | Destination folder id. If empty, the letter will be stored in the root storage. |
Responses 4
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
letter-id required | The id of the letter |
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/v2/letters/{letter-id}/rejectkey / tokenReject a letter by id.
operationId
rejectLetter — the method name a generated client uses.
Parameters 1
| Name | Description |
|---|---|
letter-id required | Id of the letter to reject |
Responses 4
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/v2/letters/{letter-id}/restorekey / tokenRestore a letter being deleted from inbox by letter id.
operationId
restoreLetter — the method name a generated client uses.
Parameters 1
| Name | Description |
|---|---|
letter-id required | Id of the letter needed to be restored |
Responses 5
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/v2/letters/{letter-id}/thumbnailkey / tokenGet thumbnail of a letter with given id.
operationId
getLetterThumbnail — the method name a generated client uses.
Parameters 1
| Name | Description |
|---|---|
letter-id required | Id of the letter to get the thumbnail for. |
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
ePost Digital Letterbox Onboarding and Profile Management1
POST/epost/onboardingkey / tokenImproves users's onboarding experience and add credentials
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
| Name | Description |
|---|---|
encrypt-token | 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. |
Request body required
application/json Onboarding
pinBrandedFolderbooleanaddingCredentialobjectAfter user scan the qr code, these address and credentials data will be added to user account in mobile app.show fields
othercredentialsarray of QrCodeCredentialList of credentials to be add to user account, who scan the qr code.show fields
Array of
QrCodeCredential.nameobject required example: EMAILName of an qr code credential. Valid values: MOBILE, TAX_ID, EMAILvaluestring required example: peter.muster@gmail.comValue of an qr code credential.verificationScoreinteger (int32) format: int32 example: 0Verification score
addressobjectAfter user scan the qr code, this address data will be added to user account in mobile app.show fields
typeobject required example: POSTALType of an qr code address. Valid values: PO_BOX, POSTALfirstNamestring required example: PeterFirst name of an address.lastNamestring required example: MusterLast name of an address.streetstring example: BahnhofstrasseStreet name of an address.streetNumberstring example: 20Street number of an address.zipCodestring example: 3000Zip code of an address.citystring example: BernCity code of an address.additionalAddressLinestring example: additional address infoAdditional to an address.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameverificationScoreinteger (int32) format: int32 example: 50Verification scoregenderstring example: maleGender 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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.
directoryIdstring read-only example: 6406a0a6f000d7555cfffb92Id of the directory. Empty for branded directory.directoryNamestring example: WorkingName of the directorynumberOfDocumentsinteger (int32) format: int32 example: 10Number of documents in the directoryparentDirectoryIdsarray of stringThe parent folder's IDs of the folder. Empty if the folder is in the root storage.hasSubDirectoriesboolean example: TrueFlag 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
| Name | Description |
|---|---|
directory-id | The ID of the folder to get for letters. If empty, it will get letters in the root storage. |
limit | 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 |
offset | 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 |
Responses 4
200 Retrieve letters successfully. show body
application/json array of Letter
Array of Letter.
idstring read-only example: 1Id of the letter.letterTitlestring example: eVoting questionnaireThis is the letter title.fileNamestring example: invoice.pdfThis is the name of the reference file of the letter.senderParticipantIdstring example: b0f742a3-0a54-401d-bf41-38a3a9628953The participant id of the sender.senderUserIdstring example: 84332810The sender user id of the letter.senderCaseIdstring example: 8wq2d8caThe sender case id of the letter.senderEndToEndIdstring example: 4ffdec250928157ec24ef24716468b0f25f074e6The sender end to end id of the letter.documentTypesarray of stringTypes of the letter's document.letterContentReferencestring example: https://api.klara.ch/epost/v2/letters/1/contentThis is the reference link that user can use to get to content of the letter.letterTypeobject example: CLASSIC_LETTERThe letter type.receivedDateTimestring example: 2021-09-29T04:21:10.163ZThe date and time (yyyy-MM-dd'T'HH:mm:ssZ) that the letter was received.documentMessagestring example: Dear Peter Your appointment on 28.05.2022 has been cancelled. Please contact us to arrange a new oneThe message content of the simple short messagedescriptionstring example: Monthly invoice fileFree-text description shown alongside the letter in eArchive. Sourced from the description supplied at upload time.readStatusobject example: READThe read status of the document.remainingDayToDeleteinteger (int64) format: int64 example: 30The remaining days before permanently deleteregisteredStatusstring example: PENDING | ACCEPTED | LEGALLY_ACCEPTEDThe current registration statuseLetterRegisteredboolean example: true/falseLetter 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
fileobject format: binaryA binary file, users can push the binary via API document for testing.
PDF binaries have to be delivered in the format PDF/A.metadataobjectmetadatashow fields
fileNamestring required pattern: \S example: sample.xlsxOriginal file name (with extension).documentTitlestring required pattern: \S example: sampleDisplay title shown in eArchive.documentReferenceDatestring required pattern: \S example: 2026-05-06Reference date of the document in ISO local-date format (yyyy-MM-dd).documentTypesarray of stringDocument types (free-form tags such asinvoice,receipt,contract,HR). Defaults to an empty list when omitted.senderNamestring example: ABC AGDisplay name of the sender.descriptionstring example: Invoice fileDisplay description shown in eArchive.
directoryIdsarray of stringThe 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
documentIdstring example: 6a028c8e3a805659063bde2fIdentifier of the newly archived document.fileNamestring example: Invoice_2026_05_08.pdfFile name of the stored document (post sanitization).documentTitlestring example: Invoice 2026-05-08Display title of the archived document.documentReferenceDatestring example: 2026-05-08Reference date of the document (yyyy-MM-dd).descriptionstring example: Monthly partner export for invoicing reconciliationDisplay description of the archived document.
Sourced from the BFF response fielddocumentDescriptionand renamed here todescriptionso the public API uses one consistent term across request and response.directoryIdsarray of stringDirectory 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 fieldfolderIdsand renamed here todirectoryIdsso the public API uses one consistent term across request and response.createdBystring example: kiendong2411@axongroupio.chUser identifier (typically email) that created the document.createdDatestring example: 2026-05-12T02:12:30.691ZCreation timestamp in ISO-8601 format (UTC).updatedBystring example: kiendong2411@axongroupio.chUser identifier (typically email) of the last update. Equal tocreatedByon initial upload.updatedDatestring example: 2026-05-12T02:12:30.691ZLast update timestamp in ISO-8601 format (UTC). Equal tocreatedDateon initial upload.linkobjectResource link references for the archived document.show fields
selfstring example: 064f1c76-ed3e-4d3d-800b-9195e13edcbe/documents/6a028c8e3a805659063bde2fSelf link to the archived document, relative to the eArchive backend ({tenantId}/documents/{documentId}).
versionNumberinteger (int32) format: int32 example: 1Monotonically increasing version number of the document. Starts at1on 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Signing
ePost Sign10
GET/epost/signing/billing-allowlistkey / tokenList the calling company's billing allowlist.
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.
idstring (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51Server-assigned unique identifier of this allowlist entry. Pass this value asentry-idonDELETE /signing/billing-allowlist/{entry-id}to remove it.userEmailstring example: jane.doe@example.comEmail of the individual ePost user authorised to bill signing requests to this company.userParticipantIdstring nullable example: c56a24e3-55af-4d96-8cf3-8c127116efc5ePost participantId resolved for userEmail at the time this entry was added.createdAtstring (date-time) format: date-time example: 2026-10-01T10:03:34ZCreation 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/signing/billing-allowlistkey / tokenAuthorise an individual ePost user to bill signing requests to the calling company.
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
application/json BillingAllowlistAddRequest
emailstring required pattern: \S example: jane.doe@example.comEmail 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
idstring (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51Server-assigned unique identifier of this allowlist entry. Pass this value asentry-idonDELETE /signing/billing-allowlist/{entry-id}to remove it.userEmailstring example: jane.doe@example.comEmail of the individual ePost user authorised to bill signing requests to this company.userParticipantIdstring nullable example: c56a24e3-55af-4d96-8cf3-8c127116efc5ePost participantId resolved for userEmail at the time this entry was added.createdAtstring (date-time) format: date-time example: 2026-10-01T10:03:34ZCreation 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/epost/signing/billing-allowlist/{entry-id}key / tokenRemove an entry from the calling company's billing allowlist.
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
| Name | Description |
|---|---|
entry-id required | Server-assigned unique identifier of the allowlist entry to remove, as returned by GET /signing/billing-allowlist or POST /signing/billing-allowlist. |
Responses 6
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/signing/billing-companieskey / tokenList companies the authenticated user may bill a signing to.
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.
companyTenantIdstring example: c60d31fa-f335-4957-872a-90b035632081Tenant id of the company. Pass this value asbillToCompanyTenantIdon submission.namestring example: Muster AGCompany 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/signing/processeskey / tokenList signing processes of the calling tenant.
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
| Name | Description |
|---|---|
limit | Maximum number of items per page. Defaults to 25, capped at 200. |
offset | 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. |
status | 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 |
Responses 5
200 A page of signing processes. show body
application/json SigningProcessListResponse
itemsarray of objectPage of signing processes belonging to the calling tenant.show fields
Array of
object.processIdstring (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51Unique identifier of the signing process.submittedByobjectWho the signing request came from (creator).show fields
pidstring nullable example: c60d31fa-f335-4957-872a-90b035632081Internal ePost id of the resolved tenant.nullwhile the tenant cannot yet be resolved (e.g. forced onboarding pending).namestring nullable example: Anna MusterName as used within the signing process / signature itself (verified name applied at signing).nullwhile unresolved.
titlestring example: Rental contract Bahnhofstrasse 12Title of the signing request.descriptionstring nullable example: Please sign by the end of the month.Optional description.statusobject example: IN_PROGRESSCurrent lifecycle status.Allowed values:CREATED,IN_PROGRESS,COMPLETED,EXPIRED,CANCELLEDdeadlinestring (date) format: date example: 2026-12-31Signing deadline (ISO 8601).createdAtstring (date-time) format: date-time example: 2026-08-13T09:15:30ZCreation timestamp (ISO 8601).
totalinteger (int64) format: int64 example: 137Total 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/epost/signing/processeskey / tokenSubmit a document for signing and create a signing process.
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
| Name | Description |
|---|---|
Idempotency-Key | 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. |
Request body required
file— the PDF to be signed (application/pdf). Exactly ONE file per process. Size limit: 200 MB per document. Requests advertising a largerContent-Lengthare rejected with HTTP 413 (SIGNING_UPLOAD_TOO_LARGE) before the body is buffered; missing / malformedContent-Lengthis rejected with HTTP 411 (SIGNING_CONTENT_LENGTH_REQUIRED).metadata—application/jsonbody of typeSigningProcessCreateRequest.
How to fill
metadata:title(required, ≤ 255) — shown in the list and the signing room.description(optional, ≤ 2000).signatureType(required) — one ofSES,AES,QES. Locked after creation.participants(required, ≥ 1) — must contain at least oneADMIN, at least oneSIGNER, AND at least oneRECEIVER(the signed document is delivered strictly toRECEIVERparticipants; a request without one is rejected with HTTP 422). SeeParticipantInput.mode(optional, defaultPARALLEL) — locked after creation.deadline(required, ISO date).documentHandling(optional) —allowPrint/allowSaveboth default tofalse.forceOnboarding(required) — only effective when the participant credential is an email address.billToCompanyTenantId(optional) — retrieve eligible values viaGET /signing/billing-companies. Requires theDOCUMENT_SIGN_BILLINGcompany role on the referenced company.
multipart/form-data SigningProcessMultipartForm
fileobject format: binaryA binary file, users can push the binary via API document for testing.
PDF binaries have to be delivered in the format PDF/A.metadataobjectTheSigningProcessCreateRequestmetadata JSON — see the field-by-field guide in the operation description.show fields
titlestring required maxLength: 255 pattern: \S example: Rental contract Bahnhofstrasse 12Title of the signing request. Shown to participants in the signing room and in the process list.descriptionstring maxLength: 2000 example: Please sign by the end of the month.Optional free-form description shown next to the title.signatureTypeobject required example: SESSwissSign signature type. Locked once the process is created.Allowed values:SES,AES,QESparticipantsarray of object required minItems: 1Participants of the process. Must contain at least oneADMIN(the creator) and at least oneSIGNER.show fields
Array of
object.rolesarray of string required minItems: 1One or more roles the participant holds in this process. Must contain at least one role. Every process must contain at least oneADMINand at least oneSIGNER.Allowed values:ADMIN,SIGNER,RECEIVERsenderUserIdstring example: user-42Optional sender-user reference forwarded to the signing room and to the audit log.hashedPrimaryCredentialstring example: emailWhich credential is hashed as the primary key (e.g.email,mobileNumber).hashedPrimaryValuestring example: 5f4dcc3b5aa765d61d8327deb882cf99Hash of the primary credential value. Used for privacy-preserving matching.derivedHashedCredentialsarray of stringNames of the additional credentials mixed into the derived hash (e.g.["birthDate"]).derivedHashedValuestring example: b4a9b3f1c8d0e2a5f6b7c8d9e0a1b2c3Hash of the derived credential combination.unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Reuses the sharedUnhashedCredentialDTO used elsewhere in the public API (e.g. ePost deliveries).show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
allCredentialShouldMatchboolean default: false example: FalseIftrue, every supplied credential MUST match to resolve the participant. Iffalse, any one matching credential is sufficient. Defaults tofalse.sequenceIndexinteger (int32) format: int32 min: 1 example: 11-based order of this participant when the process runs inSEQUENTIALmode. Ignored inPARALLELmode.signatureFieldsarray of SignatureFieldOptional signature field positions for this participant. Empty = SwissSign default placement.show fields
Array of
SignatureField.fieldNamestring example: SignatureField_1Logical name of the signature field on the PDF form (matches the AcroForm field name when present).pageIndexinteger (int32) format: int32 min: 0 example: 0Zero-based index of the PDF page the field is placed on.xnumber (double) format: double example: 72X coordinate of the field's lower-left corner (PDF points).ynumber (double) format: double example: 144Y coordinate of the field's lower-left corner (PDF points).widthnumber (double) format: double example: 180Width of the field (PDF points).heightnumber (double) format: double example: 48Height of the field (PDF points).
modeobject default: PARALLEL example: PARALLELSigning order strategy. Defaults toPARALLEL. Locked once the process is created.Allowed values:PARALLEL,SEQUENTIALdeadlinestring (date) required format: date pattern: \S example: 2026-12-31Absolute date by which every required signature must have been collected (ISO 8601).documentHandlingobjectRestrictions applied to the document while the process is running.show fields
allowPrintboolean default: false example: FalseWhether participants may print the document from the signing room. Defaults tofalse.allowSaveboolean default: false example: FalseWhether participants may download / save the document from the signing room. Defaults tofalse.
forceOnboardingboolean required example: TrueWhether 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 onlySES.billToCompanyTenantIdstring example: c60d31fa-f335-4957-872a-90b035632081Optional company tenant id to bill this signing to ("send for a company"). The acting user must hold theDOCUMENT_SIGN_BILLINGcompany role in the KLARA web client role system on the referenced company; otherwise the request is rejected with 403. Retrieve eligible companies viaGET /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
processIdstring (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51Server-assigned unique identifier of the signing process.statusobject example: CREATEDInitial 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/signing/processes/{processId}key / tokenGet a signing process — submitted data plus current signing status.
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
| Name | Description |
|---|---|
processId required | Server-assigned unique identifier of the signing process. |
Responses 6
200 Current state of the signing process. show body
application/json SigningProcess
processIdstring (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51Unique identifier of the signing process.titlestring example: Rental contract Bahnhofstrasse 12Title of the signing request.descriptionstring nullable example: Please sign by the end of the month.Optional description.submittedByobjectWho the signing request came from.show fields
pidstring nullable example: c60d31fa-f335-4957-872a-90b035632081Internal ePost id of the resolved tenant.nullwhile the tenant cannot yet be resolved (e.g. forced onboarding pending).namestring nullable example: Anna MusterName as used within the signing process / signature itself (verified name applied at signing).nullwhile unresolved.
signatureTypeobject example: SESChosen signature type. Locked at creation.Allowed values:SES,AES,QESmodeobject example: PARALLELSigning order strategy. Locked at creation.Allowed values:PARALLEL,SEQUENTIALdeadlinestring (date) format: date example: 2026-12-31Signing deadline (ISO 8601).documentHandlingobjectRestrictions applied to the document during the process.show fields
allowPrintboolean default: false example: FalseWhether participants may print the document from the signing room. Defaults tofalse.allowSaveboolean default: false example: FalseWhether participants may download / save the document from the signing room. Defaults tofalse.
forceOnboardingboolean example: TrueWhether forced onboarding was requested for unresolved email participants.statusobject example: IN_PROGRESSCurrent lifecycle status.Allowed values:CREATED,IN_PROGRESS,COMPLETED,EXPIRED,CANCELLEDdeliveryStateobject example: PARTIALDelivery/orchestration state of the process side effects (independent ofstatus).Allowed values:PENDING,IN_PROGRESS,PARTIAL,COMPLETE,FAILEDsignedCountinteger (int32) format: int32 example: 1Number of participants that have already signed.pendingCountinteger (int32) format: int32 example: 2Number of participants still outstanding (PENDING/FORCED_ONBOARDING).participantsarray of objectParticipants with their current signing status.show fields
Array of
object.internalTrackingIdstring (uuid) format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant onPATCH.participantIdstring nullable example: c60d31fa-f335-4957-872a-90b035632081Internal ePost id of the resolved tenant.nullwhile the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).namestring nullable example: Anna MusterName as used within the signing process / signature itself.nullwhile unresolved. Per CISO, no additional profile data from ePost is exposed here.rolesarray of stringRole(s) held by this participant within the process.Allowed values:ADMIN,SIGNER,RECEIVERstatusobject example: PENDINGCurrent signing status of this participant.Allowed values:PENDING,FORCED_ONBOARDING,SIGNED,REJECTED,EXPIRED,REMOVED,NOT_REQUIRED,FULFILLED_BY_OTHERdeliveryStatusobject nullable example: DELIVEREDDelivery progress of the initial document to this participant, independent of the signingstatusabove.Allowed values:PENDING,DELIVERED,ONBOARDING_SENT,NOT_DELIVERED,FAILEDrecipientDeliveryStatusobject nullable example: DELIVEREDDelivery progress of the final signed document to this participant once the process completes, independent ofdeliveryStatusabove (which only covers the initial document).Allowed values:PENDING,DELIVERED,ONBOARDING_SENT,SUBMITTER_FALLBACK,SKIPPED_NO_RECIPIENT,FAILEDhashedPrimaryValuestring nullable example: 5f4dcc3b5aa765d61d8327deb882cf99Correlates the returned participant with the hash the caller submitted.signedByUserEmailstring nullable example: anna.muster@example.chEmail of the ePost account in whose name the signature was made (account owner).nullbefore signing.effectiveSignerUserEmailstring nullable example: delegate@example.chEmail of the user who actually signed (e.g. a shared-account user).nullbefore signing.sequenceIndexinteger (int32) format: int32 nullable example: 11-based order (SEQUENTIALmode).nullinPARALLELmode.rejectedReasonstring nullable example: Wrong recipientReason provided when the participant refused to sign.nullotherwise.signedAtstring (date-time) format: date-time nullable example: 2026-09-01T14:22:07ZTimestamp at which the participant signed (ISO 8601).nullbefore signing.occupiedboolean example: FalseWhether the signing room is currently held (locked) by this participant.
documentobjectMetadata of the submitted document (never the payload).show fields
fileNamestring example: rental-contract.pdfOriginal file name of the uploaded document.contentTypestring example: application/pdfMIME type of the document.sizeBytesinteger (int64) format: int64 example: 154382Size of the document in bytes.currentVersioninteger (int32) format: int32 example: 2Current document version. Increments with each collected signature.
createdAtstring (date-time) format: date-time example: 2026-08-13T09:15:30ZCreation timestamp (ISO 8601).completedAtstring (date-time) format: date-time nullable example: 2026-09-05T11:03:19ZTimestamp at which every required signature was collected.nullwhile incomplete.deleteAtstring (date-time) format: date-time nullable example: 2026-12-04T09:15:30ZWhen 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PATCH/epost/signing/processes/{processId}key / tokenUpdate a running signing process (ADMIN-only).
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
| Name | Description |
|---|---|
processId required | Server-assigned unique identifier of the signing process. |
Request body required
application/json SigningProcessUpdate
titlestring 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.descriptionstring 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.deadlinestring (date) format: date example: 2027-01-31New absolute deadline (ISO 8601). Must be strictly in the future. Omit to keep the current deadline.documentHandlingobjectNew document-handling restrictions. Omit to keep the current values; when supplied, replaces the current values as a whole.show fields
allowPrintboolean default: false example: FalseWhether participants may print the document from the signing room. Defaults tofalse.allowSaveboolean default: false example: FalseWhether participants may download / save the document from the signing room. Defaults tofalse.
statusobject example: CANCELLEDOnlyCANCELLEDis accepted — deactivates the process (SwissSignsignaturesCancelProcessing). 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
processIdstring (uuid) format: uuid example: 6c2df3c0-5b1a-4c92-9c46-3b8a9e0e2d51Unique identifier of the signing process.titlestring example: Rental contract Bahnhofstrasse 12Title of the signing request.descriptionstring nullable example: Please sign by the end of the month.Optional description.submittedByobjectWho the signing request came from.show fields
pidstring nullable example: c60d31fa-f335-4957-872a-90b035632081Internal ePost id of the resolved tenant.nullwhile the tenant cannot yet be resolved (e.g. forced onboarding pending).namestring nullable example: Anna MusterName as used within the signing process / signature itself (verified name applied at signing).nullwhile unresolved.
signatureTypeobject example: SESChosen signature type. Locked at creation.Allowed values:SES,AES,QESmodeobject example: PARALLELSigning order strategy. Locked at creation.Allowed values:PARALLEL,SEQUENTIALdeadlinestring (date) format: date example: 2026-12-31Signing deadline (ISO 8601).documentHandlingobjectRestrictions applied to the document during the process.show fields
allowPrintboolean default: false example: FalseWhether participants may print the document from the signing room. Defaults tofalse.allowSaveboolean default: false example: FalseWhether participants may download / save the document from the signing room. Defaults tofalse.
forceOnboardingboolean example: TrueWhether forced onboarding was requested for unresolved email participants.statusobject example: IN_PROGRESSCurrent lifecycle status.Allowed values:CREATED,IN_PROGRESS,COMPLETED,EXPIRED,CANCELLEDdeliveryStateobject example: PARTIALDelivery/orchestration state of the process side effects (independent ofstatus).Allowed values:PENDING,IN_PROGRESS,PARTIAL,COMPLETE,FAILEDsignedCountinteger (int32) format: int32 example: 1Number of participants that have already signed.pendingCountinteger (int32) format: int32 example: 2Number of participants still outstanding (PENDING/FORCED_ONBOARDING).participantsarray of objectParticipants with their current signing status.show fields
Array of
object.internalTrackingIdstring (uuid) format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant onPATCH.participantIdstring nullable example: c60d31fa-f335-4957-872a-90b035632081Internal ePost id of the resolved tenant.nullwhile the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).namestring nullable example: Anna MusterName as used within the signing process / signature itself.nullwhile unresolved. Per CISO, no additional profile data from ePost is exposed here.rolesarray of stringRole(s) held by this participant within the process.Allowed values:ADMIN,SIGNER,RECEIVERstatusobject example: PENDINGCurrent signing status of this participant.Allowed values:PENDING,FORCED_ONBOARDING,SIGNED,REJECTED,EXPIRED,REMOVED,NOT_REQUIRED,FULFILLED_BY_OTHERdeliveryStatusobject nullable example: DELIVEREDDelivery progress of the initial document to this participant, independent of the signingstatusabove.Allowed values:PENDING,DELIVERED,ONBOARDING_SENT,NOT_DELIVERED,FAILEDrecipientDeliveryStatusobject nullable example: DELIVEREDDelivery progress of the final signed document to this participant once the process completes, independent ofdeliveryStatusabove (which only covers the initial document).Allowed values:PENDING,DELIVERED,ONBOARDING_SENT,SUBMITTER_FALLBACK,SKIPPED_NO_RECIPIENT,FAILEDhashedPrimaryValuestring nullable example: 5f4dcc3b5aa765d61d8327deb882cf99Correlates the returned participant with the hash the caller submitted.signedByUserEmailstring nullable example: anna.muster@example.chEmail of the ePost account in whose name the signature was made (account owner).nullbefore signing.effectiveSignerUserEmailstring nullable example: delegate@example.chEmail of the user who actually signed (e.g. a shared-account user).nullbefore signing.sequenceIndexinteger (int32) format: int32 nullable example: 11-based order (SEQUENTIALmode).nullinPARALLELmode.rejectedReasonstring nullable example: Wrong recipientReason provided when the participant refused to sign.nullotherwise.signedAtstring (date-time) format: date-time nullable example: 2026-09-01T14:22:07ZTimestamp at which the participant signed (ISO 8601).nullbefore signing.occupiedboolean example: FalseWhether the signing room is currently held (locked) by this participant.
documentobjectMetadata of the submitted document (never the payload).show fields
fileNamestring example: rental-contract.pdfOriginal file name of the uploaded document.contentTypestring example: application/pdfMIME type of the document.sizeBytesinteger (int64) format: int64 example: 154382Size of the document in bytes.currentVersioninteger (int32) format: int32 example: 2Current document version. Increments with each collected signature.
createdAtstring (date-time) format: date-time example: 2026-08-13T09:15:30ZCreation timestamp (ISO 8601).completedAtstring (date-time) format: date-time nullable example: 2026-09-05T11:03:19ZTimestamp at which every required signature was collected.nullwhile incomplete.deleteAtstring (date-time) format: date-time nullable example: 2026-12-04T09:15:30ZWhen 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/epost/signing/processes/{processId}/documentkey / tokenDownload the final signed document.
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
| Name | Description |
|---|---|
processId required | Server-assigned unique identifier of the signing process. |
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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PATCH/epost/signing/processes/{processId}/participants/{participantId}key / tokenUpdate a participant of a running signing process (ADMIN-only).
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
| Name | Description |
|---|---|
participantId required | Process-local participant id (stable, also while the participant is unresolved). Matches ParticipantStatus.internalTrackingId from the GET view. |
processId required | Server-assigned unique identifier of the signing process. |
Request body required
application/json ParticipantUpdate
rolesarray of stringNew role set. Must be non-empty when supplied. The process must retain at least oneADMINand at least oneSIGNER; removing the lastADMINresults in HTTP 409.Allowed values:ADMIN,SIGNER,RECEIVERhashedPrimaryCredentialstring example: emailWhich credential is hashed as the primary key (e.g.email,mobileNumber). Omit to keep the current value.hashedPrimaryValuestring example: 5f4dcc3b5aa765d61d8327deb882cf99Hash of the primary credential value. Omit to keep the current value.derivedHashedCredentialsarray of stringNames of the additional credentials mixed into the derived hash. Omit to keep the current value.derivedHashedValuestring example: b4a9b3f1c8d0e2a5f6b7c8d9e0a1b2c3Hash of the derived credential combination. Omit to keep the current value.unhashedCredentialsobjectFull participant credentials — submission only. Never returned byGETendpoints. Omit to keep the current value.show fields
universalNamestring example: KLARA Business AG / Peter MusterIf 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 recipientfirstNamestring example: PeterFirst name of a recipient.lastNamestring example: MusterLast name of a recipient.companyNamestring example: KLARAIf the tenant entry is a business customer, i.e a Company, enter the company name here.companyUidstring example: CHE-123.456.789If 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.streetstring example: Bahnhofstrasse 10aStreet 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.streetNumberstring example: 20Street number in the address of a recipient.zipCodestring example: 3000Zip code in the address of a recipient.citystring example: BernCity in the address of a recipient.emailstring example: peter.muster@gmail.comEmail 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.mobileNumberstring example: +41909112233Mobile 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.birthDatestring (date) format: date example: 1990-01-02Birth date of a recipient in ISO 8601 format (yyyy-mm-dd)participantIdstringThis field is result of identity matching process, if value is entered in request then it will have highest priority for matching search process.clientLegacyIdstringThis id is optional and is used to support legacy systems.minimumLevelOfTrustobjectThe Levels of Trust (LoT) define how strong a user is verified in the KLARA ecosystem. Three possible level of trust: BRONZE, SILVER, GOLD.socialSecurityNumberstring example: 756.1234.5678.97Social security number of a recipient and must be unique.taxIdstring example: 263125Tax ID of a recipient and must be unique.postOfficeBoxNumberstring example: 12Post office box numberpostOfficeBoxZipstring example: 1212Post office box zipcodepostOfficeBoxTownNamestring example: Vervey 1Post office box town nameunstructuredAddressLine01string example: Peter MusterIf 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 rateunstructuredAddressLine02string example: Bahnhofsstr 20If 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 rateunstructuredAddressLine03string example: 8004 Zurich SwitzerlandIf 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 ratebillRecipientIdstring example: 41010560425610173Bill 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.
allCredentialShouldMatchboolean example: FalseIftrue, every supplied credential MUST match to resolve the participant. Omit to keep the current value.sequenceIndexinteger (int32) format: int32 min: 1 example: 11-based order of this participant when the process runs inSEQUENTIALmode. Ignored inPARALLELmode. Omit to keep the current value.signatureFieldsarray of SignatureFieldSignature 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.fieldNamestring example: SignatureField_1Logical name of the signature field on the PDF form (matches the AcroForm field name when present).pageIndexinteger (int32) format: int32 min: 0 example: 0Zero-based index of the PDF page the field is placed on.xnumber (double) format: double example: 72X coordinate of the field's lower-left corner (PDF points).ynumber (double) format: double example: 144Y coordinate of the field's lower-left corner (PDF points).widthnumber (double) format: double example: 180Width of the field (PDF points).heightnumber (double) format: double example: 48Height of the field (PDF points).
statusobject example: REMOVEDOnlyREMOVEDis accepted — removes the participant from the process. Any other value results in HTTP 400. Only reachable while the participant isPENDINGorFORCED_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
internalTrackingIdstring (uuid) format: uuid example: b4a9b3f1-c8d0-4e2a-b5f6-b7c8d9e0a1b2Process-local participant id. Stable, also while the participant is unresolved. Use this to address the participant onPATCH.participantIdstring nullable example: c60d31fa-f335-4957-872a-90b035632081Internal ePost id of the resolved tenant.nullwhile the participant cannot be resolved (e.g. forced onboarding pending, address-only credential).namestring nullable example: Anna MusterName as used within the signing process / signature itself.nullwhile unresolved. Per CISO, no additional profile data from ePost is exposed here.rolesarray of stringRole(s) held by this participant within the process.Allowed values:ADMIN,SIGNER,RECEIVERstatusobject example: PENDINGCurrent signing status of this participant.Allowed values:PENDING,FORCED_ONBOARDING,SIGNED,REJECTED,EXPIRED,REMOVED,NOT_REQUIRED,FULFILLED_BY_OTHERdeliveryStatusobject nullable example: DELIVEREDDelivery progress of the initial document to this participant, independent of the signingstatusabove.Allowed values:PENDING,DELIVERED,ONBOARDING_SENT,NOT_DELIVERED,FAILEDrecipientDeliveryStatusobject nullable example: DELIVEREDDelivery progress of the final signed document to this participant once the process completes, independent ofdeliveryStatusabove (which only covers the initial document).Allowed values:PENDING,DELIVERED,ONBOARDING_SENT,SUBMITTER_FALLBACK,SKIPPED_NO_RECIPIENT,FAILEDhashedPrimaryValuestring nullable example: 5f4dcc3b5aa765d61d8327deb882cf99Correlates the returned participant with the hash the caller submitted.signedByUserEmailstring nullable example: anna.muster@example.chEmail of the ePost account in whose name the signature was made (account owner).nullbefore signing.effectiveSignerUserEmailstring nullable example: delegate@example.chEmail of the user who actually signed (e.g. a shared-account user).nullbefore signing.sequenceIndexinteger (int32) format: int32 nullable example: 11-based order (SEQUENTIALmode).nullinPARALLELmode.rejectedReasonstring nullable example: Wrong recipientReason provided when the participant refused to sign.nullotherwise.signedAtstring (date-time) format: date-time nullable example: 2026-09-01T14:22:07ZTimestamp at which the participant signed (ISO 8601).nullbefore signing.occupiedboolean example: FalseWhether 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Authentication
Authentication3
POST/core/latest/tenantspublicReturns all tenants of a user
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
usernamestringpasswordstringaccess_tokenstring
Responses 6
200 Found tenants show body
application/json array of Tenant
Array of Tenant.
tenant_idstring example: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeecompany_idinteger (int64) format: int64 example: 1company_namestring 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
errorstringSummary of the error responseerror_descriptionstringDescription 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
errorstringSummary of the error responseerror_descriptionstringDescription 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
errorstringSummary of the error responseerror_descriptionstringDescription 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
POST/core/latest/tokenpublicGenerate tokens to access other KLARA core endpoints
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.
operationId
createPublicApiToken — the method name a generated client uses.
Request body
application/x-www-form-urlencoded object
usernamestring default:passwordstring default:grant_typestring default:tenant_idstring default:company_idstring default:refresh_tokenstring default:subject_tokenstring default:audiencestring default:
Responses 5
200 Token created show body
application/json PublicAPIToken
access_tokenstringToken used to access KLARA Public API endpoints, should be place at Authorization header of request. Access token is valid only for one company tenantexpires_ininteger (int64) format: int64Amount of time in seconds left that the access token is valid forrefresh_expires_ininteger (int64) format: int64Amount of time in seconds left that the refresh token is valid forrefreshTokenstringToken used to renew the access tokentoken_typestringType 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/token/by-microsoftpublicExchange Microsoft access token for system token
operationId
createPublicApiTokenByMicrosoft — the method name a generated client uses.
Request body
application/x-www-form-urlencoded object
microsoft_access_tokenstringtenant_idstring
Responses 5
200 Token created show body
application/json AccessTokenResponse
access_tokenstringexpires_ininteger (int64) format: int64refresh_expires_ininteger (int64) format: int64refresh_tokenstringtoken_typestringid_tokenstringnot-before-policyinteger (int32) format: int32session_statestringotherClaimsobjectshow 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
uuidstringcreatedTimestringcodestringmessagestringdetailstring 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
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
- DELETE
- 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
- DELETE
- 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
- GET
- 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
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 showeddeliveryId. The status response usesdeliveryIdfor the same value. - Correction: the status example now shows the real structure, with delivered and failed documents and a
detaillist 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
displayDeliveredDocumentto 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-Keywide 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
ErrorMessagefor them, withuuid,createdTime,codeandmessage. 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/tokenascreatePublicApiToken,POST /core/latest/token/by-microsoftascreatePublicApiTokenByMicrosoftandPOST /core/latest/tenantsaslistTenants. 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.txtindexes 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-microsoftandPOST /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-deliveriesremoved. 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 keyed404. 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.
- Most endpoints carry only a one-line summary. 20 of 48 have no description beyond the title, and the digital letterbox is affected almost entirely. The parameters and schemas are complete, the prose is not.
- No permissions are documented. No endpoint states which role or permission it needs.
- The rate limit is not published. See Limits.
- No processing time is published. The specification names the statuses of a delivery,
but not how long one may stay in
PROCESSINGor whether the platform gives up after a while. Poll at a steady pace and keep the delivery id until the status is final. - Failure codes are not listed.
errorCodeanderrorMessageof a failed delivery carry values the specification does not enumerate. Store them as they arrive, so you can ask about them later. - The print-partner interfaces are not part of this documentation. The APIs with which a print partner reports the result of a print job, and the printer-driver API, exist but are meant for print partners, not for senders. Ask enterprise support if you are one.
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.