Skip to main content

EasyPost Python Client Library

Build Status PyPI version

EasyPost is the simple shipping API. You can sign up for an account at https://easypost.com.

Requirements

Looking for a client library for another language? Check out https://www.easypost.com/docs/libraries.

Installation

You can install easypost via pip with:

pip install easypost

Alternatively, you can clone the EasyPost python client repository:

git clone https://github.com/EasyPost/easypost-python

Install:

python setup.py install

Import the EasyPost client:

import easypost

Example

import easypost
easypost.api_key = '<YOUR API KEY FROM https://www.easypost.com/account/api-keys>'

# create and verify addresses
to_address = easypost.Address.create(
    verify=["delivery"],
    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(
    verify=["delivery"],
    name = "EasyPost",
    street1 = "118 2nd Street",
    street2 = "4th Floor",
    city = "San Francisco",
    state = "CA",
    zip = "94105",
    country = "US",
    phone = "415-456-7890"
)

# create parcel
try:
    parcel = easypost.Parcel.create(
        predefined_package = "Parcel",
        weight = 21.2
    )
except easypost.Error as e:
    print(str(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.buy(rate = shipment.rates[0])
# alternatively: shipment.buy(rate = shipment.lowest_rate())

print(shipment.tracking_code)
print(shipment.postage_label.label_url)

# Insure the shipment for the value
shipment.insure(amount=100)

print(shipment.insurance)

Documentation

Up-to-date documentation is available at: https://www.easypost.com/docs

Client Library Development

Releasing

  1. Add new features to CHANGELOG.md
  2. Bump the version in easypost/version.py and setup.py
  3. Create a git tag
  4. Push to PyPI with python setup.py sdist upload

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)
  • Run the tests with py.test (./venv/bin/py.test -vs tests)

Download files

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

Source Distribution

easypost-4.0.2.tar.gz (13.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

easypost-4.0.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

easypost-4.0.2-py2-none-any.whl (9.8 kB view details)

Uploaded Python 2

File details

Details for the file easypost-4.0.2.tar.gz.

File metadata

  • Download URL: easypost-4.0.2.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for easypost-4.0.2.tar.gz
Algorithm Hash digest
SHA256 4c15fe8ce3f71142c8db8c8c13470664b46f8d3a8d60bf2ed7e4362555353725
MD5 4bce3ca17820683414b6e2a29dd3f6ee
BLAKE2b-256 558b4efa8e6573f6835ac260374ecd6ed61c324c4c01f27459c8ea84696ce84c

See more details on using hashes here.

File details

Details for the file easypost-4.0.2-py3-none-any.whl.

File metadata

  • Download URL: easypost-4.0.2-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for easypost-4.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ca64f0ee25a6a2129a0bee9883f641384721850aa0b3b250ad5b469e98621e0f
MD5 af17c9262e656a42f6d9705a1d0af38f
BLAKE2b-256 02d3985f1d9807c8d71742794e5bdab0c753707553aa5af25af66173e328dda3

See more details on using hashes here.

File details

Details for the file easypost-4.0.2-py2-none-any.whl.

File metadata

  • Download URL: easypost-4.0.2-py2-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for easypost-4.0.2-py2-none-any.whl
Algorithm Hash digest
SHA256 b4c92884134ae48df3ed02dee31296f8ea4bf27c9ae9d8ba14facee72a56aab6
MD5 c96b03509706c3a88e4a5dbbdbd30c9e
BLAKE2b-256 468a47b46d2650e949f9c73c114e9df214d91d13bbc355fa99ffd86763550ac8

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.0.2

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page