Loading...
Loading...

API for Sending Letters via India Post and DHL

Pingen’s powerful, fully scalable snail mail API enables your software solution to send letters via India Post and DHL. Our SDKs allow for fast, easy integration.

KreisKreisAPI for sending letters via India Post and DHL
Benefits for Developers

Send Snail Mail Automatically

Pingen’s Post API enables easy software integrations to automatically send letters via India Post and DHL.

Post API

Free API

We’re passionate about helping you automate processes. That’s why we provide our API to all customers free of charge.

Powerful SDKs

Powerful SDKs (coming soon)

Send letters via India Post in record time with our SDKs for PHP, Java, C#, and .Net.

Payment Forms

Supported Payment Forms

Pingen supports ISR, ISR+, red payment slips, and QR-bill (Switzerland) as well as SEPA (Germany) and SEPA (Austria).

Post API from Developers for Developers

From Developers for Developers

All of Pingen’s features are also available via our Post API and explained in detail in our documentation.

Track & Trace

Track & Trace

Detailed status information and real time progress updates are provided for every letter.

Generate Revenue

Generate Revenue

By reselling snail mail, integrators can unlock an exciting, new opportunity to generate additional revenues.

API Highlights

Online Mail Service API for Letters

Sending letters via Pingen’s Post API is as easy as sending a standard email. Our API is digital and fully scalable.

Letter API for snail mail via India Post and DHL
From PDF to the Mailbox

Use the Post API to submit your letter as a PDF, and Pingen will take care of the rest. All of Pingen’s features are available through the API as well. This allows you to fully automate all processes and manage your account via the API.

Automatic Document Validation

Pingen automatically checks all submitted PDFs if they comply with the requirements of postal letters. If any requirements are not met, Pingen provides options to fix them directly via the API.

Digital Returns Processing

If India Post fails to deliver any letters, they are automatically captured using the Pingen DMC, destroyed in a controlled manner, and reported via webhooks. This way, undeliverable letters are always processed digitally.

Sandbox/Test Environment

Pingen offers a staging environment to all developers to ensure that integrations are easily and conveniently tested in a sandbox. All features of Pingen are available in the sandbox but no letters will actually be sent.

Detailed Pricing Calculator

Use the pricing calculator endpoint to check the price of a letter in advance. This way, you can always determine the full costs before sending any letter.

API Documentation

Fast, powerful, user-friendly Post API

Pingen’s snail mail API is designed to be flexible and straightforward, making it easy to integrate in no time. In addition to the user-friendly documentation, we also provide code examples to help you get started quickly.

$sToken = ''; //Add your private token here
$sFile = realpath('/path/to/your/file.pdf');

//set URL
$sURL = 'https://api.pingen.com/document/upload/token/' . $sToken;

 //build our query data
$aData = array(  
          'data' => json_encode(array(        
                    'send' => true, //we want to automatically send it
                     'speed' => 1, //we want to send priority
                     'color' => 1, //and in color
           )),
          'file' => '@' . $sFile
);

