Shipping, Made Easy
EasyPost is the simple shipping API for adding shipping to your apps or sites. We provide seamless access to FedEx, FedEx International, USPS, USPS International, UPS, and UPS International, and more coming weekly.
The EasyPost API provides address verification, rates, purchasing, tracking, insurance, batch label generation, and more!
Need Help Integrating?
A number of guides have been written about how to integrate EasyPost. Here are
some of them.
Lacking development resources to integrate EasyPost? Thanks to our recent partnership with oDesk you can easily find a developer to integrate Easypost.
Find a developer here.
Here's how to get started:
Sign up for an EasyPost account.
Load your carrier accounts.
If you already have UPS and FedEx accounts you can load them there, or for USPS all you need to do is add your credit card
We pass through all your negotiated rates.
Step by Step:
Install the library of your choice.
We have PHP, Python, Ruby, Java, Node, and an updated .Net coming shortly.
Grab your Test API key.
If you're logged in your Test API key will be pre-loaded in any code sample on the site. Like
Grab two addresses for a sample shipment. Then, create
These are persisted, so if you're using your from_address repeatedly you can use the same object.
Figure out how you want to ship it. Box? Letter? We have a list of Predefined Parcels
You'll always need to define weight. If using a Predefined Parcel like Parcel or LargeParcel, you'll need to provide length, width, and height as well (make sure length is the longest!). If you're using something like SmallFlatRateBox, those dimensions are already defined so you don't need to provide dimensions. Also, all dimensions are in inches and weight is in ounces.
Now that you have two Addresses (To and From) and a Parcel, you're ready to create a
(Note: for International Parcels you'll need to provide
Creating a Shipment returns Rates. See which Rate you're interested in. (Unless you've loaded FedEx and UPS accounts you won't be seeing those rates, just USPS.)
Since you're using your Test API key you can go ahead and
buy your label
(scroll down a bit for Buy instructions.)
Congrats! You've created your first EasyPost label!
Exta Credit: create a Shipment to yourself and from EasyPost, 164 Townsend, #1, San Francisco, CA 94118 that weighs 13 oz and we'll mail you an EasyPost shirt. (Or stop by sometime and grab one!)
How does EasyPost compare to others?
Most other shipping APIs are painful to integrate and only provide access to a single carrier. You will need to write and maintain custom clients and learn a lot of custom rules for shipping with each shipping company. On top of this, any updates from of a single carriers could break your site and require an update by your developer. EasyPost is the exact opposite of this.
EasyPost provides you with easy to use client libraries in Ruby, Java, PHP, Python, and Node that significantly reduce integration time and connect you to all of the major shipping companies. We maintain the connections with each shipping company so you don't need to update your site if they change their API. EasyPost even handles a majority of the custom logic associated with each carrier - you just tell us about what you want to ship and we will choose the correct options for your shipment.
How long will it take to integrate the EasyPost API?
It's been our experience that the EasyPost API takes about 1/10th the time to integrate as a
carrier API. If you plan on using all the carriers, it's an even greater time savings.
What happens to my negotiated rates?
Your rates are all passed through the EasyPost API! We don't negotiate rates, we just make it easier for you to access those carriers.
Do you offer volume rates?
Yes! EasyPost offers rates for volume shippers as low as less than a cent a package and revenue sharing. Just email us at
to discuss what rates are right for you.
Do you offer insurance?
Yes, we offer insurance on all packages through all carriers. Click
for more information.
Any other questions?