Apidog Docs
🇺🇸 English
  • 🇺🇸 English
  • 🇯🇵 日本語
HomeLearning CenterSupport CenterAPI References
HomeLearning CenterSupport CenterAPI References
Discord Community
Slack Community
X / Twitter
🇺🇸 English
  • 🇺🇸 English
  • 🇯🇵 日本語
  1. Publish API Docs
  • Back to home
  • Support Center
  • Apidog Support Center
  • Import/Export
    • How to import API data into Apidog?
    • How to import cURL in Apidog?
    • How to migrate Postman environments to Apidog?
    • How to auto - group endpoints on Swagger/OpenAPI import?
  • Sending requests
    • Does Apidog support Socket.IO?
    • Why is the "+" in the parameter value decoded as a space?
    • How to send a request in Apidog?
    • How to send a graphQL request in Apidog?
    • How to send a gRPC request in Apidog?
    • How to send a SOAP/WebService request in Apidog?
    • How to send a WebSocket request in Apidog?
    • Does Apidog support pre-request/test scripts and assertions in WebSocket APIs?
    • How to send a SSE request in Apidog?
    • How to add default headers at the folder level?
    • Does Apidog support pre-request/test scripts and assertions in gRPC APIs?
    • Why am I getting a "socket hang up" error when sending a request?
    • ELANREFUSED.DNS Resolver Error
  • Designing APIs
    • How do I use variables in the path?
    • Can I use a response component as the default response?
    • How to check who has modified an endpoint?
    • How can I bulk delete endpoint folders in Apidog?
    • How can I bulk add/remove prefixes to the path of endpoints?
    • How to move a Property's level in the Schema Editor?
    • If a string property has multiple enumerated values and is used in various locations, how can this enum be consistently referenced throughout?
    • How to get Apidog resource folder ID?
    • How do I get the resource floder ID of Apidog?
    • How do I use variables in a URL path?
    • What should I do if an endpoint, document, or test scenario is accidentally deleted?
    • Does Apidog support request code for custom endpoints?
  • Debugging APIs
    • How does Apidog integrate with third-party key management systems?
    • Why does the same request work correctly in other tools (such as Postman) but not in Apidog?
    • How to fetch variable values from database in Apidog?
    • How to migrate environments from other tools to Apidog?
    • How to assert using scripts in Apidog?
    • JSONPath can only extract arrays. How can we extract a single element from within them in Apidog?
    • How to configure database operations in Apidog when different environments have different database account credentials?
    • How to get service base URL in custom script?
    • Why does Apidog report an error exceeding the maximum Node.js string length when the API response is too large?
    • What is the size limit for console printing?Why do I get an error when printing large files?
    • How to resolve DB2 database connection errors on Windows?
    • How to Generate Dynamic Values in Apidog Custom Scripts?
    • Why does the client request for the same endpoint succeed, but an error occurs when debugging on the web side: "Unable to request address"?
    • Why does Apidog report an error when the response is too large?
    • How do I use the Apidog recording endpoint?
    • When defining an endpoint response, is it allowed for the endpoint to have no response content?
    • How do I get the service baseURL in a custom script?
    • How do I view the original packet in Apidog?
    • How do I make an asynchronous request in an Apidog script?
    • What is the console print size limit? Why Do I Get an Error When I Print a Large File?
    • How do I upload a file on an endpoint request?
    • What to Do If Apidog crashes or Response Data Isn’t Showing ?
  • Mock API data
    • How to mock APIs automatically?
    • What can Apidog mocking do?
    • How to mock fixed API data in Apidog?
    • How to mock conditional data in Apidog?
    • How to enable cloud mock in Apidog?
    • How to enable self-hosted mock in Apidog?
    • Does Apidog support mocking WebSocket APIs?
    • Why Is the Browser Not Returning Content When Requesting the Mock endpoint?
  • Automated tests
    • Why do test scenarios run without issues on my local client, but errors occur when running them in the Apidog CLI or runner?
    • How to create a test scenario in Apidog?
    • How to pass data between test steps?
    • Why am I not able to successfully reference pre-step data?
    • How to use foreach loop in Apidog?
    • What are the differences between sync data from endpoints/endpoint cases?
    • How to use test data in Apidog?
    • How to retrive test data in scripts in Apidog?
    • How to run test scenarios in batch in Apidog?
    • How to schedule test tasks in Apidog?
    • How to run performance test in Apidog?
    • How can I view the actual requests and responses in the performance tests?
    • How can I export performance test reports in Apidog?
    • How to use database query results as parameters for looping API requests?
    • Capture and Validate Stripe Webhooks in ApiDog During CI/CD
    • How to resolve the "Error: unable to verify the first certificate on runner" error?
    • General Runner Docker Container "Not Found" Error.
    • How to Set the Server Host for the General Runner in Apidog Web Version?
    • Why Scheduled test scenario endedup with 0 request?
    • What should I do if the file upload parameter cannot be found in Runner or CLI?
    • How to use Runner to run a test scenario with an upload file step?
    • How do I resolve the "Error: unable to verify the first certificate on runner" error?
    • How do I access and search the runner logs to identify the issue when a problem arises with a runner?
    • What should I do if the endpoint parameter is an upload file and cannot be found in Runner or CLI?
    • Why Aren't Test Steps Automatically Synchronized When the API Use Case Changes?
    • Why Does Using Multiple Dollar Signs in a Markdown Document Cause Some Content to Not Display Correctly?
  • Publish API Docs
    • How to hide all Apidog logos in published documents?
    • When the API spec is updated, will the API doc change?
    • How to share APIs to collaborators in Apidog?
    • How to customize domain of Apidog documentations?
    • How to create multi-version documentation in Apidog?
    • Scope of sharing for Publish Docs Sites in Apidog
    • Scope of sharing for Share Doc list in Apidog
    • Why publlished Share Docs is not showing the hostname?
    • How Can Document Users Modify the Base URL in Shared Docs ?
  • Markdown
    • How to use cards to link to various pages or endpoints within Apidog?
    • Why is some content not displayed correctly when using multiple $ symbols in Markdown documents?
    • How to use transparent background images in Apidog Markdown?
    • How to set the column width of a Markdown table?
  • Branches
    • How to access the sprint branch?
  • Administration
    • How to install Apidog client silently?
    • Why am I seeing a 'No Permission' error despite having admin access?
    • How do I check the runner version number?
    • Does Apidog support win7?
    • Why does Apidog show the error "Cannot locate program entry point DiscardVirtualMemory in dynamic link library KERNEL32.dll" after installation?
    • Can I set up a separate billing account for my team in Apidog?
  • Billing
  • On-premises
  • Apidog Europe
  1. Publish API Docs

