# cPanel API 2 Functions - SubDomain::addsubdomain

Warning:
The cPanel API 2 system is deprecated. We **strongly** recommend that you use [UAPI](/cpanel/introduction) instead of cPanel API 2.

## Description

This function creates a subdomain.

Warning:
We **strongly** recommend that you use the following [UAPI](/cpanel/introduction/) function instead of this function:

- [`SubDomain::addsubdomain`](/openapi/whm/operation/create_subdomain/) — This function creates a subdomain.


Important:
When you disable the [*Web Server* role](https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-use-server-profiles/#roles), the system **disables** this function.

## Examples

WHM API (JSON)


```undefined syntaxhighlighter-pre
https://hostname.example.com:2087/cpsess##########/json-api/cpanel?cpanel_jsonapi_user=user&cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=SubDomain&cpanel_jsonapi_func=addsubdomain&domain=subdomain&rootdomain=example.com&dir=%2Fpublic_html%2Fdirectory_name&disallowdot=1
```

Note:
For more information, read our [Calls from the WHM API](/whm/use-whm-api-to-call-cpanel-api-and-uapi) documentation.

LiveAPI PHP Class


```undefined syntaxhighlighter-pre
$cpanel = new CPANEL(); // Connect to cPanel - only do this once.

// Create a subdomain.
$addsubdomain = $cpanel->api2(
    'SubDomain', 'addsubdomain',
        array(
        'domain'                => 'subdomain',
        'rootdomain'            => 'example.com',
        'dir'                   => '/public_html/directory_name',
        'disallowdot'           => '1',
    )
);
```

Note:
For more information, read our [Guide to the LiveAPI System](/guides/guide-to-the-liveapi-system/#guide-to-the-liveapi-system).

LiveAPI Perl Module


```undefined syntaxhighlighter-pre
my $cpliveapi = Cpanel::LiveAPI->new(); # Connect to cPanel - only do this once.

# Create a subdomain.
my $addsubdomain = $cpliveapi->api2(
    'SubDomain', 'addsubdomain',
    {
        'domain'                => 'subdomain',
        'rootdomain'            => 'example.com',
        'dir'                   => '/public_html/directory_name',
        'disallowdot'           => '1',
    }

);
```

Note:
For more information, read our [Guide to the LiveAPI System](/guides/guide-to-the-liveapi-system/#guide-to-the-liveapi-system).

cPanel Tag System (deprecated)

Warnings:
- cPanel tags are **deprecated**. We **strongly** recommend that you **only** use the [LiveAPI](/guides/guide-to-the-liveapi-system) system to call the cPanel APIs. Examples are **only** present in order to help developers move from the old cPanel tag system to our [LiveAPI](/guides/guide-to-the-liveapi-system).
- cPanel API 2 calls that use cPanel tags vary in code syntax and in their output.
- For more information, read our [Deprecated cPanel Tag Usage](/cpanel-api-2/cpanel-api-2-deprecate-cpanel-tag-usage/) documentation.


Command Line


```undefined syntaxhighlighter-pre
cpapi2 --user=username SubDomain addsubdomain domain=subdomain rootdomain=example.com dir=%2Fpublic_html%2Fdirectory_name disallowdot=1
```

div
Notes:

- You **must** URI-encode values.
- `username` represents your account-level username.
- You **must** include the `--user=username` option.
- For more information and additional output options, read our [Guide to cPanel API 2](/cpanel-api-2/) documentation or run the `cpapi2 --help` command.
- If you run CloudLinux™, you **must** use the full path of the `cpapi2` command:

```undefined syntaxhighlighter-pre
/usr/local/cpanel/bin/cpapi2
```


br
Output (JSON)


```undefined syntaxhighlighter-pre
{
    "cpanelresult": {
        "apiversion": 2,
        "func": "addsubdomain",
        "data": [{
            "reason": "The subdomain \"subdomain.example.com\" has been added.",
            "result": 1
        }],
        "event": {
            "result": 1
        },
        "module": "SubDomain"
    }
}
```

Note:
Use cPanel's *[API Shell](https://docs.cpanel.net/cpanel/advanced/api-shell-for-cpanel)* interface (*cPanel >> Home >> Advanced >> API Shell*) to directly test cPanel API calls.

## Parameters

table
thead
tr
th
strong
Parameter
th
strong
Type
th
strong
Description
th
strong
Possible values
th
strong
Example
tbody
tr
td
code
domain
td
em
string
td
p
strong
Required
p
The subdomain name to create.
td
p
A valid subdomain name.
td
code
subdomain
br
tr
td
code
rootdomain
td
em
string
td
p
strong
Required
p
The domain on which to create the new subdomain.
td
A domain that already exists on the cPanel account.
td
code
example.com
tr
td
code
canoff
td
em
Boolean
td
p
Whether to use a canonical name in the 
a
Apache® configuration for self-referential URLs
.
p
This parameter defaults to 
code
0
.
td
ul
li
code
1
 — Use the canonical name.
li
code
0
 — Do 
strong
not
 use the canonical name.
td
code
0
tr
td
code
dir
td
em
string
td
p
The subdomain's document root within your home directory.
p
span
This parameter's default depends on the server's settings:
ul
li
span
cPanel 
&
 WHM version 58 and higher:
ul
li
If the 
code
Restrict document roots to public_html
 value is 
code
On
, the parameter defaults to the 
code
public_html/subdomain_name
 path, where 
code
subdomain_name
 is the subdomain's name.
li
If the 
code
Restrict document roots to public_html
 value is 
code
Off
, the parameter defaults to the 
code
subdomain_name
 path, where 
code
subdomain_name
 is the subdomain's name.
li
span
cPanel 
&
 WHM version 56 and earlier:
ul
li
If the 
code
public_html subdomains only
 value is 
code
On
, the parameter defaults to the 
code
public_html/subdomain_name
 path, where 
code
subdomain_name
 is the subdomain's name. 
li
If the 
code
public_html subdomains only
 value is 
code
Off
, the parameter defaults to the 
code
subdomain_name
 path, where 
code
subdomain_name
 is the subdomain's name.
br
td
div
p
A valid directory path, relative to the user's home directory.
p
You 
strong
cannot
 use the following directories as a document root:
ul
li
The account's home directory itself (
code
/
)
li
Directories outside of the account's home directory (
code
./
 and 
code
../
)
li
code
.cpanel
li
code
.trash
li
code
etc
li
code
mail
li
code
ssl
li
code
tmp
li
code
logs
li
code
.cphorde
li
code
.spamassassin
li
code
.htpasswds
li
code
var
li
code
cgi-bin
li
code
.ssh
li
code
perl5
td
code
/public_html/directory_name
tr
td
code
disallowdot
td
em
Boolean
td
p
Whether to remove the dots (
code
.
) from the 
code
domain
 value.
p
This parameter defaults to 
code
0
.
td
ul
li
code
1
 — Remove dots from the domain.
li
code
0
 — Do 
strong
not
 remove dots.
td
code
1
## Returns

table
thead
tr
th
strong
Return
th
strong
Type
th
strong
Description
th
strong
Possible values
th
strong
Example
tbody
tr
td
code
reason
td
em
string
td
p
A message of success or a reason for failure.
td
p
A string that describes the success or error.
td
code
This is an error message.
tr
td
code
result
td
em
Boolean
td
p
Whether the function succeeded.
td
ul
li
code
1
 — The function succeeded.
li
code
0
 — The function failed.
td
code
1