Skip to main content

EasyPost Shipping API Client Library for Python

Project description

EasyPost Python Client Library

CI PyPI version

EasyPost is the simple shipping API. You can sign up for an account at


  • Python 2.7 or 3.3+ (or corresponding PyPy versions). Note that we only test on Python 2.7 and 3.5+; we strongly recommend against using 3.3.x or 3.4.x as they are no longer supported by many libraries.
  • requests >= v2.4.3 (if not on Google App Engine) (will be installed automatically)
  • six (will be installed automatically)

Looking for a client library for another language? Check out


You can install easypost via pip with:

pip install easypost

Alternatively, you can clone the EasyPost python client repository:

git clone


python install

Import the EasyPost client:

import easypost


import easypost
easypost.api_key = '<YOUR API KEY FROM>'

# create and verify addresses
to_address = easypost.Address.create(
    name = "Dr. Steve Brule",
    street1 = "179 N Harbor Dr",
    street2 = "",
    city = "Redondo Beach",
    state = "CA",
    zip = "90277",
    country = "US",
    phone = "310-808-5243"
from_address = easypost.Address.create(
    name = "EasyPost",
    street1 = "118 2nd Street",
    street2 = "4th Floor",
    city = "San Francisco",
    state = "CA",
    zip = "94105",
    country = "US",
    phone = "415-456-7890"

# create parcel
    parcel = easypost.Parcel.create(
        predefined_package = "Parcel",
        weight = 21.2
except easypost.Error as e:
    if e.param is not None:
        print('Specifically an invalid param: %r' % e.param)

parcel = easypost.Parcel.create(
    length = 10.2,
    width = 7.8,
    height = 4.3,
    weight = 21.2

# create customs_info form for intl shipping
customs_item = easypost.CustomsItem.create(
    description = "EasyPost t-shirts",
    hs_tariff_number = 123456,
    origin_country = "US",
    quantity = 2,
    value = 96.27,
    weight = 21.1
customs_info = easypost.CustomsInfo.create(
    customs_certify = 1,
    customs_signer = "Hector Hammerfall",
    contents_type = "gift",
    contents_explanation = "",
    eel_pfc = "NOEEI 30.37(a)",
    non_delivery_option = "return",
    restriction_type = "none",
    restriction_comments = "",
    customs_items = [customs_item]

# create shipment
shipment = easypost.Shipment.create(
    to_address = to_address,
    from_address = from_address,
    parcel = parcel,
    customs_info = customs_info

# buy postage label with one of the rate objects = shipment.rates[0])
# alternatively: = shipment.lowest_rate())


# Insure the shipment for the value



Up-to-date documentation is available at:

Client Library Development


  1. Add new features to
  2. Bump the version in easypost/
  3. Bump the version in
  4. Create and push a signed git tag
  5. Create a Release in Github based on the tag, with a human-readable summary of changes
  6. Build sdist and wheel: rm -rf build/ dist/ ./*.egg-info; python3 sdist bdist_wheel
  7. Push to PyPI with twine upload dist/*

Running Tests

To run tests:

  • Create a virtualenv for your version of Python (e.g., python2.7 -m virtualenv venv)
  • Install dependencies in that virtualenv (./venv/bin/pip install requests six)
  • Install test dependencies (./venv/bin/pip install -r requirements-tests.txt)
  • Export $TEST_API_KEY and $PROD_API_KEY appropriately (these are set automatically for CI)
  • Run the tests with py.test (./venv/bin/py.test -vs tests)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easypost-6.0.0.tar.gz (14.8 kB view hashes)

Uploaded source

Built Distributions

easypost-6.0.0-py3-none-any.whl (10.2 kB view hashes)

Uploaded py3

easypost-6.0.0-py2-none-any.whl (9.4 kB view hashes)

Uploaded py2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page