Select programming language for code examples


You can detect network connectivity and check if our licensing servers are accessible for the current network environment by sending a GET request to the ping endpoint. The API endpoint will respond with a 200 HTTP status code.


Ping our servers. Returns a 200 status code.

Note on Let's Encrypt: on September 30th, 2021 a root certificate used by Let’s Encrypt expired. As a temporary stop-gap to the various connectivity issues that ensued, Keygen moved away from Let's Encrypt to a Comodo certificate, in order to give our customers more time to resolve issues.

On January 31st, 2022, Keygen has moved back to Let's Encrypt to support new features, such as custom domains. This may effect your Keygen integration.

If you or your clients are receiving a CERT_HAS_EXPIRED TLS/SSL error, then you will need to do one or more of the following:

  1. For server-based apps, please upgrade your ca-certificate bundle so that you have the latest Let's Encrypt root certificate.
  2. For Electron-based apps, please upgrade Electron. Older versions of Electron bundled an outdated certificate bundle. (See this issue for more information.)
  3. For apps built on Node v9 or older, please upgrade Node. Node statically links the OpenSSL library and the version linked for old versions is not supported.
  4. For other apps using OpenSSL, please upgrade to a version of OpenSSL at least as recent as v1.1.0. Older OpenSSL versions are no longer supported.
  5. Upgrade your operating system to a more recent version.

Unfortunately, this is a client issue, not a server issue.

As a last resort, you can disable TLS/SSL verification for the requests to our API. These requests will still be encrypted, but the certificate chain will not be verified — which is a good thing, since the device is unable to verify the chain due to missing root certificates. With Node, this can be done by setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to 0.


Example request

Ping our licensing servers.

const fetch = require("node-fetch")
const response = await fetch("", { method: "GET" })
import requests
res = requests.get("")
import SwiftyJSON
import Alamofire
Alamofire.request("", method: .get)
using RestSharp;
var client = new RestClient("");
var request = new RestRequest("/v1/ping", Method.GET);
var response = client.Execute(request);
import com.mashape.unirest.http.exceptions.*
import com.mashape.unirest.http.*
val res = Unirest.get("")
import com.mashape.unirest.http.exceptions.*;
import com.mashape.unirest.http.*;
HttpResponse<JsonNode> res = Unirest.get("");
#include <iostream>
#include <string>
#include <cpprest/http_client.h>
#include <cpprest/filestream.h>
using namespace std;
using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace utility;
http_client client("");
http_request req;
curl -X GET

Example response / 200 OK

No content