Parselv1.0.0
EShip

eShip Compatibility

Overview

Parsel offers compatible API layers that mirror the API surface of popular shipping platforms. If your WMS or TMS already integrates with one of these platforms, you can switch to Parsel without rewriting your integration — just change the base URL and use your Parsel API token.

This page covers the eShip compatible API. Additional compatibility layers will be added over time.

How it works

If your WMS or TMS already integrates with eShip, you can switch to Parsel by changing the base URL and API token. No code changes needed.

eShip endpointParsel equivalent
https://api.myeship.co/rest/quotationhttps://api.parsel.app/compatible/eship/rest/quotation
https://api.myeship.co/rest/shipmenthttps://api.parsel.app/compatible/eship/rest/shipment
https://api.myeship.co/rest/shipmentshttps://api.parsel.app/compatible/eship/rest/shipments
https://api.myeship.co/rest/trackhttps://api.parsel.app/compatible/eship/rest/track

Authentication

Use the same Authorization: Bearer <token> header, but with your Parsel API token instead of your eShip API key.

Authorization: Bearer YOUR_PARSEL_API_TOKEN

Quick Start

Step 1: Get rates (quotation)

curl -X POST https://api.parsel.app/compatible/eship/rest/quotation \
  -H "Authorization: Bearer YOUR_PARSEL_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "address_from": {
      "name": "Warehouse",
      "street1": "123 Main St",
      "city": "Los Angeles",
      "state": "CA",
      "zip": "90001",
      "country": "US",
      "phone": "5551234567"
    },
    "address_to": {
      "name": "Customer",
      "street1": "456 Oak Ave",
      "city": "New York",
      "state": "NY",
      "zip": "10001",
      "country": "US",
      "phone": "5559876543"
    },
    "parcels": [
      {
        "length": 10,
        "width": 8,
        "height": 5,
        "weight": 2,
        "mass_unit": "lb",
        "distance_unit": "in"
      }
    ]
  }'

Response:

{
  "object_id": "shipment-uuid",
  "status": "SUCCESS",
  "rates": [
    {
      "rate_id": "rate-uuid",
      "provider": "UPS",
      "amount": 8.50,
      "currency": "USD",
      "days": 3,
      "servicelevel": {
        "name": "Ground",
        "token": "ground"
      },
      "tags": []
    }
  ],
  "address_from": { "..." : "..." },
  "address_to": { "..." : "..." },
  "parcels": [ { "..." : "..." } ]
}

Step 2: Buy a label (shipment)

Use the rate_id from the quotation response to purchase a shipping label.

curl -X POST https://api.parsel.app/compatible/eship/rest/shipment \
  -H "Authorization: Bearer YOUR_PARSEL_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "rate_id": "rate-uuid-from-quotation",
    "label_format": "PDF"
  }'

Response:

{
  "object_id": "shipment-uuid",
  "status": "SUCCESS",
  "label_url": "https://labels.parsel.app/label.pdf",
  "tracking_number": "1Z999AA10123456784",
  "commercial_invoice": false
}

Step 3: Track a shipment

curl -X POST https://api.parsel.app/compatible/eship/rest/track \
  -H "Authorization: Bearer YOUR_PARSEL_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tracking_number": "1Z999AA10123456784"
  }'

Response:

{
  "object_id": "1Z999AA10123456784",
  "status": "TRANSIT",
  "substatus": "in_transit",
  "tracking_number": "1Z999AA10123456784",
  "events": [
    {
      "status": "TRANSIT",
      "substatus": "in_transit",
      "status_details": "Package in transit to destination",
      "timestamp": "2025-03-15T14:30:00Z",
      "location": "Memphis, TN, US"
    }
  ]
}

Status Mapping

Parsel maps its internal shipping statuses to eShip-compatible statuses:

Parsel StatuseShip StatuseShip Substatus
PRE_TRANSITUNKNOWNlabel_created
IN_TRANSITTRANSITin_transit
OUT_FOR_DELIVERYTRANSITout_for_delivery
DELIVEREDDELIVEREDdelivered
RETURN_TO_SENDERRETURNEDreturned
ERRORFAILUREdelivery_issue

Migration Guide

To switch from eShip to Parsel:

  1. Get a Parsel API token from your Parsel dashboard
  2. Change the base URL from https://api.myeship.co to https://api.parsel.app/compatible/eship
  3. Replace the API key in the Authorization: Bearer header with your Parsel token
  4. No code changes needed - request/response formats are compatible

Limitations

  • Only the first parcel in the parcels array is processed (multi-parcel support coming soon)
  • Batch shipment endpoints are not yet supported
  • Pickup scheduling is not yet supported
  • Address validation (/rest/validate) is available on the native Parsel API at POST /addresses/verify

On this page