API für den Briefversand via Deutsche Post

Mit der skalierbaren Post API von Pingen wird deine Software im Handumdrehen um automatischen Postversand via Deutsche Post und DHL erweitert. Die Integration ist dank unseren SDKs ein Kinderspiel.

Post API für Briefversand über Deutsche Post und DHL
Vorteile für Entwickler

Automatischer Postversand für deine Software

Mit der Post API von Pingen wird deine Software ganz einfach um den automatisierten Briefversand via Deutsche Post und DHL erweitern.

Deutsche Post API

Kostenlose API Schnittstelle

Wir wollen helfen, Prozesse zu automatisieren. Daher stellen wir unsere API allen Kunden kostenlos zur Verfügung.

Umfangreiche SDKs

Umfangreiche SDKs (demnächst)

Die Integration vom Briefversand ist dank unseren SDKs für PHP, Java, C# und .Net in kürzester Zeit realisiert.

Überweisungsträger

Unterstützte Überweisungsträger

Automatischer Druck als Schweizer QR-Rechnung oder mit SEPA Überweisungsträgern in Deutschland und Österreich.

Post API von Entwicklern für Entwickler

Von Entwicklern für Entwickler

Alle Funktionen von Pingen sind auch über die Post API verfügbar und in unserer Dokumentation detailliert beschrieben.

Deutsche Post Track & Trace

Track & Trace

Für jeden übermittelten Brief bietet Pingen via API ausführliche Status Informationen, um den Verlauf zu verfolgen.

Einnahmen generieren

Einnahmen generieren

Der Weiterverkauf vom Postversand bietet Integratoren spannende Möglichkeiten zum Generieren zusätzlicher Einnahmen.

So einfach funktioniert unsere API

Die Brief API von Pingen ist so flexibel und einfach wie möglich gehalten, so dass sich Integrationen im Handumdrehen realisieren lassen. Neben der einfach verständlichen Dokumentation bieten wir auch Code-Beispiele, um den Einstieg weiter zu erleichtern.

import pingen2sdk

pingen2sdk.client_id = "YOUR_OAUTH2_CLIENT_ID"
pingen2sdk.client_secret = "YOUR_OAUTH2_CLIENT_SECRET"

resp = pingen2sdk.OAuth.get_token( 
    grant_type = "client_credentials",
    scope = "letter batch webhook organisation_read",
)

try:
    print(
         pingen2sdk.FileUpload(pingen2sdk.APIRequestor(resp["access_token"]))
         .request_file_upload()
         .data
    )
except pingen2sdk.error.PingenError as e:
    print(e.status_code)
    print(e.json_body)

require __DIR__ . '/vendor/autoload.php';

$provider = new \Pingen\Provider\Pingen(
   array(
   'clientId' => 'YOUR_OAUTH2_CLIENT_ID',
   'clientSecret' => 'YOUR_OAUTH2_CLIENT_SECRET'
)
);

$access_token = $provider->getAccessToken('client_credentials');

$lettersEndpoint = (new \Pingen\Endpoints\LettersEndpoint($access_token))
    ->setOrganisationId('INSERT_YOUR_ORGANISATION_UUID_HERE');

$lettersEndpoint->uploadAndCreate(
   (new \Pingen\Endpoints\DataTransferObjects\Letter\LetterCreateAttributes())
       ->setFileOriginalName('your_original_pdf_name.pdf')
       ->setAddressPosition('left')
       ->setAutoSend(false),
   fopen('path_to_your_original_pdf_name.pdf', 'r')
);

import json
import requests

url_file_upload = 'https://api.v2.pingen.com/file-upload'
url_letters = 'https://api.v2.pingen.com/organisations/YOUR_ORGANISATION_UUID/letters'
access_token = 'INSERT_YOUR_ACCESS_TOKEN_HERE'

response = requests.get(url_file_upload, headers =
    'Authorization': 'Bearer {}'.format(access_token),
})
data = json.loads(response.text)['data']
file_url = data['attributes']['url']
file_url_signature = data['attributes']['url_signature']

file = open('path_to_your_file.pdf', 'rb')
requests.put(file_url, data=file)
file.close()

payload = {
    'data': {
         'type': 'letters',
         'attributes': {
              'file_original_name': 'your_filename.pdf',
              'file_url': file_url,
              'file_url_signature': file_url_signature,
              'address_position': 'left',
              'auto_send': False
         }
    }
}
requests.post(
    url_letters,
    json.dumps(payload),
    headers = {
         'Content-Type': 'application/vnd.api+json',
         'Authorization': 'Bearer {}'.format(access_token)
    })

$accessToken = 'INSERT_YOUR_ACCESS_TOKEN_HERE';
$organisationUuid = 'YOUR_ORGANISATION_UUID';
$filePath = 'path_to_your_file.pdf';
$fileName = 'your_filename.pdf';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.pingen.com/file-upload");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer $accessToken"]);

$response = curl_exec($ch);
curl_close($ch);

$responseData = json_decode($response, true);
$fileUploadUrl = $responseData['data']['attributes']['url'];
$fileUrlSignature = $responseData['data']['attributes']['url_signature'];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $fileUploadUrl);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_INFILE, fopen($filePath, 'r'));
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filePath));

$response = curl_exec($ch);
curl_close($ch);

