Welcome to the Honey's Place API!

The Honey's Place API is implemented over standard HTTP requests. This allows Honey's Place to integrate with just about any application that can connect to the web.

Upgrade in less than 5 minutes!
Upgrading is really easy.

  • 1) Get your new password (API Token) from My Account -> Data Integration Services -> Order API on the Honey's Place Website.
  • 2) Change your password in your code.
  • 3) Change the URL you are using for the API to https://www.honeysplace.com/ws/

That's it!

Data Feeds

New Feeds
As of late 2016, Honey's Place now offers custom data feeds in your Honey's Place Website account. Simply log into the website, then go to My Account -> Data Integration Services and then look at "Data Feeds". You can create feeds with your pricing, MAP pricing, and a lot of additional information the older feeds are lacking.

If you are using the custom data feeds, then the images are all available by prepending https://www.honeysplace.com to the beginning of the image path.
Old Feeds
Honey's Place offers 2 data older feeds here for you to consume. They are (right-click on the link and choose Save As... in your browser):



The two files are identical, and updated at the same time, only differing in format. Neither file is meant to be viewed in a browser, the developer should use a tool like cURL or Wget to download the feed.

Should you decide to load the Tab Delimited file into Microsoft Excel, you should use the import tool, and make sure you are importing it as a TAB DELIMITED file.

The image filenames are referenced in the feeds, the way it works is if the image has no path information, the URL for the image is:

http://ws.honeysplace.com/pics/{filename}

If there is path information, it should be appended to the following URL:

http://ws.honeysplace.com/{filename}

The reason for the 2 different URL's is because we have several sources to get the most, and best possible images.

It is HIGHLY RECOMMENDED that you download the products data file you are using at least once per day and update the inventory on your site!

Order Submission

The Order Submission API call is used to submit an order to Honey's Place.

The "packingslip_name" field is the name of the packing slip that you have created in My Account -> Packing Slips that you wish to use for this order.

You should refer to Appendix B to understand what the API will return using this call.


Example:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <account>01234</account>
                <password>abc123</password>
                <order>
                    <reference>Your Order reference number</reference>
                    <shipby>See Appendix A</shipby>
                    <date>05/16/11</date>
                    <items>
                       <item>
                         <sku>PD1234-56</sku>
                         <qty>1</qty>
                       </item>
                       <item>
                         <sku>SE-01234-56-7</sku>
                         <qty>1</qty>
                       </item>
                    </items>
                    <last>Smith</last>
                    <first>John</first>
                    <address1>123 Anywhere St.</address1>
                    <address2>Apt 23B</address2>
                    <city>Smithtown</city>
                    <state>NY</state>
                    <zip>12345</zip>
                    <country>US</country>
                    <phone>(123) 555-1212</phone>
                    <emailaddress>customer@location.com</emailaddress>
                    <instructions>Special instructions provided by customer for order.</instructions>
                    <packingslip_name>valentines</packingslip_name>
                </order>
            </HPEnvelope>
        



Test Orders

Please note that if you submit an order with the "reference" field (your order number) that starts with the letters "TEST" (case insensitive), the order will NOT be processed, it will be marked as shipped with a tracking # of "123456789".

Order Status

The Order Status API call is used to get the status of an order. To get the status of a previously submitted order the following XML should be submitted:


Example:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <account>01234</account>
                <password>PaSsWoRd</password>
                <orderstatus>Order reference number</orderstatus>
            </HPEnvelope>
        

If the order has shipped, the API will return:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <reference>Order reference number</reference>
                <salesinvoice>Honey's Invoice # * See Note Below</salesinvoice>
                <salesorder>Honey's Sales Order #</salesorder>
                <orderdate>Date Ordered</orderdate>
                <shipagent>USPS, UPS, for example</shipagent>
                <shipservice>Priority, for example</shipservice>
                <freightcost>Shipping Cost</freightcost>
                <trackingnumber1>First Tracking Number</trackingnumber1>
                <trackingnumber2>If applicable, second tracking number</trackingnumber2>
                <trackingnumber3>If applicable, third tracking number</trackingnumber3>
                <trackingnumber4>If applicable, fourth tracking number</trackingnumber4>
                <warehousenotes>If applicable, warehouse notes about this order</warehousenotes>
                <status>Shipped</status>
            </HPEnvelope>
        

If the order has not yet shipped, the API will return:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <reference>Order reference number</reference>
                <orderdate>Date Ordered</orderdate>
                <cancelled>If order was cancelled, this field will be a "Yes"</cancelled>
                <status>Not Yet Shipped</status>
            </HPEnvelope>
        

* Invoice Numbers may not be available initially with the tracking numbers
Tracking numbers and shipping costs are provided as soon as the order closes (near real time) as a conviencence to your customer to notify them that their order has shipped. In most cases, the order has not yet been invoiced in our system, which happens in the evening, PST. We highly recommend that if the Honey's Place Invoice Number is important to your accounting software or department, that you set your system to poll the next morning for all orders you have no sales invoice for so that you can populate your database with the updated information.

Stock Check

The Stock Check API call is used to determine if a product (or products) are currently in stock.

