Validate VMC or CMC logo format (SVG)

PUT https://www.digicert.com/services/v2/util/validate-vmc-logo
Use this endpoint to check if the format of an SVG file is compatible with the requirements for Verified Mark Certificates (VMC) or a Common Mark Certificate (CMC).

Request format

To submit a request to the Validate VMC or CMC logo format (SVG) endpoint:

  • Set the Content-Type header.
    • If the image data includes an XML tag (for example, <?xml version ="1.0" encoding ="UTF-8"?>), use image/svg+xml.
    • If the image data does not include an XML tag, use image/svg.
  • Submit the raw SVG data for the image as the payload of the request.
  • Omit the custom header X-DC-DEVKEY. This operation does not require authentication with an API key.

Response format

If the logo format meets VMC or CMC requirements, the endpoint returns a status of 204 No Content.

If there is a formatting issue with the logo, the endpoint returns an error message with a status of 400 Bad Request. The error message provides:

  • A brief description of the formatting issue.
  • The line and column number where you can find the problem when you open the file in a text editor.

To learn more about formatting a logo for VMC, visit Getting Ready for BIMI: Prep Your Logo.

To resolve issues with the SVG format of your logo:

  1. Open the SVG file in a text editor.
  2. Update the content at the locations displayed in the error messages.
  3. Save the file.
  4. Submit another request with your updated SVG data.

Example requests and responses

curl --request PUT 'https://www.digicert.com/services/v2/util/validate-vmc-logo' \
--header 'Content-Type: image/svg+xml' \
--data-raw '<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 269.9 76.2" version="1.2" baseProfile="tiny-ps">
  <title>Example Logo</title>
  <!-- Logo Data -->
</svg>'
import requests

url = "https://www.digicert.com/services/v2/util/validate-vmc-logo"

payload = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 269.9 76.2\" version=\"1.2\" baseProfile=\"tiny-ps\">\n  <title>Example Logo</title>\n  <!-- Logo Data -->\n</svg>"
headers = {
  'Content-Type': 'image/svg+xml'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
package main

import (
		"fmt"
		"strings"
		"net/http"
		"io/ioutil"
)

func main() {

		url := "https://www.digicert.com/services/v2/util/validate-vmc-logo"
		method := "PUT"

		payload := strings.NewReader(`<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 269.9 76.2" version="1.2" baseProfile="tiny-ps">
  <title>Example Logo</title>
  <!-- Logo Data -->
</svg>`)

		client := &http.Client {
		}
		req, err := http.NewRequest(method, url, payload)

		if err != nil {
				fmt.Println(err)
				return
		}
		req.Header.Add("Content-Type", "image/svg+xml")

		res, err := client.Do(req)
		if err != nil {
				fmt.Println(err)
				return
		}
		defer res.Body.Close()

		body, err := ioutil.ReadAll(res.Body)
		if err != nil {
				fmt.Println(err)
				return
		}
		fmt.Println(string(body))
}
var request = require('request');
var options = {
  'method': 'PUT',
  'url': 'https://www.digicert.com/services/v2/util/validate-vmc-logo',
  'headers': {
    'Content-Type': 'image/svg+xml'
  },
  body: '<?xml version="1.0" encoding="UTF-8"?>\n<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 269.9 76.2" version="1.2" baseProfile="tiny-ps">\n  <title>Example Logo</title>\n  <!-- Logo Data -->\n</svg>'

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
// empty
{
  "errors": [
    {
      "code": "invalid_vmc_logo",
      "message": "attribute \"overflow\" not allowed here at line 4:65"
    }
  ]
}