//set the url, number of POST vars, POST data
$objCurlConn = curl_init();
curl_setopt($objCurlConn,CURLOPT_URL,$sURL);
curl_setopt($objCurlConn,CURLOPT_POST,1);
curl_setopt($objCurlConn,CURLOPT_POSTFIELDS,$aData);
curl_setopt($objCurlConn, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($objCurlConn, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($objCurlConn, CURLOPT_SSL_VERIFYPEER, 0);

//execute post
$sResult = curl_exec($objCurlConn);

// decode result and pass from here on
$aResult = json_decode($sResult, true);

if   ($aResult['error']==true)
{    
          //an error occurred, handle it from here
}else {  
         //go along with your code here
}

HttpClient httpClient = new DefaultHttpClient();

try {
         HttpPost request = new HttpPost("https://api.pingen.com/document/send/id/30/token/MYTOKEN");

         JSONObject j = new JSONObject();
         j.put("speed", "1");
         j.put("color", "1");

        List<namevaluepair> nameValuePairs = new ArrayList<namevaluepair>(1);
        nameValuePairs.add(new BasicNameValuePair("data", j.toString()));

       UrlEncodedFormEntity params = new UrlEncodedFormEntity(nameValuePairs);
       request.addHeader("content-type", "application/x-www-form-urlencoded");
       request.setEntity(params);
       HttpResponse response = httpClient.execute(request);

      // handle response here...
} catch (Exception ex) {
     // handle exception here
} finally {
     httpClient.getConnectionManager().shutdown();
}
</namevaluepair></namevaluepair>

using (WebClient client = new WebClient()) {
         string jsonRequest = new JavaScriptSerializer().Serialize(new { speed = 1, color = 1 });
          client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
          string jsonResponse = string.Empty;
          try {
                   jsonResponse = client.UploadString("https://api.pingen.com/document/send/id/30/token/MYTOKEN", jsonRequest);
                    // parse json and handle it
          } catch (Exception e) {
                  WebException we = e as WebException;
                    if (we != null && we.Response != null)  {
                              var res = we.Response.GetResponseStream();
                              if (res != null) jsonResponse = new StreamReader(res).ReadToEnd();
                    }
                    // parse json (if available) and handle error
          }
}

public SendDocToPingenResponse SendDocToPingen(string pathToPdf, bool sendViaPost = false) {

         if (string.IsNullOrEmpty(pathToPdf)) throw new ArgumentException("pathToPdf");
         if(!File.Exists(pathToPdf)) throw new ArgumentException(pathToPdf + "does not exist.");

         byte[] rawdata = File.ReadAllBytes(pathToPdf);
         string filename = Path.GetFileName(pathToPdf);

         var body = new {
                  send = sendViaPost,
                  speed = 1,
                  color = 0,
                  duplex = 0,
                  rightaddress = 0,
                  envelope = 0
         };

         var jsonBody = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(body);

         SendDocToPingenResponse result = null;

         using (HttpClient client = new HttpClient()) {
                  var content = new MultipartFormDataContent() { };
                  content.Add(new StringContent(jsonBody), "data");
                  content.Add(new ByteArrayContent(rawdata), "file", filename);

                  string uri = $"https://api.pingen.com/document/upload/token/15.......";
                  System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;

                  try {
                           var resultObject = client.PostAsync(uri, content).Result;
                           var resultJson = resultObject.Content.ReadAsStringAsync().Result;
                           result = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<senddoctopingenresponse>(resultJson);
                   }

                  catch (Exception ex) {
                           /// somethign went wrong
                  }

                  return result;
         }
}

public class SendDocToPingenResponse {

         public bool error {
                  get;
                  set;
         }

         public int errorcode {
                  get;
                  set;
         }

         public string errormessage {
                  get;
                  set;
         }

         public int id {
                  get;
                  set;
         }
}

</senddoctopingenresponse>

Full API Documentation
Pingen PHP Libary

Easy Integration with the Pingen PHP Library

The Pingen PHP Library offers everything you need to integrate our API and send snail mail via India Post and DHL. Pingen has already done the work for all PHP developers. Coming soon, we’ll release our SDKs for all other developers as well. 🚀

More than just a Lettershop API

Our snail mail API offers much more than the classic API used by lettershops or mail service providers. With Pingen, you gain access to a fast-growing and international service that helps you send letters globally for the best price.

Local Mail Service Provider

Local Mail Service Provider

Already today, letters are being printed and sent locally in India, Germany, Austria, Switzerland andthe Netherlands.

International Mail Delivery

International Mail Delivery

Through our partnership with DHL, Pingen guarantees fast and reliable delivery to all other countries via air mail.

Scalable and reliable API

Scalable and Reliable

Pingen scales easily and is fail-safe due to our cloud and multi-site letter printing infrastructure.

Trusted by Innovative Brands

Start Developing Now

Take a look at our snail mail API documentation and see how easy it is to integrate postal letters via India Post and DHL into your software solution!