APIVoid logo

TLS Check API Reference

Check which SSL/TLS protocol versions a host supports (SSLv2 to TLSv1.3), detect deprecated protocols, get an overall score, and optionally scan cipher suites.

Service details and pricing: TLS Check API

POSThttps://api.apivoid.com/v2/tls-check
4 credits per successful requestCan take up to 60 secondsPOST · JSON

Request example

Query the endpoint via an HTTPS POST request (replace YOUR_API_KEY_HERE with your API key):

curl
curl -X POST "https://api.apivoid.com/v2/tls-check" \
     -H "Content-Type: application/json" \
     -H "X-API-Key: YOUR_API_KEY_HERE" \
     -d '{"host": "stripe.com"}' 

The same request in PHP:

php
$host = 'stripe.com';

$apiKey = 'YOUR_API_KEY_HERE';

$curl = curl_init('https://api.apivoid.com/v2/tls-check');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'X-API-Key: ' . $apiKey]);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(['host' => $host]));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

if ($httpCode === 200) {
    $responseData = json_decode($response, true);
    print_r($responseData);
} else {
    print_r('An error occurred: '.$response);
}

Request parameters

Required

hoststringRequired

Host to submit, e.g. google.com.

Optional

portintegerDefault: 443

TLS port to check. Must be between 443 and 65535.

scan_ciphersbooleanDefault: falseNew+1 Credit

Enable cipher suite scanning for all TLS protocols. Available on the Growth Plan and above.

New response fields (when enabled): ciphers protocol_details.

⚠  Enabling this option costs 1 additional credit per successful request.

Response example

A successful request returns HTTP 200 with a JSON body:

json · 200
{
   "host": "stripe.com",
   "ip": "198.202.176.231",
   "port": 443,
   "protocols": {
      "sslv2": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "sslv3": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "tlsv1.0": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "tlsv1.1": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "tlsv1.2": {
         "enabled": true,
         "recommended_status": "enabled",
         "deprecated": false
      },
      "tlsv1.3": {
         "enabled": true,
         "recommended_status": "enabled",
         "deprecated": false
      }
   },
   "connected": true,
   "score": "excellent",
   "elapsed_ms": 745
}

Response fields

The fields returned in the JSON response:

hoststring

Host submitted for the TLS check.

ipstring

IP address the host resolved to.

portinteger

Port used for the TLS check, e.g. 443.

protocolsobject

Status of each SSL/TLS protocol version, keyed by protocol name.

protocols → [protocol] → enabledboolean

Returns true if the protocol version is enabled on the server.

protocols → [protocol] → recommended_statusstring

Recommended status for the protocol, can be enabled/disabled.

protocols → [protocol] → deprecatedboolean

Returns true if the protocol version is deprecated.

connectedboolean

Returns true if a TLS connection to the server was established.

scorestring

Overall TLS configuration score, e.g. excellent, moderate, poor.

ciphersobjectWith: scan_ciphers

Supported ciphers grouped by protocol version, keyed by protocol name (e.g. tlsv1.2, tlsv1.3).

ciphers → [protocol] → ciphersarrayWith: scan_ciphers

List of ciphers tested for this protocol; each item has name, hex_code, supported, key_exchange, bits and forward_secrecy.

ciphers → [protocol] → summary → insecure_cipher_countintegerWith: scan_ciphers

Number of insecure ciphers supported.

ciphers → [protocol] → summary → weak_cipher_countintegerWith: scan_ciphers

Number of weak ciphers supported.

ciphers → [protocol] → summary → strong_cipher_countintegerWith: scan_ciphers

Number of strong ciphers supported.

ciphers → [protocol] → summary → total_supportedintegerWith: scan_ciphers

Total number of ciphers supported for this protocol.

protocol_details → secure_renegotiationbooleanWith: scan_ciphers

Returns true if secure renegotiation is supported.

protocol_details → forward_secrecybooleanWith: scan_ciphers

Returns true if forward secrecy is supported.

protocol_details → rc4booleanWith: scan_ciphers

Returns true if RC4 ciphers are supported.

protocol_details → ocsp_staplingbooleanWith: scan_ciphers

Returns true if OCSP stapling is enabled.

protocol_details → alpnbooleanWith: scan_ciphers

Returns true if ALPN is supported.

protocol_details → alpn_protocolsarrayWith: scan_ciphers

ALPN protocols advertised by the server, e.g. h2.

elapsed_msinteger

