Skip to main content

Custom Domain

Learn how to set a custom domain for your API documentation.

By default, your documentation are accessible on a [subdomain] domain. However, you can customize this by setting a custom domain, meaning your audience will be able to access your documentation on a domain that fits your organization.


Custom domains can be set by users with owner or admin rights. Please follow these steps in order to set a custom domain:

  1. Initiating the custom domain setup
  2. Configuring DNS CNAME(canonical name)
  3. Configuring CDN or your own reverse proxy server

1. Initiating the custom domain setup

You can access the options for setting a custom domain for a project in the project's Share module. Simply click on the Share Docs menu in the sidebar, and then navigate to the Publish settings page in the secondary menu.

You will see a section titled Custom Domain. Click on the Edit button to initiate the custom domain setup.

There is two types of options for setting a custom domain:

  1. DNS CNAME: This is the recommended option. It is the easiest to setup and maintain. It is also the most flexible option, as it allows you to set a custom domain for a subdomain or a root domain.
  2. Reverse Proxy: This option is more advanced and requires you to use Content Delivery Network (CDN) or setup a reverse proxy on your own server. It is recommended for users who are familiar with these technologies.

2. Configuring DNS CNAME


This is only applicable if you have selected the DNS CNAME option in the previous step.

Configuring DNS happens outside of Apidog, at the DNS provider you are using for your domain.

There are three parts to this step:

  1. Configure a CNAME record
  2. Wait for the changes to take effect

Configure a CNAME record

The names of the fields and what to actually enter to configure the record may differ between DNS control panels, but we’ve covered the most common options here.If you're uncertain, verify with your DNS provider.

  • The type is the kind of DNS record that you want to create. Here, you need to choose CNAME.
  • The name or DNS entry is where you enter your subdomain. You might need to enter it in full (e.g. or you might just need to enter the part before your apex domain (e.g. docs). If you’re not sure which to use, check with your DNS provider.
  • The target or value or destination is where the subdomain should be pointed. You should see the value for this in the Publish settings in Apidog when you choose the DNS CNAME option. It will look something like {projectId} You should enter this value in full (e.g.
  • You might also see a field named TTL, which stands for Time To Live. It’s the number of seconds that the DNS record can be cached for. If you’re not sure what to set, we suggest select Auto or remain default value.

Here’s an example of how a correct configuration looks in Cloudflare’s control panel:

A properly configured custom domain in Cloudflare’s control panel

Note:CNAME record cannot co-exist with another record for the same name. If you already have an A record, AAAA record, TXT record, or any other type of record for your chosen subdomain, you would need to remove those first, before adding the CNAME record.

Are you using Cloudflare?

If you are configuring DNS in Cloudflare’s control panel, please ensure that Cloudflare’s proxying (the orange cloud, also called "Proxy status" in your domain settings) is disabled. This is for two reasons:

  • This option obfuscates the DNS target for your domain to the public, preventing Apidog from properly running routine checks on your custom domain.
  • Your custom domain will already benefit from CDN.

Again, please turn off Cloudflare proxying to ensure that your documentation is served without issues.

Wait for the changes to take effect

The short answer: you might need to wait 10 minutes ~ 48 hours for the DNS changes to take effect before moving onto the next step.

Remember the TTL (Time To Live) field we mentioned earlier? DNS records are cached for a period of time — which is usually a very good thing for performance reasons, because they typically don’t change very often. When they do change, there is a period of time (the TTL value) where DNS cache servers need their cache to expire before they will check for any changes and behave accordingly.

In most cases, it’s best to allow at least 10 minutes before moving onto the next and final step. Sometimes it could all update a bit more quickly, or it could take longer. It’s rare for this to take longer than 48 hours.

Want to check how this process, known as propagation, is progressing? You could use a DNS lookup tool, such as WhatsMyDNS. Enter your full subdomain, select CNAME from the dropdown list, and press the Search button. DNS cache servers around the world will respond to let you know what their cached result is. You’ll want to periodically check these results until the vast majority respond with your assigned CNAME value.

Once DNS propagation has completed, you can move onto the last step: Custom Domain.

Configuring CDN or your own reverse proxy server


This is only applicable if you have selected the Reverse Proxy option in the previous step.

3. Configuring CDN

You can utilize the CDN service provided by cloud vendors like AWS CloudFront, Cloudflare Enterprise to set it up as your own reverse proxy server.

In the following example, we will configure AWS CloudFront as Reverse Proxy.

Configure AWS CloudFront as Reverse Proxy

You can configure AWS CloudFront for use as the reverse proxy with custom domain names for your API documentation.

  1. Log in to AWS, and navigate to CloudFront. Click Create Distribution.
  2. Configure your distribution settings. Here are the values you'll need to change.
Origin Domain NameSet to {projectId}
NameA description for the origin. This value lets you distinguish between multiple origins in the same distribution and therefore must be unique.
Origin Protocol PolicySet to HTTP Only
Alternate Domain Names (CNAMEs)Set to your custom domain name (the same one your configured in the Publish settings during the custom domain setup)
SSL CertificateSet to the SSL Certificate for your custom domain stored in AWS Certificate Manager (ACM).
  1. Provide information on the Origin Custom Headers (the Header Name and Value fields appear only after you've provided an Origin Domain Name)
Header NameValue
X-Apidog-Project-IDSet to {projectId}

You can find the projectId value in the Apidog project settings.

  1. Configure the Default Cache Behavior Settings. Here are the values you'll need to change.
Viewer Protocol PolicySelect Redirect HTTP to HTTPS
Cache and origin request settingsSelect Use legacy cache settings. Select All for Headers, Query strings and Cookies

  1. Do not enable AWS Web Application Firewall (WAF).
  2. Click Create distribution at bottom of the page. You'll see your newly-created distribution in your CloudFront Distributions list. Note that the Status will reflect In progress until the distribution is Deployed.
  3. Add a new CNAME record to your DNS for your custom domain pointing to the CloudFront Domain Name for your Distribution. This can be found by clicking on your Distribution ID, under the General tab, Distribution domain name (for example,

Configuring your own reverse proxy server

You can configure your own reverse proxy server for your API documentation. In the following example, we will use Nginx as the reverse proxy server.

  1. Add the following content to the Nginx configuration file for simple configuration.
server {
location / {
proxy_pass http://{projectId};
proxy_set_header X-Apidog-Project-ID {projectId};
# Set your custom domain name to the Host value (Eg.
proxy_set_header Host;

You can find the {projectId} value in the Apidog project settings.

  1. Configure DNS record for your custom domain name to point to your reverse proxy server.


If you are having issues setting up your custom domain, please contact us via Discord.

Are you using Apidog Europe?

If you are using Apidog Europe, please ensure that you are using the correct domain for your custom domain setup.

The correct domain for Apidog Europe in previous setup is {projectId}