Skip to content
Last updated

GetProducts

Retrieve configured products matching provided criteria

NOTE: This API method is designed to be used in the building of custom order forms. As a result, only custom fields that have the 'Show on Order Form' setting enabled will be returned for a given product.

Request Parameters

ParameterTypeDescriptionRequired
actionstring"GetProducts"Required
pidint|stringObtain a specific product id configuration. Can be a list of ids comma separatedOptional
gidintRetrieve products in a specific group idOptional
modulestringRetrieve products utilising a specific moduleOptional

Response Parameters

ParameterTypeDescription
resultstringThe result of the operation: success or error
totalresultsintThe total number of results available
startnumberintThe starting number for the returned results
numreturnedintThe number of results returned
productsarrayAn array of products matching the criteria passed

Example Request (CURL)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com/includes/api.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
    http_build_query(
        array(
            'action' => 'GetProducts',
            // See https://developers.whmcs.com/api/authentication
            'username' => 'IDENTIFIER_OR_ADMIN_USERNAME',
            'password' => 'SECRET_OR_HASHED_PASSWORD',
            'pid' => '1',
            'responsetype' => 'json',
        )
    )
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);

Example Request (Local API)

$command = 'GetProducts';
$postData = array(
    'pid' => '1',
);
$adminUsername = 'ADMIN_USERNAME'; // Optional for WHMCS 7.2 and later

$results = localAPI($command, $postData, $adminUsername);
print_r($results);

Example Response JSON

{
    "result": "success",
    "totalresults": 1,
    "products": {
        "product": [
            {
                "pid": 1,
                "gid": 1,
                "type": "hostingaccount",
                "name": "Best Hosting Plan",
                "slug": "best-hosting-plan",
                "product-url": "https:\/\/www.example.com\/whmcs\/product-group\/best-hosting-plan",
                "description": "This is our best hosting plan, with all the bells and whistles.",
                "module": "cpanel",
                "paytype": "recurring",
                "allowqty": 2,
                "quantity_available": 0,
                "pricing": {
                    "USD": {
                        "prefix": "$",
                        "suffix": " USD",
                        "msetupfee": "0.00",
                        "qsetupfee": "0.00",
                        "ssetupfee": "0.00",
                        "asetupfee": "0.00",
                        "bsetupfee": "0.00",
                        "tsetupfee": "0.00",
                        "monthly": "25.99",
                        "quarterly": "-1.00",
                        "semiannually": "-1.00",
                        "annually": "-1.00",
                        "biennially": "-1.00",
                        "triennially": "-1.00"
                    }
                },
                "customfields": {
                    "customfield": [
                        {
                            "id": 2,
                            "name": "Secondary Contact",
                            "description": "Would you like to provide a secondary point of contact?",
                            "required": ""
                        }
                    ]
                },
                "configoptions": {
                    "configoption": [
                        {
                            "id": 4,
                            "name": "MultiPHP Services",
                            "type": "3",
                            "minqty": 1,
                            "maxqty": 10,
                            "options": {
                                "option": [
                                    {
                                        "id": 4,
                                        "name": "Include MultiPHP Options",
                                        "rawName": null,
                                        "recurring": 0,
                                        "required": null,
                                        "pricing": {
                                            "USD": {
                                                "msetupfee": "0.00",
                                                "qsetupfee": "0.00",
                                                "ssetupfee": "0.00",
                                                "asetupfee": "0.00",
                                                "bsetupfee": "0.00",
                                                "tsetupfee": "0.00",
                                                "monthly": "2.99",
                                                "quarterly": "0.00",
                                                "semiannually": "0.00",
                                                "annually": "0.00",
                                                "biennially": "0.00",
                                                "triennially": "0.00"
                                            }
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    }
}

Version History

VersionChangelog
1.0Initial Version
8.3Added slug and product_url in response
8.12Added allowqty and quantity_available in response
8.12Added minqty and maxqty to configurable options