Time taken to process the request, in milliseconds.

Optional response fields

Optional request parameters add extra fields to the JSON response, example:

json · request payload
{
  "host": "stripe.com",
  "scan_ciphers": true
}

Each enabled option adds the following fields to the response:

Fieldscan_ciphers Addsciphersprotocol_details WhereTop levelTop level of the response

Example response for the request payload above:

json · 200 · with optional fields
{
   "host": "stripe.com",
   "ip": "198.202.176.231",
   "port": 443,
   "protocols": {
      "sslv2": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "sslv3": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "tlsv1.0": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "tlsv1.1": {
         "enabled": false,
         "recommended_status": "disabled",
         "deprecated": true
      },
      "tlsv1.2": {
         "enabled": true,
         "recommended_status": "enabled",
         "deprecated": false
      },
      "tlsv1.3": {
         "enabled": true,
         "recommended_status": "enabled",
         "deprecated": false
      }
   },
   "connected": true,
   "score": "excellent",
   "ciphers": {
      "tlsv1.3": {
         "ciphers": [
            {
               "name": "TLS_AES_128_GCM_SHA256",
               "hex_code": "0x1301",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 128,
               "forward_secrecy": true
            },
            {
               "name": "TLS_AES_256_GCM_SHA384",
               "hex_code": "0x1302",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 256,
               "forward_secrecy": true
            },
            {
               "name": "TLS_CHACHA20_POLY1305_SHA256",
               "hex_code": "0x1303",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 256,
               "forward_secrecy": true
            }
         ],
         "summary": {
            "insecure_cipher_count": 0,
            "weak_cipher_count": 0,
            "strong_cipher_count": 3,
            "total_supported": 3
         }
      },
      "tlsv1.2": {
         "ciphers": [
            {
               "name": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
               "hex_code": "0xc030",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 256,
               "forward_secrecy": true
            },
            {
               "name": "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
               "hex_code": "0xc02f",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 128,
               "forward_secrecy": true
            },
            {
               "name": "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
               "hex_code": "0xcca8",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 256,
               "forward_secrecy": true
            },
            {
               "name": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
               "hex_code": "0xc02b",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 128,
               "forward_secrecy": true
            },
            {
               "name": "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
               "hex_code": "0xcca9",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 256,
               "forward_secrecy": true
            },
            {
               "name": "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
               "hex_code": "0xc014",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 256,
               "forward_secrecy": true,
               "weak": true
            },
            {
               "name": "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
               "hex_code": "0xc013",
               "supported": true,
               "key_exchange": "ECDH",
               "bits": 128,
               "forward_secrecy": true,
               "weak": true
            },
            {
               "name": "TLS_RSA_WITH_AES_256_GCM_SHA384",
               "hex_code": "0x009d",
               "supported": true,
               "key_exchange": "RSA",
               "bits": 256,
               "weak": true
            },
            {
               "name": "TLS_RSA_WITH_AES_128_GCM_SHA256",
               "hex_code": "0x009c",
               "supported": true,
               "key_exchange": "RSA",
               "bits": 128,
               "weak": true
            },
            {
               "name": "TLS_RSA_WITH_AES_256_CBC_SHA",
               "hex_code": "0x0035",
               "supported": true,
               "key_exchange": "RSA",
               "bits": 256,
               "weak": true
            },
            {
               "name": "TLS_RSA_WITH_AES_128_CBC_SHA",
               "hex_code": "0x002f",
               "supported": true,
               "key_exchange": "RSA",
               "bits": 128,
               "weak": true
            }
         ],
         "summary": {
            "insecure_cipher_count": 0,
            "weak_cipher_count": 6,
            "strong_cipher_count": 5,
            "total_supported": 11
         }
      },
      "tlsv1.1": {
         "ciphers": [],
         "summary": {
            "insecure_cipher_count": 0,
            "weak_cipher_count": 0,
            "strong_cipher_count": 0,
            "total_supported": 0
         }
      },
      "tlsv1.0": {
         "ciphers": [],
         "summary": {
            "insecure_cipher_count": 0,
            "weak_cipher_count": 0,
            "strong_cipher_count": 0,
            "total_supported": 0
         }
      }
   },
   "protocol_details": {
      "secure_renegotiation": true,
      "forward_secrecy": true,
      "rc4": false,
      "ocsp_stapling": false,
      "alpn": true,
      "alpn_protocols": [
         "h2"
      ]
   },
   "elapsed_ms": 402
}