Postcard API

Postcard API

Close

    Postcard API

    Technical specifications of Postcard API


    Bring joy to others by sending postcards and turn customers into ambassadors: with the “Postcard API” digital interface, your customers can send individual postcards – via your website, your app or with a photo booth at an event. Swiss Post takes care of printing and mailing the postcards.

    With “Postcard API” from Swiss Post, your customers can send individual postcards – complete with your company branding – and become your ambassadors. All you need is a connection to our digital interface. After the initial programming of the connection, you can use the Postcard API for the communication purposes of your choice. From a photo booth at a company event to a large-scale marketing campaign: postcards never fail to attract attention and generate affinity. It is up to you to decide how much branding you want to use to present your company on the postcard. You can also determine which communication channel your customers will use to access the postcard design process. There is a wide range of possibilities, such as via a link on your company website, an app or a Facebook plug-in.

    Postcard Elements

    Swagger Documentation

    Postcard Resource Structure

    A post card resource has the following structure:

    Postcard Resource State Event Diagram

    Common Sequence creating a postcard

    • Check if there are available postcards to send - see Campaign API
    • Create a Post card resource (POST /postcards) minimally providing the recipientAddress. If no senderAddress is preconfigured in the campaign configuration (task by Swiss Post) a senderAddress has to be provided also.
    • Add an image (PUT /postcards/{cardKey}/image).
    • Add a branding block (PUT /postcards/{cardKey}/branding/text) /  (PUT /postcards/{cardKey}/branding/image) / (PUT /postcards/{cardKey}/branding/qrtag)(optional)
    • Add a stamp image (PUT /postcards/{cardKey}/branding/stamp) (optional).
    • Set the approval for printing the post card (POST /postcards/{cardKey}/approval)

    A created postcard that is not approved within 60 minutes will be deleted.

    Text and image formats

    Supported image formats are JPEG and PNG (colour mode CYMK is not allowed) for uploading as image-file via the PUT /postcards/{cardKey}/image request.

    A postcard has the a A6 form factor. For the production a 3mm overlap of the image on all sides is generated. The print resolution must be 300dpi.

    Therefore the dimension of the front image must be 1819 x 1311 pixels.

    A image that has not the needed dimensions will be automatically proportionally scaled and trimmed.

    If an image has a lower resolution than the optimal resolution the client receives a warning. However the post card will be produced anyway if the client set the approval on the post card. Higher resolutions will be downscaled to the optimal resolution because there will be no gain in quality in the print production.

    Dimension of the stamp image must be 343 x 248 pixels.

    Dimension of the branding image must be 777 x 295 pixels.

    Text

    Text has to be UTF-8 encoded and can only contain characters from the code page CP850. If other characters are included an ENCODING warning is raised and there is no guaranty that all characters get printed faultlessly.

    Linebreaks in a text element has to be encoded with '\n'.

    What is the maximum length of the text?
    Field Max-Length
    Min-Length
    SENDER_TEXT
    900 0
    SENDER_ADDRESS
    45 0
    SENDER_ADDRESS_FIRSTNAME
    75 2
    SENDER_ADDRESS_LASTNAME
    75 2
    SENDER_ADDRESS_COMPANY
    39 2
    SENDER_ADDRESS_STREET
    50 2
    SENDER_ADDRESS_HOUSENR
    5 0
    SENDER_ADDRESS_ZIP 39 4
    SENDER_ADDRESS_CITY 30 2
    RECIPIENT_ADDRESS_TITLE
    30 0
    RECIPIENT_ADDRESS_FIRSTNAME
    75 2
    RECIPIENT_ADDRESS_LASTNAME
    75 2
    RECIPIENT_ADDRESS_COMPANY 39 2
    RECIPIENT_ADDRESS_STREET
    50 2
    RECIPIENT_ADDRESS_HOUSENR 5 0
    RECIPIENT_ADDRESS_ZIP
    39 4
    RECIPIENT_ADDRESS_CITY
    30 2
    RECIPIENT_ADDRESS_POBOX
    5 0
    RECIPIENT_ADDRESS_ADDITIONAL_INFO
    75 0
    BRANDING_TEXT_TEXT
    250 0
    BRANDING_TEXT_TEXTCOLOR 7 4
    BRANDING_TEXT_BACKGROUND_COLOR
    7 4
    BRANDING_QR_ENCODED_TEXT
    100 0
    BRANDING_QR_ACCOMPANYING_TEXT
    250 0
    BRANDING_QR_TEXTCOLOR
    7 4
    BRANDING_QR_BACKGROUND_COLOR 7 4
    How do we know when we have too much text?

    The API responds with an appropriate warning e.g. «The length of sender text is invalid»

    This is already described under «Error and warning messages»

    What is the maximum length of a word?

    This depends on the letters in the word. Generally speaking: The space for the sender text is 61 x 61px and the text is displayed with font = Arial, font size = 2.3pt, line height = 125%.

    Branding block

    There are three possible types of an branding block on a post card. The types cannot be combined on one postcard:

    Branding text:

    PUT /postcards/{cardKey}/branding/text

    Branding image:

    PUT /postcards/{cardKey}/branding/image

    Banding QR-Tag with text:

    PUT /api/v1/postcards/{cardKey}/branding/qrtag

    PUT /postcards/{cardKey}/branding/text

    Campaign API

    The campaign API allows you to get a statistic about your campaign quota. You can request the quota, the number of created post cards and the number of available post cards.

    This allows you to verify if there are available post cards before giving your user the ability to create a post card.

    Recommendation: before creating a postcard resource verify if there are available postcards to send. The number of available postcards are listed in the attribute "freeToSendPostcards" - see the following sample of an response to a campaigns API request.

    Swagger Documentation

    {
        "campaignKey": "b5d9d195-505b-48f5-93bc-fbc503e9fba8",
        "quota": 20000,
        "sendPostcards": 2566,
        "freeToSendPostcards": 17434
    }

    Authentication

    The API is secured via the OAuth 2.0 client credential flow.

    More information: RFC 6749 - Client Credentials Grant.

    Request
    Auth URL provided following contract signing
    Access Token URL provided following contract signing

    An access token has to be requested with the following key-value pairs in a POST request (set Content-Type to "application/x-www-form-urlencoded"):

    key
    value
    client_id
    provided following contract signing
    client_secret
    provided following contract signing
    scope
    PCCAPI
    grant_type
    client_credentials
    Sample response
    { "access_token": "n0xtJFWREwWhAq_Lzq6ahROIcc5N59l-SN3Yi0TXwxUuQ5yVpYm-kY8iRB1byc57rtmtJivH7lhlP11CX taoiE2Jh6y7fHn6Lqf0NJ1ONL7fxrkPpqIENDsprGMfXjC2.CMeSDXXJ5NylTWXX5Li-mM.1yLQ_q7KYZP.UMAzyj_km8nZayw brrtqBH4oeMG9hFEcerxVv9yPXD0376bJOJQRyZT6bSuiHyzJxtIcMy3Tlg8ZaU6fRm.jGxjulisJ6x_STG0zK1nI16W0bJGit PiDStG6bTED4XHriOLZUPUSZDxcjnm2JeTywgmncnrDReteJSe7BuHI6lCYTD9S5SZiK24u67vcFS8xVtwZyl7YM1zN64r1BSR sy4icGeMSKowirMRpm0wZ40xYMzABh5baP-TUvvJPlLAsF-CZo6RuWNkJZATR4N7CPXlzx_YemXc32-FY08F6go9wCa-aFDAFZ BRXJc8Ds3ACsjhy.UnYPlWoDOrOellexv11QIoz.Pqrohn7jMcWxyTumtDroVsECaohXllLUvUBTufa8Abl162Rc4pXuI1Pcm. eL22Lx.A6VLRgu28Lm.wfszskMbfVVFLh7-iZeuFESU-GcEbt.03-DbICraUH1QRA_0pHUuulQTpK_F-v29FIfM-8_Zq4-hMF. 7W2r6o_I-bZlyDr_OavG93EjSq9L_21q7pLyL7lrVS_cjinQDW_UFRk26vuBsTrzYsHm3U7B8qNxW3w7TFQ_VPJ8hDRqOb4VFn Gp1u1eMFRxgR9HWO3ccw-NPPxJJja.Ipqb2b8tV1CjQUmomLzcvWefH3bE6QM.iq4ksky5F3iFLuO_rIAAgfGQ8b-z53F3jeU9 _ab7gwcPIq0fIPpG81H64S-.l4MJ1wjvILLM_jlqZHf85K8LSXZH1CMoMg0yMRmgR2rF38AfIKmVcc9-aFZAJMZRJzJaAf3AaH b1-g3LwPL073oG8QDem5LZ0mXPSCWP47nODNBq1DDTChRnnJZ8W_uWR0Yj7wOzBwrVjpumKCCRBhf2q2y96hU-FLiRR7fZ6KG1 4gZcaFcCRrQYKa5j_rqH3bne_ZnigEl2", "token_type": "Bearer", "expires_in": 60 }

    Use the returned Bearer token in the request header to access the API within the time limit returned in the expires_in attribute.

    key
    value
    Authorization
    Bearer n0xtJFWREwWhAq_Lzq6ahROIcc5N59l-SN3Yi0TXwxUuQ5yVpYm-kY8iRB1byc57rtmtJivH7lhlP11CX...

    As an additional key for creating an post card resource a campaign key will be provided to you upon contract signing. For more detail see the swagger documentation POST /api/v1/postcards

    Error and warning messages

    Errors and warnings are returned in the following format:

    {
        "cardKey": "0fb4efdf-e8b1-4593-a20c-39ab7fc6bb36",
        "errors": [
          {
            "code": 1006,
            "description": "Recipient address is required"
          },
          {
            "code": 1007,
            "description": "Front image is required"
          }
        ],
        "warnings": [
          {
            "code": 1109,
            "description": "The length of sender text is invalid"
          }
    }

    Important: be aware that the status code of a request can be 200 but the response contains errors and warnings. Do not treat a status code 200 as a successful call per se. Always evaluate the error and warning arrays.

    Missing required fields Code
    Description
    NAME_REQUIRED
    1000
    The name is required
    FIRSTNAME_REQUIRED
    1001
    The first name is required
    STREET_REQUIRED
    1002
    The street is required
    ZIP_REQUIRED
    1003
    The zip is required
    CITY_REQUIRED
    1004
    The city is required
    NAMES_COMBINATION_REQUIRED
    1005
    Name/ first name or company is required
    SENDER_ADDRESS_REQUIRED
    1008
    Sender address is required
    RECIPIENT_ADDRESS_REQUIRED
    1006
    Recipient address is required
    FRONT_IMAGE_REQUIRED
    1007
    Front image is required
    Data validation messages
    Code
    Description
    TITLE_LENGTH_INVALID
    1100
    The length of title is invalid
    NAME_LENGTH_INVALID
    1101
    The length of name is invalid
    FIRSTNAME_LENGTH_INVALID
    1102
    The length of first name is invalid
    COMPANY_LENGTH_INVALID
    1103
    The length of company is invalid
    STREET_LENGTH_INVALID
    1104
    The length of street is invalid
    HOUSENR_LENGTH_INVALID
    1105
    The length of houseNumber is invalid
    ZIP_LENGTH_INVALID
    1106
    The length of zip is invalid
    CITY_LENGTH_INVALID
    1107
    The length of city is invalid
    POBOX_LENGTH_INVALID
    1108
    The length of poBox is invalid
    SENDER_TEXT_LENGTH_INVALID
    1109
    The length of sender text is invalid
    BRANDING_TEXT_LENGTH_INVALID
    1110
    The length of branding text is invalid
    BRANDING_TEXT_COLOR_LENGTH_INVALID
    1111
    The length of branding text color is invalid
    BRANDING_BG_COLOR_LENGTH_INVALID
    1112
    The length of branding background color is invalid
    BRANDING_ENCODED_TEXT_LENGTH_INVALID
    1113
    The length of branding encoded text is invalid
    Logical data validation messages
    Code
    Description
    NAMES_COMBINATION_NOT_ALLOWED
    1200
    The combination last name/ first name and company is not allowed
    NAME_OVERRIDE_NOT_ALLOWED
    1201
    The name can't be overwritten
    FIRSTNAME_OVERRIDE_NOT_ALLOWED
    1202
    The first name can't be overwritten
    COMPANY_OVERRIDE_NOT_ALLOWED
    1203
    The company can't be overwritten
    STREET_OVERRIDE_NOT_ALLOWED
    1204
    The street can't be overwritten
    HOUSENR_OVERRIDE_NOT_ALLOWED
    1205
    The houseNr can't be overwritten
    ZIP_OVERRIDE_NOT_ALLOWED
    1206
    The zip can't be overwritten
    CITY_OVERRIDE_NOT_ALLOWED
    1207
    The city can't be overwritten
    POBOX_OVERRIDE_NOT_ALLOWED
    1208
    The poBox can't be overwritten
    TITLE_OVERRIDE_NOT_ALLOWED
    1209
    The title can't be overwritten
    BRANDING_TEXT_OVERRIDE_NOT_ALLOWED
    1210
    The branding text can't be overwritten
    BRANDING_TEXT_COLOR_OVERRIDE_NOT_ALLOWED
    1211
    The branding text color can't be overwritten
    BRANDING_BG_COLOR_OVERRIDE_NOT_ALLOWED
    1212
    The branding background color can't be overwritten
    BRANDING_QR_TEXT_OVERRIDE_NOT_ALLOWED
    1213
    The bradning qr code can't be overwritten
    Text encoding messages
    Code
    Description
    SENDER_TEXT_INVALID_ENCODING
    1300
    Sender text has invalid encoding
    NAME_INVALID_ENCODING
    1301
    Name has invalid encoding
    FIRSTNAME_INVALID_ENCODING
    1302
    First name has invalid encoding
    STREET_INVALID_ENCODING
    1303
    Street has invalid encoding
    CITY_INVALID_ENCODING
    1304
    City has invalid encoding
    TITLE_INVALID_ENCODING
    1305
    Title has invalid encoding
    COMPANY_INVALID_ENCODING
    1306
    Company has invalid encoding
    BRANDING_TEXT_INVALID_ENCODING
    1307
    Branding text has invalid encoding
    BRANDING_QR_INVALID_ENCODING
    1308
    Branding qr code has invalid encoding
    Logical brandig block validation messages
    Code
    Description
    BRANDING_COMBINATION_NOT_ALLOWED
    1400
    The combination of branding text/qr tag and branding image is not allowed. In this case no branding will be printed.
    TEXT_COLOR_INVALID
    1401
    Branding text color has an invalid hex value example #FFFFFF
    BG_COLOR_INVALID
    1402
    Branding background color has an invalid hex value example #FFFFFF
    BRANDING_LINK_INVALID
    1403
    Branding QR link is invalid.
    Campaign messages
    Code
    Description
    CAMPAIGN_QUOTA_EXCEEDED
    2000
    Campaign quota exceeded
    CAMPAIGN_EXPIRED
    2010
    The end date of campaign is reached
    CAMPAIGN_NOT_STARTED
    2020
    The campaign has not yet started
    CAMPAIGN_NOT_ACTIVE
    2030
    The campaign is not active
    CAMPAIGN_NOT_FOUND
    4000
    Campaign not found
    CAMPAIGN_CONFIG_NOT_FOUND
    4001
    Campaign configuration not found
    BRANDING_NOT_FOUND
    4002
    Branding for campaign not found
    POSTCARD_NOT_FOUND
    4003
    Postcard not found
    Generall messages
    Code
    Description
    ENCODING_VIOLATION
    5000
    Violation of encoding rules
    FILE_FORMAT_NOT_SUPORTED
    5010
    Given file format is not supported
    BAD_RESOLUTION
    5020
    Image: higher resolution recommended
    PERIPHERAL_SYSTEM_NOT_AVAILABLE
    5050
    Peripheral system is not available
    Process messages
    Code
    Description
    POSTCARD_ALREADY_APPROVED
    6000
    The given postcard is already approved