$letterData = [
   'data' => [
       'type' => 'letters',
       'attributes' => [
           'file_original_name' => $fileName,
           'file_url' => $fileUploadUrl,
           'file_url_signature' => $fileUrlSignature,
           'address_position' => 'left',
           'auto_send' => false,
           'delivery_product' => 'fast',
           'print_mode' => 'simplex',
           'print_spectrum' => 'color'
       ]
   ]
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.pingen.com/organisations/$organisationUuid/letters");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($letterData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
   "Content-Type: application/vnd.api+json",
   "Authorization: Bearer $accessToken"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

curl \
       -X GET "https://api.v2.pingen.com/file-upload" \
       -H "Authorization: Bearer INSERT_YOUR_ACCESS_TOKEN_HERE"

# Extract data.attributes.url and data.attributes.url_signature from response

curl -X PUT -T path_to_your_file.pdf "INSERT_URL_FROM_INITIAL_CURL_REQUEST"

curl \
       -X POST "https://api.v2.pingen.com/organisations/INSERT_YOUR_ORGANISATION_UUID_HERE/letters" \
       -H "Content-Type: application/vnd.api+json" \
       -H "Authorization: Bearer INSERT_YOUR_ACCESS_TOKEN_HERE" \
       --data-binary @- << EOF
       {
           "data": { \
               "type": "letters", \
               "attributes": { \
                   "file_original_name": "your_filename.pdf", \
                   "file_url": "INSERT_URL_FROM_INITIAL_CURL_REQUEST", \
                   "file_url_signature": "INSERT_URL_SIGNATURE_FROM_INITIAL_CURL_REQUEST", \
                   "address_position": "left", \
                   "auto_send": false, \
                   "delivery_product": "fast", \
                   "print_mode": "simplex", \
                   "print_spectrum": "color" \
               } \
       } \
   }
EOF

API Highlights

Online Briefversand API

Über die Pingen Post API ist der Versand von einem Brief so einfach wie der Versand von einem E-Mail bei deinem Mailprovider. Digital und beliebig skalierbar.

Zur API Dokumentation
Mehr erfahren
Online Briefversand innerhalb Deutschlands
Automatische Validierung von Dokumenten

Alle übermittelten PDF werden von Pingen automatisch auf die Anforderungen beim Postversand geprüft. Sofern gewisse Anforderungen nicht eingehalten sind, bietet Pingen Optionen diese direkt via API zu beheben.

Briefe automatisch versenden
Digitale Retouren Verarbeitung

Sofern bei Briefen die Zustellung durch die Deutsche Post fehlschlägt, werden diese anhand vom Pingen-DMC automatisch erfasst, kontrolliert, vernichtet und via Webhooks gemeldet. So werden auch diese immer digital verarbeitet.

Detaillierte Sendungsverfolgung
Sandbox /Testumgebung

Um Integrationen ausgiebig zu testen, bietet Pingen mit der Staging-Umgebung eine Sandbox. In dieser stehen alle Funktionen zur Verfügung, ohne dass jedoch Briefe effektiv versendet werden.

Digitale Retouren-Verarbeitung
Detaillierter Preiskalkulator

Über den Preiskalkulator-Endpoint lassen sich sämtliche Preise von Pingen im Voraus berechnen. So sieht man bereits vor dem Versand, welche Kosten ein Brief verursachen wird.

Mit Webhooks Brief-Ereignisse in Echtzeit erhalten

Pingen bietet für wichtige Ereignisse automatische Benachrichtigungen via Webhooks. So wirst du beispielsweise in Echtzeit benachrichtigt, sobald ein Brief gesendet wurde, ein Problem aufweist oder unzustellbar ist. Das ermöglicht dir automatisch weitere Aktionen ausführen, ohne unsere API aktiv nach Veränderungen “pollen” zu müssen.

In der Webhook-Verwaltung von Pingen kannst du für jede Anfrage detaillierte Informationen wie z.B. den Payload sowie den Response von deinem System einsehen. Somit lassen sich Probleme schnell erkennen und mit wenig Aufwand beheben.

Versandkosten-Statistiken
Pingen PHP Library

Noch einfacher mit der Pingen PHP Library

In der Pingen PHP Library ist alles für den Briefversand via Deutsche Post vorbereitet. Für alle PHP-Entwickler hat Pingen sozusagen die Arbeit bereits gemacht, für alle anderen Entwickler folgen bald unsere SDKs. 🚀

Mehr als nur eine Lettershop API

Unsere Post API bietet deutlich mehr als eine klassische API von einem Lettershop oder Briefdienstleister. Bei Pingen erhältst du Zugriff auf einen schnell wachsenden, internationalen Service, der dir den weltweiten Briefversand zu den besten Konditionen ermöglicht.

Lokaler Briefdienstleister via Deutsche Post

Lokaler Briefdienstleister

Bereits heute werden Briefe lokal in Deutschland, Österreich, den Niederlanden, Indien und der Schweiz gedruckt und versendet.

Internationaler Versand

Weltweiter Postversand

Durch die Partnerschaft mit DHL kann Pingen auch in alle anderen Länder schnellste Zustellung via Luftfracht garantieren.

Skalierbare und ausfallsichere API

Skallierbar und Ausfallsicher

Durch unsere Cloud-Infrastruktur sowie den Briefdruck an mehreren Standorten skaliert Pingen problemlos und ist ausfallsicher.

Starte jetzt mit der Entwicklung

Wirf einen Blick in die Dokumentation unserer API und sehe, wie einfach sich Briefe in deine Lösung integrieren und digital versenden lassen!