A common use for this would be to do a check just prior to a customer checking out to make sure the products they are purchasing are indeed available.


There is a limit of 25 items that can be checked in a single call.


Example:

            <?xml version="1.0" encoding="UTF-8"?>
            <HPEnvelope>
                <account>01234</account>
                <password>PaSsWoRd</password>
                <stockcheck>
                    <sku>abc123</sku>
                    <sku>def456</sku>
                    <sku>ghi789</sku>
                </stockcheck>
            </HPEnvelope>
        

What you will get returned to you is the number of items we have in stock at last check, encapsulated in XML.


Example:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <stock>
                    <item>
                        <sku>abc123</sku>
                        <qty>17</qty>
                    </item>
                    <item>
                        <sku>def456</sku>
                        <qty>34</qty>
                    </item>
                    <item>
                        <sku>ghi789</sku>
                        <qty>2</qty>
                    </item>
                </stock>
            </HPEnvelope>
        

Appendix A: Shipping Options

Carrier Service Old Honey's Text API Code
FedEx First Overnight first overnight F001
FedEx Priority Overnight priority F002
FedEx Standard Overnight standard overnight F003
FedEx 2 Day Air 2day F004
FedEx Express Saver express saver F005
FedEx Ground (USA, Canada, Mexico) ground service F006
FedEx Ground Home Delivery home delivery F007
FedEx International Priority priority intl F008
FedEx International Economy economy intl F009
FedEx SmartPost smartpost F010
USPS Express Mail (Overnight) express P001
USPS Priority Mail priority P002
USPS First Class (< 13oz) first P003
USPS International Express Mail express intl P005
USPS International Priority Mail priority intl P006
USPS International First Class first intl P007
USPS Priority Flat Rate priority/flat rate P008
UPS Next Day Air next day air U001
UPS 2nd Day Air 2nd day air U002
UPS 3 Day Select 3 day select U003
UPS Ground ground U004
UPS Standard (Canada) standard U005
Honeys Customer Pickup pickup PICKUP
Cheapest Best Rate rateshop RTSHOP

Appendix B: API Error Codes

When an order is transmitted to Honey's Place, we will respond with some transactional information for you to be able to complete the processing on your end. If the order is accepted without any error, you will get back a "code 100" from us. This means there was no problem at all with your order, and you will be able to get an order status at a future time.


Example:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <reference>dropshippers reference number</reference>
                <code>100</code>
                <details>Order Accepted for processing</details>
            </HPEnvelope>
        

If you submitted an invalid 2 letter state code for "Nebraska", you would get back an error such as the following:


Example:

            <?xml version="1.0" encoding="iso-8859-1"?>
            <HPEnvelope>
                <reference>dropshippers reference number</reference>
                <code>804</code>
                <details>State is required.</details>
            </HPEnvelope>
        


List of Codes and Details:

            <code>999</code>
            <details>An invalid username / password has been submitted.  Please contact Honey's Place</details>

            <code>800</code>
            <details>First Name is required.</details>

            <code>801</code>
            <details>Last Name is required.</details>

            <code>802</code>
            <details>Address1 is required.</details>

            <code>803</code>
            <details>City is required.</details>

            <code>804</code>
            <details>State is required.</details>

            <code>805</code>
            <details>Zip Code is required.</details>

            <code>806</code>
            <details>Zip Code is invalid.</details>

            <code>807</code>
            <details>Country is invalid (should be 2 characters.)  Required.</details>

            <code>808</code>
            <details>E-Mail is invalid.</details>

            <code>809</code>
            <details>State must be only 2 characters.</details>

            <code>700</code>
            <details>Reference number already used.</details>

            <code>701</code>
            <details>Reference number is required.</details>

            <code>600</code>
            <details>Invalid Shipping Code.</details>

            <code>500</code>
            <details>One or more of the submitted products have been discontinued by the manufacturer.</details>
            <error>SKU: ABC123-01</error>

            <code>501</code>
            <details>One or more of the submitted products do not exist.</details>
            <error>SKU: ABC123-01</error>

            <code>400</code>
            <details>Duplicate product within same order.  Please combine SKU's and QTY.</details>

            <code>300</code>
            <details>You are checking status on an order you have not yet submitted</details>

            <code>0</code>
            <details>Unknown Error.  Please contact Honey's Place.</details>

            <code>100</code>
            <details>Order accepted for processing.</details>
        

Appendix C: Sample Code

Example PHP code:


Submit your XML to https://www.honeysplace.com/ws/ with the data encapsulated in the query parameter "xmldata".

            <?php

                $url = "https://www.honeysplace.com/ws/";

                $post_string = '<?xml version="1.0" encoding="UTF-8"?>
                <HPEnvelope>
                    <account>01234</account>
                    <password>PaSsWoRd</password>
                    <stockcheck>
                        <sku>SE1101202</sku>
                    </stockcheck>
                </HPEnvelope>';

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_URL,$url);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_TIMEOUT, 4);
                curl_setopt ($ch, CURLOPT_POST, true);
                curl_setopt ($ch, CURLOPT_POSTFIELDS, "xmldata=".$post_string);

                $data = curl_exec($ch);
                $info = curl_getinfo($ch);

                if ($data === false || $info['http_code'] != 200) {
                    $data = "No cURL data returned for $url [". $info['http_code']. "]";
                    if (curl_error($ch)) {
                        $data .= "\n". curl_error($ch);
                    }
                    echo $data;
                    exit;
                }
                header("Content-Type: text/xml; charset=utf-8");
                echo $data;

            ?>
        

