---
title: "Environments & base URLs"
description: "Choose the right environment, regional hostname, and base URL pattern for API requests."
source_url: https://dev.digicert.com/get-started/environments-base-urls.html
---
DigiCert® provides both production and demo environments across four geographic regions. Each API call starts with a region-specific hostname (base URL), followed by a predictable versioned path.
> **Tip**
>
> See Platform IP addresses and URLs for a complete list of protocols, hostnames, and IP addresses.
| Environment | Purpose |
| --- | --- |
| **Demo** | Safe testing, proof-of-concepts |
| **Production** | Live operations |
## Region and hostname matrix
Make sure to use the appropriate hostname based on your regional requirements.
| Region | Demo hostname | Production hostname | Notes |
| --- | --- | --- | --- |
| United States (US) | `demo.one.digicert.com` | `one.digicert.com` | Default region; lowest latency for the Americas |
| Japan (JP) | `demo.one.digicert.co.jp` | `one.digicert.co.jp` | Japanese data residency. |
| Switzerland (CH) | `demo.one.ch.digicert.com` | `one.ch.digicert.com` | Swiss data sovereignty; strict privacy laws |
| Netherlands (NL) | `demo.one.nl.digicert.com` | `one.nl.digicert.com` | EU-only data storage (GDPR) |
| Australia (AU) | demo.one.au.digicert.com | one.au.digicert.com | Australian data residency. |
> **Info**
>
> Add the `clientauth.` prefix to any of the above hostnames when you authenticate with a client certificate. For example, `clientauth.demo.one.digicert.com`. See [Authentication](https://dev.digicert.com/md/get-started/authentication.md) for details on using mTLS.
## Base URL pattern
Every DigiCert® ONE API follows this structure:
```text
https://{hostname}/{product}/api/v{n}/{resource}
```
| Segment | Description | Examples |
| --- | --- | --- |
| `{hostname}` | DigiCert ONE hostname | `one.digicert.com`
`demo.one.digicert.com`
`one.digicert.co.jp` |
| `{product}` | DigiCert ONE product-specific path segment | `account` (Account Manager)
`certificate-authority` (DigiCert Private CA)
`mpki` (Trust Lifecycle Manager)
`signingmanager` (Software Trust Manager)
`devicetrustmanager` (Device Trust Manager) |
| `api/v{n}` | API version; most products are `v1` and follow this convention. Device Trust Manager uses nested versioning for some endpoints, for example `/{resource}/api/v{n}`. | `api/v1`
`api/v3`
`/{resource}/api/v{n}`[*](#device-trust-example) |
| `{resource}` | Specific endpoint path | `users`
`division`
`/enrollment/{enrollment_id}/status`
`/certificate-configuration-service/api/v2/certificate-policy`[*](#device-trust-example) |
* Examples specific to Device Trust API endpoints.
## API endpoints by product
| Product | Path segment | Full example |
| --- | --- | --- |
| DigiCert® Account Manager | `account` | `https://one.digicert.com/account/api/v1/user` |
| DigiCert® Private CA | `certificate-authority` | `https://one.digicert.com/certificate-authority/api/v1/ca` |
| DigiCert® Software Trust Manager | `signingmanager` | `https://one.digicert.com/signingmanager/api/v1/keypairs` |
| DigiCert® Content Trust Manager | `documentmanager` | `https://one.digicert.com/documentmanager/api/v1/credentials/list` |
| DigiCert® Device Trust Manager | `devicetrustmanager` | `https://one.digicert.com/devicetrustmanager/api/v4/devices` |
| DigiCert® Trust Lifecycle Manager | `mpki` | `https://one.digicert.com/mpki/api/v1/certificate-owners` |
## Working with environments
## Start with demo
Demo is perfect for:
- Integration development and testing.
- Training new team members.
- Validating workflows before production.
- Load testing (within reason).
```bash
# Example: List certificates in Trust Lifecycle demo environment
curl -X GET \
-H "x-api-key: YOUR_DEMO_KEY" \
https://demo.one.digicert.com/mpki/api/v1/certificate-owners
```
## Promote to production
When moving from demo to production, make sure you:
- **Create new credentials:** Demo API tokens don't work in production.
- **Update base URLs:** Change only the hostname portion; `demo.one.*` to `one.*`. Paths stay identical.
- **Verify firewall rules:** Your outbound IP list might differ between environments.
- **Test incrementally:** Start with `GET` calls, then progress to `POST`/`PUT` once quotas and roles are validated.
```bash
# Demo environment
BASE_URL="https://demo.one.digicert.com"
# Production environment (only hostname changes)
BASE_URL="https://one.digicert.com"
# Your code stays the same
curl -X GET \
-H "x-api-key: $API_KEY" \
"$BASE_URL/account/api/v1/users"
```
## Network considerations
## IP allowlisting
If your infrastructure requires IP allowlisting, make sure you understand the following:
- Current IP ranges are available at Platform IP addresses and URLs.
- Consider using FQDN-based rules instead of IPs when possible.
## TLS requirements
- **Minimum TLS version**: 1.2
- **Recommended**: TLS 1.3
- **Required for mTLS**: Valid client certificate chain
- **Certificate validation**: DigiCert® validates the full certificate chain
## Self-hosted deployments
For on-premises or dedicated DigiCert instances:
- Replace `{hostname}` with your custom FQDN (for example, `pki.company.internal`).
- All path patterns remain identical.
- The `clientauth.` prefix pattern still applies for mTLS.
## API troubleshooting basics
| Symptom | Likely cause | Quick fix |
| --- | --- | --- |
| 401 Unauthorized | Missing/invalid `x-api-key` or expired certificate | Verify the `x-api-key` header; confirm the service user is active. |
| 403 Forbidden | Authenticated but lacks required role | Add the needed role in Account Manager or use a different key. |
| 429 Too Many Requests | Burst traffic | Implement backoff; spread calls across service users. |
| 503 Service Unavailable | Maintenance window | Retry after the maintenance window; escalate if it lasts longer than 10 minutes. |
| SSL handshake failure when using mTLS | Wrong certificate, key mismatch, or incorrect URL | Check cert/key pair and ensure URL prefix is correct. |
| Everything stopped at midnight | Key or service user reached end date | Create/rotate the key before expiry; update all integrations. |
| Works in demo, fails in prod | Using demo key against prod hostname | Generate a new key in production; update `DC_BASE` environment variable. |
## Best practices
- Monitor Release notes for platform updates and changes.
- Always start with demo, even for simple integrations.
- Use environment variables instead of hard-coded URLs or keys whenever possible.
- Be aware of region-specific URLs.