How to customize domain of Apidog documentations?

By default, your documentation are accessible on a [subdomain].apidog.io 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 admin permissons. Please follow these steps in order to set a custom domain.

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.
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.

Configuring CNAME#

This is only applicable if you have selected the 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. docs.example.com) 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}.apidog.io. You should enter this value in full (e.g. 12345678.apidog.io).
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.

Configuring CDN or Your Own Reverse Proxy Server#

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

Configure AWS CloudFront as reverse proxy#

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.
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.
SettingsValue
Origin Domain NameSet to {projectId}.apidog.io
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).
3.
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}
TIP
You can find the projectId value in the Apidog project settings.
4.
Configure the Default Cache Behavior Settings. Here are the values you'll need to change.
SettingValue
Viewer Protocol PolicySelect Redirect HTTP to HTTPS
Allowed HTTP MethodsSelect GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE.
Cache and origin request settingsSelect Use legacy cache settings. Select All for Headers, Query strings and Cookies
5.
Do not enable AWS Web Application Firewall (WAF).
6.
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.
7.
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, fd1fbc7cac6197.cloudfront.net).

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.
Caddy configuration example:
:8080 {
        handle_path /* {
                reverse_proxy http://{projectId.apidog.io {
                        header_up X-Apidog-Project-ID {projectId}
                        header_up Host "docs.example.com"
                }

      }
}
}
You can find the {projectId} value in the Apidog project settings.
2.
Configure DNS record for your custom domain name to point to your reverse proxy server.

Deploying API Documents to a Subdirectory of a Custom Domain#

Apidog's Reverse Proxyallows API documents to be deployed to a subdirectory of a custom domain. For instance, you can deploy the documentation to the /api-docs path on a domain like https://example.com. When users visit https://example.com/api-docs, they will be accessing the online API documentation hosted by Apidog.

Configuration Steps:#

1.
On Apidog's Custom Domain setting page, enter your custom domain.
2.
Select Reverse Proxy and enable Use Subdirectory, then enter the subdirectory path.
3.
Next, you'll need to modify the configuration file of your web server. Assuming you're using Nginx to proxy your service, you can refer to the following configuration:
proxy_pass: Forward client requests to another server (such as Apidog’s API documentation server).
proxy_set_header: Set request headers sent by the proxy server to the upstream server, ensuring the request is properly handled.
/api-docs/ is the subdirectory of the custom domain, and it must end with a / in the Nginx configuration.
http://{projectId}.apidog.io/ must also end with a /.
Replace {projectId} with your Apidog project ID.
docs.example.com is a sample custom domain. Replace it with your actual custom domain.
After configuration, you need to restart Nginx on your server.

Enable HTTPS#

Apidog's online documentation supports the HTTPS protocol, which has several advantages over HTTP:
Secure data transmission: HTTPS uses SSL/TLS encryption to ensure the security of data transmission, preventing third parties from intercepting information.
SEO optimization: Search engine crawlers prefer to use HTTPS because it offers better security and privacy protection. Therefore, HTTPS websites may have higher authority in search engine rankings than HTTP websites.

Steps to Enable HTTPS:#

1.
Go to the Publish page and open the Custom Domain tab.
2.
Switch on HTTPS to enable HTTPS, and optionally, you can enable Always Use HTTPS to prevent communication from being hijacked or man-in-the-middle attacks.

SSL Certificate Management#

Once HTTPS is enabled, you can choose how to manage your SSL certificate:
Generated by Apidog: Apidog will automatically generate an SSL certificate.
Use Your Own Certificate: You can upload an SSL certificate and private key issued by a certificate authority(e.g., Let's Encrypt).

Troubleshooting#

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}.eu.apidog.com.
Previous
How to share APIs to collaborators in Apidog?
Next
How to create multi-version documentation in Apidog?
Built with