Second PHP Example using the Guzzle HTTP client

            <?php

                use GuzzleHttp\Client;
                use GuzzleHttp\Psr7;
                use GuzzleHttp\Exception\RequestException;

                $xml = '<?xml version="1.0" encoding="UTF-8"?>
                        <HPEnvelope>
                            <account>ACCOUNT</account>
                            <password>PASSWORD</password>
                            <stockcheck>
                                <sku>SE1101202</sku>
                            </stockcheck>
                        </HPEnvelope>';

                $client = new Client();

                try {
                    $response = $client->request('GET', 'https://www.honeysplace.com/ws', [
                        'query' => ['xmldata' => $xml]
                    ]);
                } catch (RequestException $e) {
                    echo Psr7\str($e->getRequest());
                    if ($e->hasResponse()) {
                        echo Psr7\str($e->getResponse());
                    }
                }

                $body = $response->getBody();
                var_dump($body->getContents());
            ?>
        

Example Perl code:

            #!/usr/bin/perl

            use LWP::UserAgent;
            use HTTP::Request::Common;

            my $userAgent = LWP::UserAgent->new(agent => '');

            $XML = '<?xml version="1.0" encoding="UTF-8"?>
            <HPEnvelope>
                <account>01234</account>
                <Password>PaSsWoRd</Password>
                <order>
                    <reference>5573894</reference>
                    <shipby>P002</shipby>
                    <last>Van Riper</last>
                    <first>Erik</first>
                    <address1>123 Anywhere Street</address1>
                    <address2>Apartment 123</address2>
                    <city>Anytown</city>
                    <state>PA</state>
                    <zip>99999-0486</zip>
                    <country>US</country>
                    <phone>2345671233</phone>
                    <emailaddress>user@place.com</emailaddress>
                        <items>
                                <item>
                                        <sku>JEL-PI</sku>
                                        <qty>1</qty>
                                </item>
                        </items>
                </order>
            </HPEnvelope>';
            my $response = $userAgent->post('https://www.honeysplace.com/ws/',
                                        Content_Type => 'multipart/form-data',
                                        Content => [xmldata => $XML]);
            $resp = $response->content;
            print $resp . "\n";
        

Example PHP code to parse the large (old) XML feed:

            <?php

                ini_set("memory_limit","128M"); // Set to where you need it

                $file = "honeysinventoryv2_0.xml";

                if(!file_exists($file))
                {
                    die("Fatal Error: Cannot open " . $file);
                }
                $xml= simplexml_load_file($file);

                foreach($xml->Item as $item)
                {
                    $stats = compareProducts($item);
                }
                //echo "Peak Memory Usage: " . memory_get_peak_usage(true) . " bytes\n";
                exit;

                function compareProducts($item)
                {
                    $sku = $item->attributes()->SKU; // Get the sku
                    $qty = $item->attributes()->Quantity_On_Hand; // Get the Honey's QTY
                    // ... get all the fields you are interested in

                    // Do work here

                    // If you have this product in your DB, then update it.
                    // If you do not have the product in your DB, then add it.

                    // Printing for example purposes.
                    print "$sku: $qty\n";
                }

            /*

            Fields in use as of 10/1/2013

            SKU
            UPC
            Released_Date
            Cat_1
            Cat_1_1
            Cat_1_2
            Cat_2
            Cat_2_1
            Cat_2_2
            Cat_3
            Cat_3_1
            Cat_3_2
            Cat_4
            Cat_4_1
            Cat_4_2
            Product_Name
            Unit_Price
            Gross_Weight
            Quantity_On_Hand
            Discontinued
            Manufacturer_Name
            Last_Date_Modifed
            Country_Made_In
            Spanish_Item
            Realistic
            Materials
            Size_Length
            Size_Width
            Size_Circumference
            Power_Source_Qty_AA
            Power_Source_Qty_AAA
            Power_Source_Qty_C
            Power_Source_Qty_D
            Power_Source_Qty_9V
            Power_Source_Qty_Watch
            Power_Source_Qty_110V_AC
            Power_Source_Qty_Other
            Waterproof
            Phthalate_Free
            LED
            Multi_Speed
            Multi_Function
            Vibrates
            Pulsates
            Escalates
            Rotating
            Purpose_of_Item
            How_to_Use_Item
            How_to_Clean_Item
            Special_Features
            Lubricant_Water_Based
            Lubricant_Oil
            Lubricant_Silicone
            Long_Descr
            Pic1
            Pic2
            Pic3
            Pic4
            Pic5
            Pkg_Height_In
            Pkg_Length_In
            Pkg_Width_In
            Manufacturer_SKU
            */
            ?>