Validate VMC 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).

This endpoint accepts raw SVG data. To submit compressed logo data formatted as a base64-encoded string, use the Validate VMC logo format (encoded) endpoint.

Request format

To submit a request to the Validate VMC 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 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
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>'
Python
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)
Go
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))
}
NodeJS
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);
});
204 No Content
// empty
400 Bad Request
{
  "errors": [
    {
      "code": "invalid_vmc_logo",
      "message": "attribute \"overflow\" not allowed here at line 4:65"
    }
  ]
}