Skip to main content
On Enterprise plans, public files can be served from your own subdomain, for example cdn.example.com/images/logo.png, with HTTPS issued and renewed for you. Without the right plan the call answers PLAN_RESTRICTED_FEATURE. BLOB_CUSTOM_DOMAIN_LIMIT is only for a plan that has domains and has used them all.
1

Add the hostname

Use a subdomain only; a bare root domain is not accepted. Optionally set a prefix so the domain serves a single folder.
2

Create the CNAME record

At your DNS provider:
3

Create the ownership TXT record

While the domain is pending, the response carries a verification object with the TXT record that proves the hostname is yours. Create it next to the CNAME:The domain never becomes active on the CNAME alone. Once it is active, verification is no longer returned.
4

Verify

The domain starts as pending. When the CNAME and the ownership TXT record both resolve and the certificate is issued it becomes active. Force a new check with Verify domain; ssl_status shows certificate progress. While the CNAME or the TXT record can’t be found, the domain stays pending. A failed status means the hostname or its certificate could not be set up. DNS changes can take a few minutes to propagate. You can read verification again at any time from List.

Serve web pages

By default a custom domain only serves files for download: .html, .htm, .xhtml, .svg and .xml always download, the same as on the default public link. Turn on web_content to serve those types in the browser with their real content type, for example to host a static page or show an SVG inline. Pages served this way run JavaScript in a sandbox: no forms, no cookies and no navigating the top tab. Even so, you are publishing content that visitors open in their browser, so turn it on only for domains whose files you control, and use a prefix to limit it to one folder. The default public link never serves these types in the browser, whatever the setting.
1

In the dashboard

Open Blob Storage, go to Custom domains, and switch on web content for the domain. You can also set it when you add the domain.
2

With the API

Set it when adding the domain, or change it later with Update domain.
cURL
JavaScript
Python
Go
The change takes effect within about a minute. A hostname already used elsewhere answers BLOB_CUSTOM_DOMAIN_TAKEN. Invalid hostnames answer INVALID_CUSTOM_DOMAIN_FORMAT. Remove a domain with Delete domain; see also List and Add.