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
Request example
Query the endpoint via an HTTPS POST request (replace YOUR_API_KEY_HERE with your API key):
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:
$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
Host to submit, e.g. google.com.
Optional
BIMI selector to check. If omitted, the default selector is used.
Response example
A successful request returns HTTP 200 with a JSON body:
{
"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.