# API: Edit product form

# editProductForm

Edit a product form component. Only fields you provide are updated — unspecified parameters retain their current values. For config[] keys, only the keys you pass are merged with the existing config. To update item pricing, first call getProductForm to obtain item IDs, then pass those IDs in items[{n}][id]. For items with pricing (Regular or Once), pass items[{n}][pricing]=1 or prices will not be saved.

# Required parameters

Parameter Description
id Form field ID
product_id Product ID

# Optional parameters

Parameter Description
name Form field label
type Change field type: input, textarea, encryptedinput, encryptedpassword, phonenumberinput, multiinput, textblock, select, searchselect, dropdownms, radio, checkbox, multicheckbox, selectqty, selectref, qty, slider, sliderinput, slidersequenced, datepicker, relatedcomponent, relatedservice, signagreement, documentsupload, sshkeyselect, contactselector, servergroupselector, serverselector, servicegroupselector, san, domaindnssupport, idprotection
description Description shown to customer
admin_description Description visible to admin only
key URL key identifier
variable Variable name for templates and automation
category Display category / group label
options Bitmask of field flags: 1 = required, 2 = show in admin panel, 4 = hidden from client. Use 0 to clear all flags.
config[initialval] Default/initial value; supports template variables e.g. {account_domain} (input, textarea, slider, sliderinput, slidersequenced, san)
config[unique] Enforce unique value across all accounts: 1 = yes (input, textarea, multiinput)
config[expression] Regex validation pattern e.g. /^[a-z]+$/i (input, textarea, multiinput)
config[maxinput] Maximum number of inputs allowed (multiinput)
config[replace] On save, write value into account domain field: 1 = yes (input, textarea, phonenumberinput)
config[replaceusername] On save, write value into account username field: 1 = yes (input, textarea, phonenumberinput)
config[minvalue] Minimum allowed value or selection count (qty, slider, sliderinput, slidersequenced, multicheckbox, selectqty)
config[maxvalue] Maximum allowed value or selection count (qty, slider, sliderinput, slidersequenced, multicheckbox, selectqty, san)
config[step] Step increment (slider, sliderinput)
config[steps] Comma-separated list of discrete step values e.g. 512, 1024, 2048 (slidersequenced)
config[dontchargedefault] Do not charge for the default quantity: 1 = yes (slider, sliderinput, slidersequenced)
config[showsteps] Show step markers on the slider: 1 = yes (slider, sliderinput, slidersequenced)
config[upgradefee] Extra fee charged when upgrading the value (qty, slider, sliderinput, slidersequenced)
config[downgradefee] Extra fee charged when downgrading the value (qty, slider, sliderinput, slidersequenced)
config[enableddefault] Checkbox ticked by default: 1 = yes (checkbox, multicheckbox, domaindnssupport, idprotection)
config[hidden] Hide the field from display while still storing the value: 1 = yes (checkbox, multicheckbox)
config[addemptyoption] Prepend an empty -- option to the list: 1 = yes (select, searchselect, dropdownms, radio, selectqty, selectref, relatedservice)
config[hideontransfer] Hide the option during domain transfer: 1 = yes (select, idprotection)
config[related] ID of the qty/slider field whose quantity this field is linked to (relatedcomponent)
config[link] ID of the field this dropdown is linked to for quantity selection (selectref)
config[categories] Comma-separated category IDs to filter available services (relatedservice)
config[statuses] Comma-separated statuses to filter available services e.g. Active,Pending (relatedservice)
config[only_one] Allow selecting only one related service: 1 = yes (relatedservice)
config[contract] Contract template ID that the client must sign (signagreement)
config[single_key] Allow selecting only a single SSH key: 1 = yes (sshkeyselect)
config[filelimit] Maximum number of files the client can upload (documentsupload)
config[extensions] Allowed file extensions e.g. .png,.pdf,.jpg (documentsupload)
config[filesize] Maximum file size in MB (documentsupload)
config[minsize] Minimum file size in KB (documentsupload)
config[start_date] Earliest selectable date in MM/DD/YYYY format (datepicker)
config[end_date] Latest selectable date in MM/DD/YYYY format (datepicker)
config[minimaldatetotoday] Force minimum date to today: 1 = yes (datepicker)
config[setstartdatetotoday] Set start date to today automatically: 1 = yes (datepicker)
config[setenddateoffsetN] Number of days from today to set as end date (datepicker)
config[freenames] Number of SANs included for free (san)
config[skipsubdomainvalidation] Skip subdomain hostname validation: 1 = yes (san)
config[allowWildcard] Allow wildcard entries e.g. *.example.com: 1 = yes (san)
items[{n}][id] ID of the item to update — obtained from getProductForm response
items[{n}][name] Item label
items[{n}][variable_id] Item variable identifier
items[{n}][paytype] Item pricing model: Free, Once, Regular
items[{n}][pricing] Set to 1 for items with pricing (Regular or Once paytype). Required for prices to be saved. Omit for Free items.
items[{n}][m] Monthly price (Regular paytype)
items[{n}][q] Quarterly price (Regular paytype)
items[{n}][s] Semi-annual price (Regular paytype)
items[{n}][a] Annual price (Regular paytype)
items[{n}][b] Biennial price (Regular paytype)
items[{n}][t] Triennial price (Regular paytype)
items[{n}][d] Daily price (Regular paytype)
items[{n}][w] Weekly price (Regular paytype)
items[{n}][m_setup] Monthly setup fee (Regular paytype)
items[{n}][a_setup] Annual setup fee (Regular paytype)
items[{n}][m1] One-time price (Once paytype)
items[{n}][m_setup1] One-time setup fee (Once paytype)

# Request

GET /admin/api.php?api_id=API_ID&api_key=API_KEY&call=editProductForm&id=ID&product_id=PRODUCT_ID

# PHP Samples

# PHP Samples: Rename field and update description

# PHP Samples: Make field required

# PHP Samples: Remove required flag (clear all options)

# PHP Samples: Edit qty field: change range

# PHP Samples: Edit qty/slider: set upgrade and downgrade fees

# PHP Samples: Edit slider field: change range and step

# PHP Samples: Edit slidersequenced: change discrete steps

# PHP Samples: Edit text input: set initial value (supports template vars)

# PHP Samples: Edit multicheckbox: update min/max selection count

# PHP Samples: Edit datepicker: restrict to future dates only

# PHP Samples: Edit documentsupload: change allowed extensions and size limit

# PHP Samples: Edit relatedcomponent: change linked field

# PHP Samples: Edit relatedservice: filter by status and category

# PHP Samples: Edit signagreement: change contract

# PHP Samples: Edit select items: update Regular pricing (use IDs from getProductForm)

# PHP Samples: Edit select items: switch to Once (one-time) pricing

# PHP Samples: Edit yesno field: change default and pricing

# PHP Samples: Change field type from input to textarea

# Response

{
    "success": true,
    "call": "editProductForm",
    "server_time": 1706614584,
    "info": [
        "Component edited"
    ]
}
Last Updated: 5/11/2026, 2:17:28 PM