Domains and Certificates

April 3, 2026

We are currently in the process of improving our domain and certificate management features, and as a result some of the information provided in this section will change in upcoming releases of Jahia Cloud. We recommend contacting Jahia Support if you are unable to find the information you need to construct the API call.

Bind a custom domain

Binds a custom (external) domain to an existing environment. You can call this action multiple times to attach several domains.

Make sure the DNS record for extDomain (CNAME or A) points to the environment before calling this action, otherwise traffic will not reach Jahia.

Endpoint

POST <CLOUD_URL>/modules/cloudAction/bindExtDomain.do

Example

CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment

JAHIA_EXT_DOMAIN="my-custom-jahia.domain.com" # The custom domain to bind to the environment

CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.

curl -i "${CLOUD_URL}/modules/cloudAction/bindExtDomain.do" \
  -X POST \
  -H "Authorization: APIToken ${CLOUD_PAT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
  --data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&extDomain=${JAHIA_EXT_DOMAIN}"

Expected result

HTTP 200 on success. Any other status code means the domain binding failed.

Install an SSL certificate

You can install (or upload) an SSL certificate to secure custom domains attached to your environment. This action is used to install a certificate in your organization's list of available certificates. Once the certificate is installed, you can attach it to a custom domain with the bindSslCert.do action.

Endpoint

POST <CLOUD_URL>/modules/cloudAction/addSslCert.do

Example

CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment

CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.

CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIUQ2xvdWRBY3Rpb25zU2FtcGxlQ2VydDAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
MEUxCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxFjAUBgNVBAMMDW15LWVudi5leGFt
cGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArandomsamplebase64valuefordocumentationonly123
anotherlineofsamplebase64dataforcertificateexample4567890abcdefghijklmnopqrstuv==
-----END CERTIFICATE-----
EOF
)

PRIVATE_KEY=$(cat <<'EOF'
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDsampleprivatekeycontentfordocs000111222333
samplelineprivatekeybase64abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+/==
-----END PRIVATE KEY-----
EOF
)

INTERMEDIATE_CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIUSW50ZXJtZWRpYXRlQ2VydFNhbXBsZTAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
ME8xCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxIDAeBgNVBAMMF2ludGVybWVkaWF0
ZS5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALoremipsumsampleintermediatecert
samplebase64lineforintermediatecertificatecontentonlynotvalidcert==
-----END CERTIFICATE-----
EOF
)

curl -i "${CLOUD_URL}/modules/cloudAction/addSslCert.do" \
  -X POST \
  -H "Authorization: APIToken ${CLOUD_PAT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
  --data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&cert=${CERT}&key=${PRIVATE_KEY}&interm=${INTERMEDIATE_CERT}"

Expected result

HTTP 200 if your call was successful, note that you will also receive a 200 if the certificate couldn't be installed properly, in such a case you will also receive a JSON response with an error field describing the issue.

{
  "result": 3001,
  "source": "JEL",
  "jcResponse": 1,
  "error": "Could not parse certificate"
}

Update an SSL certificate

You can update an existing SSL certificate in your organization's list of available certificates. This action is used to update a certificate in your organization's list of available certificates. Once the certificate is updated, any custom domain attached to it will use the new certificate.

Endpoint

POST <CLOUD_URL>/modules/cloudAction/updateSslCert.do

Example

CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment

CERTIFICATE_ID="18" # The ID of the certificate you want to update

CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.

CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIUQ2xvdWRBY3Rpb25zU2FtcGxlQ2VydDAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
MEUxCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxFjAUBgNVBAMMDW15LWVudi5leGFt
cGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArandomsamplebase64valuefordocumentationonly123
anotherlineofsamplebase64dataforcertificateexample4567890abcdefghijklmnopqrstuv==
-----END CERTIFICATE-----
EOF
)

PRIVATE_KEY=$(cat <<'EOF'
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDsampleprivatekeycontentfordocs000111222333
samplelineprivatekeybase64abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+/==
-----END PRIVATE KEY-----
EOF
)

INTERMEDIATE_CERT=$(cat <<'EOF'
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIUSW50ZXJtZWRpYXRlQ2VydFNhbXBsZTAeFw0yNjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBa
ME8xCzAJBgNVBAYTAkZSMQ4wDAYDVQQIDAVQYXJpczEOMAwGA1UEBwwFUGFyaXMxIDAeBgNVBAMMF2ludGVybWVkaWF0
ZS5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALoremipsumsampleintermediatecert
samplebase64lineforintermediatecertificatecontentonlynotvalidcert==
-----END CERTIFICATE-----
EOF
)

curl -i "${CLOUD_URL}/modules/cloudAction/updateSslCert.do" \
  -X POST \
  -H "Authorization: APIToken ${CLOUD_PAT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
  --data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&certificateId=${CERTIFICATE_ID}&cert=${CERT}&key=${PRIVATE_KEY}&interm=${INTERMEDIATE_CERT}"

Expected result

HTTP 200 if your call was successful, note that you will also receive a 200 if the certificate couldn't be installed properly, in such a case you will also receive a JSON response with an error field describing the issue.

{
  "result": 3001,
  "source": "JEL",
  "jcResponse": 1,
  "error": "Could not parse certificate"
}

Bind an SSL certificate

Attaches an SSL certificate to a custom domain that was previously bound with bindExtDomain.do.

Endpoint

POST <CLOUD_URL>/modules/cloudAction/bindSslCert.do

Example

CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment

JAHIA_EXT_DOMAIN="my-custom-jahia.domain.com" # The custom domain bound via bindExtDomain.do

JAHIA_EXT_DOMAINS_CERTIFICATE_ID="18"

CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.

curl -i "${CLOUD_URL}/modules/cloudAction/bindSslCert.do" \
  -X POST \
  -H "Authorization: APIToken ${CLOUD_PAT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
  --data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&extDomain=${JAHIA_EXT_DOMAIN}&certificateId=${JAHIA_EXT_DOMAINS_CERTIFICATE_ID}"

Expected result

HTTP 200 on success. Any other status code means the certificate binding failed.

Delete an SSL certificate

Deletes an SSL certificate from your organization.

Endpoint

POST <CLOUD_URL>/modules/cloudAction/deleteSslCert.do

Example

CLOUD_URL="https://jahia.cloud" # Base URL of your Jahia Cloud instance
CLOUD_ENVNAME="my-env" # Must be unique across your organization, and can only contain lowercase letters, numbers and hyphens
CLOUD_ORG="jahiacloud" # Assigned to your organization by Jahia, used to construct the shortDomain
CLOUD_SHORTDOMAIN="${CLOUD_ENVNAME}-${CLOUD_ORG}" # Short domain for the new environment

CLOUD_PAT="PRIVATE_TOKEN" # Cloud Perstonal API Token generated from the Jahia Cloud UI.

CERTIFICATE_ID="18" # The ID of the certificate you want to delete

curl -i "${CLOUD_URL}/modules/cloudAction/deleteSslCert.do" \
  -X POST \
  -H "Authorization: APIToken ${CLOUD_PAT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
  --data-raw "orgName=${CLOUD_ORG}&envName=${CLOUD_SHORTDOMAIN}&certificateId=${CERTIFICATE_ID}"

Expected result

HTTP 200 on success. Any other status code means the certificate deletion failed.

{
  "result": 0,
  "infos": [
    {
      "result": 0,
      "id": 359
    }
  ]
}