Creating a Service Plan
Use the add operation to create plans. When creating a plan, it is enough to specify a plan name. If you are authorized as the Administrator but want to add a plan to a reseller’s plan list, specify the reseller ID or username. Additionally, you can specify plan settings when creating a plan.
Request Packet Structure
A request XML packet adding a new service plan to Plesk database includes the add operation node:
<packet>
<service-plan>
   <add>
   ...
   </add>
</service-plan>
</packet>
The add node is presented by type DomainTemplateAddInputType
(domain_template.xsd). Its graphical representation is as follows:

- The name node is required. It specifies the name of the service plan. Data type: string.
- The owner-id node is optional. It specifies the ID of the service plan owner. Data type: integer.
- The owner-login node is optional. It specifies the login name of the service plan owner. Data type: string.
- The mail node is optional. It specifies a collection of email
preferences that will be assigned to a new subscription created using
this plan. Data type: MailPreferences (plesk_mailname.xsd). See the structure of this node in the Mailing settings section.
- The limits node is optional. It specifies a collection of
limits that will be set for new subscriptions created using this
plan. Data type: domainLimits (plesk_domain.xsd). See the structure of this node in the Limits section.
- The log-rotation node is optional. It is used to turn on/off
rotation of log files related to a subscription created using this
plan. Data type: LogRotationType (domain_template.xsd). See the structure of this node in the Log Rotation Settings section.
- The preferences node is optional. It is used to specify a
collection of preferences for new subscriptions created using this
plan. Data type: DomainTemplatePreferecesType
(domain_template.xsd). See the structure of this node in the Preferences section.
- The hosting node is optional. Specifies physical hosting
settings for new subscriptions created using this plan. Data type:
DomainTemplatePHostingPreferences (domain_template.xsd). See the structure of this node in the Hosting Settings section.
- The performance node is optional. It specifies performance
settings for new subscriptions created using this service plan. Data
type: DomainPerformanceType (plesk_domain.xsd). See the structure of this node in the Performance Settings section.
- The permissions node is optional. It defines which services and privileges that can be enabled in a service plan. Data type: none. See the structure of this node in the Permissions section.
- The external-id node is optional. It defines a service plan identifier in the Plesk components (for example, Business Manager). Data type: sting.
- The php-settings node is optional. It specifies custom PHP
settings that will act as a preset for all plan subscriptions. Data
type: phpSettings (domain_template.xsd). See the section PHP Settings for details.
- The web-server-settings node is optional. It specifies custom
web server settings that will act as a preset for all plan
subscriptions. Data type: webServerSettings
(domain_template.xsd). See the section Web Server Settings for details.
Note: When creating request packets, put nodes and elements in the order they follow in the packet structure.
Note: The interactive schema navigator for all request packets is available here: http://plesk.github.io/api-schemas/1.6.8.0/agent_input.svg.
Response Packet Structure
The add node of the output XML packet is of type
DomainTemplateAddOutputType (domain_template.xsd) which has the
following presentation:

- The result node is required. It wraps the response got from the
server. Data type: resultType (common.xsd).
- The status node is required. Specifies the execution status of the operation. Data type: string. Allowed values: ok | error.
- The errcode node is optional. Returns the error code when the operation fails. Data type: unsignedInt.
- The errtext node is optional. Returns the error message if the operation fails. Data type: string.
- The id node is optional. It is required if the operation has succeeded. Returns the unique identifier of a service plan just added to the Panel. Data type: integer.
- The guid node is optional. Returns the GUID of a service plan just added to the Panel. Data type: string.
Note: The interactive schema navigator for all response packets is available here: http://plesk.github.io/api-schemas/1.6.8.0/agent_output.svg.
Samples
Creating service plans for different Plesk users
To create a plan on behalf of the reseller with ID 12, issue the following packet.
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <owner-id>1</owner-id>
   <mail>
      <mailservice>1</mailservice>
   </mail>
</add>
</service-plan>
</packet>
Response:
<?xml version="1.0" encoding="UTF-8"?>
<packet version="1.6.7.0">
  <service-plan>
    <add>
      <result>
        <status>ok</status>
        <id>11</id>
        <guid>15b56488-60f7-1b15-b489-09ece02dbb4f</guid>
      </result>
    </add>
  </service-plan>
</packet>
When creating a service plan for Plesk Administrator, omit the reseller identifiers:
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <mail>
      <webmail>horde</webmail>
   </mail>
</add>
</service-plan>
</packet>
Creating multiple service plans
To create two service plans with a single packet, include two different add blocks:
<packet>
<service-plan>
<add>
   <name>base_plan1</name>
   <mail>
      <webmail>none</webmail>
   </mail>
</add>
<add>
   <name>quick_plan1</name>
   <mail>
      <webmail>horde</webmail>
   </mail>
</add>
</service-plan>
</packet>
Response:
<?xml version="1.0" encoding="UTF-8"?>
<packet version="1.6.7.0">
  <service-plan>
    <add>
      <result>
        <status>ok</status>
        <id>12</id>
        <guid>acd360bc-6c23-2689-76e5-b01438f5e4a3</guid>
      </result>
    </add>
    <add>
      <result>
        <status>ok</status>
        <id>13</id>
        <guid>27fc6501-c137-49cd-5c36-eb74954e68a2</guid>
      </result>
    </add>
  </service-plan>
</packet>
Mailing settings
The following packet creates a service plan and configures its mail settings.
<packet>
<service-plan>
<add>
   <name>bounce_template</name>
   <mail>
      <nonexistent-user>
          <bounce>Email address does not exist.</bounce>
      </nonexistent-user>
      <webmail>true</webmail>
   </mail>
</add>
</service-plan>
</packet>
Log rotation
To disable log rotation for plan base_plan, use the following packet:
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <log-rotation>
      <off/>
   </log-rotation>
</add>
</service-plan>
</packet>
The following packet creates a service plan that enables log rotation that allows to store up to 30 handled log files per subscription, and removes active log once a week:
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <log-rotation>
      <on>
          <log-condition>
              <log-bytime>Weekly</log-bytime>
          </log-condition>
          <log-max-num-files>30</log-max-num-files>
          <log-compress>true</log-compress>
      </on>
   </log-rotation>
</add>
</service-plan>
</packet>
Preferences
The following packet creates a service plan with specific preferences.
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <preferences>
      <stat>6</stat>
      <maillists>true</maillists>
      <dns_zone_type>master</dns_zone_type>
   </preferences>
</add>
</service-plan>
</packet>
Hosting
Here is the sample packet that creates a service plan with specific physical hosting settings.
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <hosting>
        <property>
            <name>ssl</name>
            <value>true</value>
        </property>
   </hosting>
</add>
</service-plan>
</packet>
Performance settings
Here is the sample packet that creates a service plan with specific performance settings.
<packet>
<service-plan>
<add>
   <name>base_plan</name>
   <performance>
      <bandwidth>1000</bandwidth>
      <max_connections>20</max_connections>
   </performance>
</add>
</service-plan>
</packet>