APIVoid logo

BIMI Validator API Reference

Validate a domain's BIMI setup: the BIMI DNS record, the SVG logo (format, size and profile), and the VMC certificate including issuer, validity and trademark details.

Service details and pricing: BIMI Validator API

POSThttps://api.apivoid.com/v2/bimi-validator
5 credits per successful requestPOST · 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/bimi-validator" \
     -H "Content-Type: application/json" \
     -H "X-API-Key: YOUR_API_KEY_HERE" \
     -d '{"host": "paypal.com"}' 

The same request in PHP:

php
$host = 'paypal.com';

$apiKey = 'YOUR_API_KEY_HERE';

$curl = curl_init('https://api.apivoid.com/v2/bimi-validator');
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

selectorstringDefault: default

BIMI selector to check. If omitted, the default selector is used.

Response example

A successful request returns HTTP 200 with a JSON body:

json · 200
{
    "selector": "default",
    "host": "paypal.com",
    "bimi_host": "default._bimi.paypal.com",
    "cname_target": "",
    "has_bimi_record": true,
    "bimi_record": "v=BIMI1; l=https://www.paypalobjects.com/marketing/web/logos/paypal_ppe.svg; a=https://www.paypalobjects.com/marketing/web/logos/paypal_ppe.pem",
    "bimi_records_count": 1,
    "version": "BIMI1",
    "svg_logo": {
        "url": "https://www.paypalobjects.com/marketing/web/logos/paypal_ppe.svg",
        "status_code": 200,
        "valid": true,
        "file_size_bytes": 1098,
        "version": "1.2",
        "baseprofile": "tiny-ps",
        "title": "PayPal"
    },
    "vmc_certificate": {
        "url": "https://www.paypalobjects.com/marketing/web/logos/paypal_ppe.pem",
        "status_code": 200,
        "expired": false,
        "valid": true,
        "issued_to": {
            "common_name": "PayPal, Inc.",
            "alternative_names": ["paypal.com"],
            "organization": "PayPal, Inc.",
            "country": "US",
            "state": "California",
            "location": "San Jose"
        },
        "issuer": {
            "common_name": "DigiCert Verified Mark RSA4096 SHA256 2021 CA1",
            "organization": "DigiCert, Inc.",
            "country": "US",
            "state": "",
            "location": ""
        },
        "signature": {
            "serial": "6128685724469353749739451239056945761",
            "serial_hex": "049C5789183F8E64D6AE2F39FFEA3261",
            "type": "SHA256-RSA"
        },
        "validity": {
            "days_left": 198,
            "valid_from_timestamp": 1725840000,
            "valid_to_timestamp": 1757375999,
            "valid_from": "Mon, 09 Sep 2024 00:00:00 UTC",
            "valid_to": "Mon, 08 Sep 2025 23:59:59 UTC"
        },
        "trademark": {
            "found": true,
            "country": "US",
            "id": "6275156"
        }
    },
    "issues_found": [],
    "valid": true,
    "elapsed_ms": 92
}

Response fields

The fields returned in the JSON response:

selectorstring

The BIMI selector specified or the default selector.

hoststring

Host submitted for the BIMI check.

bimi_hoststring

The full BIMI host name (selector._bimi.domain).

cname_targetstring

The CNAME target for the BIMI record, if any.

has_bimi_recordboolean

Returns true if a BIMI record is found.

bimi_recordstring

BIMI record, e.g. v=BIMI1; l=https://...logo.svg; a=https://...cert.pem.

bimi_records_countinteger

Returns the number of BIMI records found for the same selector (only one is expected).

versionstring

Returns the BIMI version specified in the v= tag (e.g. BIMI1).

svg_logo → urlstring

URL of the SVG logo specified in the l= tag.

svg_logo → status_codeinteger

HTTP status code returned when fetching the SVG logo.

svg_logo → validboolean

Returns true if the SVG logo is valid for BIMI.

svg_logo → file_size_bytesinteger

File size of the SVG logo in bytes.

svg_logo → versionstring

SVG version declared in the logo file.

svg_logo → baseprofilestring

SVG base profile declared in the logo file, expected to be tiny-ps.

svg_logo → titlestring

Title element found in the SVG logo.

vmc_certificate → urlstring

URL of the VMC certificate specified in the a= tag.

vmc_certificate → status_codeinteger

HTTP status code returned when fetching the VMC certificate.

vmc_certificate → expiredboolean

Returns true if the VMC certificate is expired.

vmc_certificate → validboolean

Returns true if the VMC certificate is valid.

vmc_certificate → issued_to → common_namestring

Common name of the entity the certificate was issued to.

vmc_certificate → issued_to → alternative_namesarray

Alternative names (domains) covered by the certificate.

vmc_certificate → issued_to → organizationstring

Organization the certificate was issued to.

vmc_certificate → issued_to → countrystring

Country of the organization the certificate was issued to.

vmc_certificate → issued_to → statestring

State of the organization the certificate was issued to.

vmc_certificate → issued_to → locationstring

City of the organization the certificate was issued to.

vmc_certificate → issuer → common_namestring

Common name of the certificate authority that issued the VMC.

vmc_certificate → issuer → organizationstring

Organization of the certificate authority that issued the VMC.

vmc_certificate → issuer → countrystring

Country of the certificate authority.

vmc_certificate → issuer → statestring

State of the certificate authority.

vmc_certificate → issuer → locationstring

City of the certificate authority.

vmc_certificate → signature → serialstring

Serial number of the certificate.

vmc_certificate → signature → serial_hexstring

Serial number of the certificate, in hexadecimal (same format as openssl x509 -serial).

vmc_certificate → signature → typestring

Signature algorithm of the certificate, e.g. SHA256-RSA.

vmc_certificate → validity → days_leftinteger

Number of days left before the certificate expires.

vmc_certificate → validity → valid_from_timestampinteger

Unix timestamp of when the certificate validity starts.

vmc_certificate → validity → valid_to_timestampinteger

Unix timestamp of when the certificate validity ends.

vmc_certificate → validity → valid_fromstring

Date and time of when the certificate validity starts.

vmc_certificate → validity → valid_tostring

Date and time of when the certificate validity ends.

vmc_certificate → trademark → foundboolean

Returns true if trademark details are found in the certificate.

vmc_certificate → trademark → countrystring

Country where the logo trademark is registered.

vmc_certificate → trademark → idstring

Registration ID of the logo trademark.

issues_foundarray

Array of issues found with the BIMI record, SVG logo or VMC certificate, the "code" field can be BIMI_VIA_CNAME, BIMI_NOT_FOUND, DUPLICATE_BIMI_RECORDS, V_TAG_NOT_FOUND, V_TAG_NOT_FIRST, MISSING_L_TAG, MISSING_A_TAG, INVALID_L_TAG_CHARS, INVALID_A_TAG_CHARS, INVALID_SVG_FILE, INVALID_PEM_CERT_FILE, PEM_CERT_FILE_HAS_NO_TRADEMARK, PEM_CERT_DOMAIN_MISMATCH, VMC_LOGO_MISMATCH, VMC_LOGOTYPE_EXTENSION_NOT_FOUND, INVALID_BIMI_TAG_FOUND, UNKNOWN_BIMI_TAG_FOUND.

issues_found[n] → codestring

Machine-readable issue code, e.g. BIMI_NOT_FOUND.

issues_found[n] → typestring

Issue severity: error, warning or information.

issues_found[n] → messagestring

Human-readable description of the issue, e.g. BIMI record not found.

validboolean

Returns true if the BIMI record is valid.

elapsed_msinteger

Time taken to process the request, in milliseconds.